From 353560e59a666bd5e437ecf3ddc33460a81a7984 Mon Sep 17 00:00:00 2001 From: Petr Date: Thu, 25 Apr 2024 21:06:07 +0200 Subject: [PATCH] Generate new Equals overload to avoid boxing for structural comparison (#16857) * Generate new Equals overload to avoid boxing for structural comparison * More benchmarks --------- Co-authored-by: Kevin Ransom (msft) --- docs/optimizations-equality.md | 44 +- .../.FSharp.Compiler.Service/8.0.400.md | 4 + eng/Build.ps1 | 2 + .../Checking/AugmentWithHashCompare.fs | 115 ++- .../Checking/AugmentWithHashCompare.fsi | 9 +- src/Compiler/Checking/CheckDeclarations.fs | 16 +- src/Compiler/Checking/MethodOverrides.fs | 2 +- src/Compiler/Checking/NicePrint.fs | 1 + src/Compiler/Checking/PostInferenceChecks.fs | 2 +- src/Compiler/CodeGen/IlxGen.fs | 10 +- src/Compiler/Optimize/Optimizer.fs | 33 +- src/Compiler/TypedTree/TypedTree.fs | 11 +- src/Compiler/TypedTree/TypedTree.fsi | 16 +- src/Compiler/TypedTree/TypedTreeOps.fs | 2 +- src/Compiler/TypedTree/TypedTreePickle.fs | 4 +- ....fs.RealInternalSignatureOff.il.net472.bsl | 139 +-- ...fs.RealInternalSignatureOff.il.netcore.bsl | 133 +-- ...a.fs.RealInternalSignatureOn.il.net472.bsl | 79 +- ....fs.RealInternalSignatureOn.il.netcore.bsl | 79 +- ...nternalSignatureOff.fs.il.net472.debug.bsl | 83 +- ...ernalSignatureOff.fs.il.net472.release.bsl | 83 +- ...ternalSignatureOff.fs.il.netcore.debug.bsl | 83 +- ...rnalSignatureOff.fs.il.netcore.release.bsl | 83 +- ...InternalSignatureOn.fs.il.net472.debug.bsl | 35 +- ...ternalSignatureOn.fs.il.net472.release.bsl | 35 +- ...nternalSignatureOn.fs.il.netcore.debug.bsl | 35 +- ...ernalSignatureOn.fs.il.netcore.release.bsl | 35 +- .../Compare05.fsx.il.net472.bsl | 138 +-- .../Compare05.fsx.il.netcore.bsl | 132 +-- .../Compare06.fsx.il.net472.bsl | 114 ++- .../Compare06.fsx.il.netcore.bsl | 108 +- .../Compare07.fsx.il.net472.bsl | 153 +-- .../Compare07.fsx.il.netcore.bsl | 147 +-- .../Compare10.fsx.il.net472.bsl | 334 ++++--- .../Compare10.fsx.il.netcore.bsl | 328 ++++--- .../GenericComparison/CrossAssembly.fs | 93 ++ .../Equals04.fsx.il.net472.bsl | 140 +-- .../Equals04.fsx.il.netcore.bsl | 134 +-- .../Equals05.fsx.il.net472.bsl | 116 ++- .../Equals05.fsx.il.netcore.bsl | 110 ++- .../Equals06.fsx.il.net472.bsl | 155 +-- .../Equals06.fsx.il.netcore.bsl | 149 +-- .../Equals09.fsx.il.net472.bsl | 336 ++++--- .../Equals09.fsx.il.netcore.bsl | 330 ++++--- .../EmittedIL/GenericComparison/Equals10.fsx | 8 + .../Equals10.fsx.il.net472.bsl | 498 ++++++++++ .../Equals10.fsx.il.netcore.bsl | 498 ++++++++++ .../EmittedIL/GenericComparison/Equals11.fsx | 6 + .../Equals11.fsx.il.net472.bsl | 586 +++++++++++ .../Equals11.fsx.il.netcore.bsl | 586 +++++++++++ .../EmittedIL/GenericComparison/Equals12.fsx | 6 + .../Equals12.fsx.il.net472.bsl | 624 ++++++++++++ .../Equals12.fsx.il.netcore.bsl | 532 ++++++++++ .../EmittedIL/GenericComparison/Equals13.fsx | 8 + .../Equals13.fsx.il.net472.bsl | 524 ++++++++++ .../Equals13.fsx.il.netcore.bsl | 524 ++++++++++ .../EmittedIL/GenericComparison/Equals14.fsx | 6 + .../Equals14.fsx.il.net472.bsl | 612 ++++++++++++ .../Equals14.fsx.il.netcore.bsl | 612 ++++++++++++ .../EmittedIL/GenericComparison/Equals15.fsx | 6 + .../Equals15.fsx.il.net472.bsl | 650 ++++++++++++ .../Equals15.fsx.il.netcore.bsl | 558 +++++++++++ .../EmittedIL/GenericComparison/Equals16.fsx | 9 + .../Equals16.fsx.il.net472.bsl | 498 ++++++++++ .../Equals16.fsx.il.netcore.bsl | 498 ++++++++++ .../EmittedIL/GenericComparison/Equals17.fsx | 7 + .../Equals17.fsx.il.net472.bsl | 586 +++++++++++ .../Equals17.fsx.il.netcore.bsl | 586 +++++++++++ .../EmittedIL/GenericComparison/Equals18.fsx | 7 + .../Equals18.fsx.il.net472.bsl | 624 ++++++++++++ .../Equals18.fsx.il.netcore.bsl | 532 ++++++++++ .../EmittedIL/GenericComparison/Equals19.fsx | 8 + .../Equals19.fsx.il.net472.bsl | 313 ++++++ .../Equals19.fsx.il.netcore.bsl | 313 ++++++ .../EmittedIL/GenericComparison/Equals20.fsx | 7 + .../Equals20.fsx.il.net472.bsl | 397 ++++++++ .../Equals20.fsx.il.netcore.bsl | 397 ++++++++ .../EmittedIL/GenericComparison/Equals21.fsx | 7 + .../Equals21.fsx.il.net472.bsl | 432 ++++++++ .../Equals21.fsx.il.netcore.bsl | 340 +++++++ .../GenericComparison/GenericComparison.fs | 72 ++ .../Hash05.fsx.il.net472.bsl | 138 +-- .../Hash05.fsx.il.netcore.bsl | 132 +-- .../Hash06.fsx.il.net472.bsl | 138 +-- .../Hash06.fsx.il.netcore.bsl | 132 +-- .../Hash08.fsx.il.net472.bsl | 114 ++- .../Hash08.fsx.il.netcore.bsl | 108 +- .../Hash09.fsx.il.net472.bsl | 153 +-- .../Hash09.fsx.il.netcore.bsl | 147 +-- .../Hash12.fsx.il.net472.bsl | 334 ++++--- .../Hash12.fsx.il.netcore.bsl | 328 ++++--- ...nternalSignatureOff.fs.il.net472.debug.bsl | 201 ++-- ...ernalSignatureOff.fs.il.net472.release.bsl | 201 ++-- ...ternalSignatureOff.fs.il.netcore.debug.bsl | 201 ++-- ...rnalSignatureOff.fs.il.netcore.release.bsl | 201 ++-- ...InternalSignatureOn.fs.il.net472.debug.bsl | 201 ++-- ...ternalSignatureOn.fs.il.net472.release.bsl | 201 ++-- ...nternalSignatureOn.fs.il.netcore.debug.bsl | 201 ++-- ...ernalSignatureOn.fs.il.netcore.release.bsl | 201 ++-- .../Inlining/StructUnion01.fs.il.net472.bsl | 88 +- .../Inlining/StructUnion01.fs.il.netcore.bsl | 88 +- .../EmittedIL/Misc/AnonRecd.fs.il.net472.bsl | 131 +-- .../EmittedIL/Misc/AnonRecd.fs.il.netcore.bsl | 125 +-- .../EqualsOnUnions01.fs.il.net472.debug.bsl | 252 +++-- .../EqualsOnUnions01.fs.il.net472.release.bsl | 242 +++-- .../EqualsOnUnions01.fs.il.netcore.debug.bsl | 246 ++--- ...EqualsOnUnions01.fs.il.netcore.release.bsl | 236 ++--- ....fs.RealInternalSignatureOff.il.net472.bsl | 65 +- ...fs.RealInternalSignatureOff.il.netcore.bsl | 107 +- ...1.fs.RealInternalSignatureOn.il.net472.bsl | 65 +- ....fs.RealInternalSignatureOn.il.netcore.bsl | 65 +- .../EmittedIL/Misc/Structs01.fs.il.debug.bsl | 88 +- .../Misc/Structs01.fs.il.release.bsl | 72 +- .../EmittedIL/Misc/Structs02.fs.il.debug.bsl | 91 +- .../Misc/Structs02.fs.il.release.bsl | 75 +- .../Structs02_asNetStandard20.fs.il.debug.bsl | 94 +- ...tructs02_asNetStandard20.fs.il.release.bsl | 78 +- ...1.fs.RealInternalSignatureOff.il.debug.bsl | 67 +- ...fs.RealInternalSignatureOff.il.release.bsl | 75 +- ...01.fs.RealInternalSignatureOn.il.debug.bsl | 67 +- ....fs.RealInternalSignatureOn.il.release.bsl | 51 +- ...alInternalSignatureOff.il.net472.debug.bsl | 383 +++----- ...InternalSignatureOff.il.net472.release.bsl | 383 +++----- ...lInternalSignatureOff.il.netcore.debug.bsl | 383 +++----- ...nternalSignatureOff.il.netcore.release.bsl | 383 +++----- ...ealInternalSignatureOn.il.net472.debug.bsl | 2 +- ...lInternalSignatureOn.il.net472.release.bsl | 2 +- ...alInternalSignatureOn.il.netcore.debug.bsl | 2 +- ...InternalSignatureOn.il.netcore.release.bsl | 2 +- ...alInternalSignatureOff.il.net472.debug.bsl | 290 +++--- ...lInternalSignatureOff.il.netcore.debug.bsl | 290 +++--- ...ealInternalSignatureOn.il.net472.debug.bsl | 290 +++--- ...alInternalSignatureOn.il.netcore.debug.bsl | 290 +++--- ...alInternalSignatureOff.il.net472.debug.bsl | 576 ++++++----- ...InternalSignatureOff.il.net472.release.bsl | 540 +++++----- ...lInternalSignatureOff.il.netcore.debug.bsl | 570 ++++++----- ...nternalSignatureOff.il.netcore.release.bsl | 534 +++++----- ...ealInternalSignatureOn.il.net472.debug.bsl | 436 +++++---- ...lInternalSignatureOn.il.net472.release.bsl | 396 +++++--- ...alInternalSignatureOn.il.netcore.debug.bsl | 436 +++++---- ...InternalSignatureOn.il.netcore.release.bsl | 396 +++++--- ...alInternalSignatureOff.il.net472.debug.bsl | 570 ++++++----- ...InternalSignatureOff.il.net472.release.bsl | 534 +++++----- ...lInternalSignatureOff.il.netcore.debug.bsl | 564 ++++++----- ...nternalSignatureOff.il.netcore.release.bsl | 528 +++++----- ...ealInternalSignatureOn.il.net472.debug.bsl | 436 +++++---- ...lInternalSignatureOn.il.net472.release.bsl | 396 +++++--- ...alInternalSignatureOn.il.netcore.debug.bsl | 436 +++++---- ...InternalSignatureOn.il.netcore.release.bsl | 396 +++++--- ...alInternalSignatureOff.il.net472.debug.bsl | 855 ++++++++-------- ...InternalSignatureOff.il.net472.release.bsl | 801 ++++++++------- ...lInternalSignatureOff.il.netcore.debug.bsl | 849 ++++++++-------- ...nternalSignatureOff.il.netcore.release.bsl | 795 ++++++++------- ...ealInternalSignatureOn.il.net472.debug.bsl | 654 ++++++++----- ...lInternalSignatureOn.il.net472.release.bsl | 594 ++++++----- ...alInternalSignatureOn.il.netcore.debug.bsl | 654 ++++++++----- ...InternalSignatureOn.il.netcore.release.bsl | 594 ++++++----- ...alInternalSignatureOff.il.net472.debug.bsl | 846 ++++++++-------- ...InternalSignatureOff.il.net472.release.bsl | 792 ++++++++------- ...lInternalSignatureOff.il.netcore.debug.bsl | 840 ++++++++-------- ...nternalSignatureOff.il.netcore.release.bsl | 786 ++++++++------- ...ealInternalSignatureOn.il.net472.debug.bsl | 654 ++++++++----- ...lInternalSignatureOn.il.net472.release.bsl | 594 ++++++----- ...alInternalSignatureOn.il.netcore.debug.bsl | 654 ++++++++----- ...InternalSignatureOn.il.netcore.release.bsl | 594 ++++++----- ...alInternalSignatureOff.il.net472.debug.bsl | 93 +- ...InternalSignatureOff.il.net472.release.bsl | 75 +- ...lInternalSignatureOff.il.netcore.debug.bsl | 93 +- ...nternalSignatureOff.il.netcore.release.bsl | 75 +- ...ealInternalSignatureOn.il.net472.debug.bsl | 69 +- ...lInternalSignatureOn.il.net472.release.bsl | 51 +- ...alInternalSignatureOn.il.netcore.debug.bsl | 69 +- ...InternalSignatureOn.il.netcore.release.bsl | 51 +- .../SteppingMatch06.fs.il.net472.debug.bsl | 128 +-- .../SteppingMatch06.fs.il.net472.release.bsl | 128 +-- .../SteppingMatch06.fs.il.netcore.debug.bsl | 122 +-- .../SteppingMatch06.fs.il.netcore.release.bsl | 922 +++++++++--------- .../SteppingMatch07.fs.il.net472.debug.bsl | 128 +-- .../SteppingMatch07.fs.il.net472.release.bsl | 128 +-- .../SteppingMatch07.fs.il.netcore.debug.bsl | 122 +-- .../SteppingMatch07.fs.il.netcore.release.bsl | 922 +++++++++--------- .../FloatsAndDoubles_1.fs.il.debug.bsl | 258 +++-- .../FloatsAndDoubles_1.fs.il.release.bsl | 218 ++--- .../FloatsAndDoubles_2.fs.il.debug.bsl | 138 ++- .../FloatsAndDoubles_2.fs.il.release.bsl | 98 +- .../TestFunction16.fs.il.net472.debug.bsl | 179 ++-- .../TestFunction16.fs.il.net472.release.bsl | 153 +-- .../TestFunction16.fs.il.netcore.debug.bsl | 173 ++-- .../TestFunction16.fs.il.netcore.release.bsl | 147 +-- .../TestFunction17.fs.il.net472.debug.bsl | 165 ++-- .../TestFunction17.fs.il.net472.release.bsl | 143 +-- .../TestFunction17.fs.il.netcore.debug.bsl | 159 +-- .../TestFunction17.fs.il.netcore.release.bsl | 137 +-- .../TestFunction21.fs.il.net472.debug.bsl | 188 ++-- .../TestFunction21.fs.il.net472.release.bsl | 162 +-- .../TestFunction21.fs.il.netcore.debug.bsl | 182 ++-- .../TestFunction21.fs.il.netcore.release.bsl | 156 +-- .../TestFunction24.fs.il.net472.debug.bsl | 171 ++-- .../TestFunction24.fs.il.net472.release.bsl | 149 +-- .../TestFunction24.fs.il.netcore.debug.bsl | 165 ++-- .../TestFunction24.fs.il.netcore.release.bsl | 143 +-- .../FSharp.Compiler.ComponentTests.fsproj | 2 + ...ervice.SurfaceArea.netstandard20.debug.bsl | 100 ++ ...vice.SurfaceArea.netstandard20.release.bsl | 100 ++ .../SurfaceArea.fs | 7 +- ...p.Core.SurfaceArea.netstandard20.debug.bsl | 12 + ...Core.SurfaceArea.netstandard20.release.bsl | 14 +- ...p.Core.SurfaceArea.netstandard21.debug.bsl | 12 + ...Core.SurfaceArea.netstandard21.release.bsl | 12 + .../MicroPerf/Equality/ExactEquals.fs | 132 +++ .../MicroPerf/MicroPerf.fsproj | 1 + .../EmittedIL/ReferenceAssemblyTests.fs | 22 + 212 files changed, 33691 insertions(+), 17650 deletions(-) create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/CrossAssembly.fs create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals10.fsx create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals10.fsx.il.net472.bsl create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals10.fsx.il.netcore.bsl create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals11.fsx create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals11.fsx.il.net472.bsl create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals11.fsx.il.netcore.bsl create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals12.fsx create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals12.fsx.il.net472.bsl create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals12.fsx.il.netcore.bsl create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals13.fsx create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals13.fsx.il.net472.bsl create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals13.fsx.il.netcore.bsl create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals14.fsx create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals14.fsx.il.net472.bsl create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals14.fsx.il.netcore.bsl create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals15.fsx create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals15.fsx.il.net472.bsl create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals15.fsx.il.netcore.bsl create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals16.fsx create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals16.fsx.il.net472.bsl create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals16.fsx.il.netcore.bsl create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals17.fsx create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals17.fsx.il.net472.bsl create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals17.fsx.il.netcore.bsl create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals18.fsx create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals18.fsx.il.net472.bsl create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals18.fsx.il.netcore.bsl create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals19.fsx create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals19.fsx.il.net472.bsl create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals19.fsx.il.netcore.bsl create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals20.fsx create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals20.fsx.il.net472.bsl create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals20.fsx.il.netcore.bsl create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals21.fsx create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals21.fsx.il.net472.bsl create mode 100644 tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals21.fsx.il.netcore.bsl create mode 100644 tests/benchmarks/CompiledCodeBenchmarks/MicroPerf/Equality/ExactEquals.fs diff --git a/docs/optimizations-equality.md b/docs/optimizations-equality.md index c8ac637fecc..ec8ee759eca 100644 --- a/docs/optimizations-equality.md +++ b/docs/optimizations-equality.md @@ -209,51 +209,11 @@ let f (x: float32) (y: float32) = (x = y) ### F# struct type (records, tuples - with compiler-generated structural equality) -* Semantics: User expects field-by-field structural equality with no boxing +* Semantics: User expects field-by-field structural equality * Perf expected: no boxing * Compilation today: `GenericEqualityIntrinsic` -* Perf today: always boxes (Problem3 ❌) +* Perf today: good ✅ * [sharplab](https://sharplab.io/#v2:DYLgZgzgNALiCWwA+BYAUAbQDwGUYCcBXAYxgD4BddGATwAcBTAAhwHsBbBvI0gCgDcQTeADsYUJoSGiYASiYBedExVNO7AEYN8TAPoA6AGqKm/ZavVadBgKonC6dMAYwmYJrwAeQtp24k5JhoTLxMaWXQgA) -* Note: the optimization path is a bit strange here, see the reductions below - -
- -Details - -```fsharp -(x = y) - ---inline--> - -GenericEquality x y - ---inline--> - -GenericEqualityFast x y - ---inline--> - -GenericEqualityIntrinsic x y - ---devirtualize--> - -x.Equals(box y, LanguagePrimitives.GenericEqualityComparer); -``` - -The struct type has these generated methods: -```csharp - override bool Equals(object y) - override bool Equals(SomeStruct obj) - override bool Equals(object obj, IEqualityComparer comp) //with EqualsVal -``` - -These call each other in sequence, boxing then unboxing then boxing. We do NOT generate this method, we probably should: - -```csharp - override bool Equals(SomeStruct obj, IEqualityComparer comp) //with EqualsValUnboxed -``` - -If we did, the devirtualizing optimization should reduce to this directly, which would result in no boxing.
diff --git a/docs/release-notes/.FSharp.Compiler.Service/8.0.400.md b/docs/release-notes/.FSharp.Compiler.Service/8.0.400.md index 16ead61175e..674a2ec7d47 100644 --- a/docs/release-notes/.FSharp.Compiler.Service/8.0.400.md +++ b/docs/release-notes/.FSharp.Compiler.Service/8.0.400.md @@ -9,3 +9,7 @@ * Fix bug in optimization of for-loops over integral ranges with steps and units of measure. ([Issue #17025](https://github.com/dotnet/fsharp/issues/17025), [PR #17040](https://github.com/dotnet/fsharp/pull/17040), [PR #17048](https://github.com/dotnet/fsharp/pull/17048)) * Fix calling an overridden virtual static method via the interface ([PR #17013](https://github.com/dotnet/fsharp/pull/17013)) * Fix state machines compilation, when big decision trees are involved, by removing code split when resumable code is detected ([PR #17076](https://github.com/dotnet/fsharp/pull/17076)) + +### Added + +* Generate new `Equals` overload to avoid boxing for structural comparison ([PR #16857](https://github.com/dotnet/fsharp/pull/16857)) diff --git a/eng/Build.ps1 b/eng/Build.ps1 index bb449e05665..434751d04e4 100644 --- a/eng/Build.ps1 +++ b/eng/Build.ps1 @@ -214,9 +214,11 @@ function Process-Arguments() { if ($norealsig) { $script:realsig = $False; + $env:FSHARP_REALSIG="false" } else { $script:realsig = $True; + $env:FSHARP_REALSIG="true" } if ($verifypackageshipstatus) { $script:verifypackageshipstatus = $True; diff --git a/src/Compiler/Checking/AugmentWithHashCompare.fs b/src/Compiler/Checking/AugmentWithHashCompare.fs index d3e9fb1d42d..f34c447f257 100644 --- a/src/Compiler/Checking/AugmentWithHashCompare.fs +++ b/src/Compiler/Checking/AugmentWithHashCompare.fs @@ -106,6 +106,9 @@ let mkEqualsTy g ty = let mkEqualsWithComparerTy g ty = mkFunTy g (mkThisTy g ty) (mkFunTy g (mkRefTupledTy g [ g.obj_ty; g.IEqualityComparer_ty ]) g.bool_ty) +let mkEqualsWithComparerTyExact g ty = + mkFunTy g (mkThisTy g ty) (mkFunTy g (mkRefTupledTy g [ ty; g.IEqualityComparer_ty ]) g.bool_ty) + let mkHashTy g ty = mkFunTy g (mkThisTy g ty) (mkFunTy g g.unit_ty g.int_ty) @@ -361,7 +364,7 @@ let mkRecdEquality g tcref (tycon: Tycon) = thisv, thatv, expr /// Build the equality implementation for a record type when parameterized by a comparer -let mkRecdEqualityWithComparer g tcref (tycon: Tycon) (_thisv, thise) thatobje (thatv, thate) compe = +let mkRecdEqualityWithComparer g tcref (tycon: Tycon) thise thatobje (thatv, thate) compe isexact = let m = tycon.Range let fields = tycon.AllInstanceFieldsAsList let tinst, ty = mkMinimalTy g tcref @@ -382,14 +385,21 @@ let mkRecdEqualityWithComparer g tcref (tycon: Tycon) (_thisv, thise) thatobje ( let expr = mkEqualsTestConjuncts g m (List.map mkTest fields) let expr = mkBindThatAddr g m ty thataddrv thatv thate expr - // will be optimized away if not necessary - let expr = mkIsInstConditional g m ty thatobje thatv expr (mkFalse g m) + + let expr = + if isexact then + expr + else + mkIsInstConditional g m ty thatobje thatv expr (mkFalse g m) let expr = if tycon.IsStructOrEnumTycon then expr else - mkBindThisNullEquals g m thise thatobje expr + if isexact then + mkBindThatNullEquals g m thise thate expr + else + mkBindThisNullEquals g m thise thatobje expr expr @@ -425,7 +435,7 @@ let mkExnEquality (g: TcGlobals) exnref (exnc: Tycon) = thisv, thatv, expr /// Build the equality implementation for an exception definition when parameterized by a comparer -let mkExnEqualityWithComparer g exnref (exnc: Tycon) (_thisv, thise) thatobje (thatv, thate) compe = +let mkExnEqualityWithComparer g exnref (exnc: Tycon) thise thatobje (thatv, thate) compe isexact = let m = exnc.Range let thataddrv, thataddre = mkThatAddrLocal g m g.exn_ty @@ -453,13 +463,21 @@ let mkExnEqualityWithComparer g exnref (exnc: Tycon) (_thisv, thise) thatobje (t mbuilder.Close(dtree, m, g.bool_ty) let expr = mkBindThatAddr g m g.exn_ty thataddrv thatv thate expr - let expr = mkIsInstConditional g m g.exn_ty thatobje thatv expr (mkFalse g m) + + let expr = + if isexact then + expr + else + mkIsInstConditional g m g.exn_ty thatobje thatv expr (mkFalse g m) let expr = if exnc.IsStructOrEnumTycon then expr else - mkBindThisNullEquals g m thise thatobje expr + if isexact then + mkBindThatNullEquals g m thise thate expr + else + mkBindThisNullEquals g m thise thatobje expr expr @@ -758,7 +776,7 @@ let mkUnionEquality g tcref (tycon: Tycon) = thisv, thatv, expr /// Build the equality implementation for a union type when parameterized by a comparer -let mkUnionEqualityWithComparer g tcref (tycon: Tycon) (_thisv, thise) thatobje (thatv, thate) compe = +let mkUnionEqualityWithComparer g tcref (tycon: Tycon) thise thatobje (thatv, thate) compe isexact = let m = tycon.Range let ucases = tycon.UnionCasesAsList let tinst, ty = mkMinimalTy g tcref @@ -846,13 +864,21 @@ let mkUnionEqualityWithComparer g tcref (tycon: Tycon) (_thisv, thise) thatobje (mkCompGenLet m thattagv (mkUnionCaseTagGetViaExprAddr (thataddre, tcref, tinst, m)) tagsEqTested) let expr = mkBindThatAddr g m ty thataddrv thatv thate expr - let expr = mkIsInstConditional g m ty thatobje thatv expr (mkFalse g m) + + let expr = + if isexact then + expr + else + mkIsInstConditional g m ty thatobje thatv expr (mkFalse g m) let expr = if tycon.IsStructOrEnumTycon then expr else - mkBindThisNullEquals g m thise thatobje expr + if isexact then + mkBindThatNullEquals g m thise thate expr + else + mkBindThisNullEquals g m thise thatobje expr expr @@ -1014,6 +1040,15 @@ let getAugmentationAttribs g (tycon: Tycon) = TryFindFSharpBoolAttribute g g.attrib_CustomComparisonAttribute tycon.Attribs, TryFindFSharpBoolAttribute g g.attrib_StructuralComparisonAttribute tycon.Attribs +[] +type EqualityWithComparerAugmentation = + { + GetHashCode: Val + GetHashCodeWithComparer: Val + EqualsWithComparer: Val + EqualsExactWithComparer: Val + } + let CheckAugmentationAttribs isImplementation g amap (tycon: Tycon) = let m = tycon.Range let attribs = getAugmentationAttribs g tycon @@ -1333,7 +1368,25 @@ let MakeValsForEqualityWithComparerAugmentation g (tcref: TyconRef) = let withcEqualsVal = mkValSpec g tcref ty vis (Some(mkIStructuralEquatableEqualsSlotSig g)) "Equals" (tps +-> (mkEqualsWithComparerTy g ty)) tupArg false - objGetHashCodeVal, withcGetHashCodeVal, withcEqualsVal + let withcEqualsValExact = + mkValSpec + g + tcref + ty + vis + // This doesn't implement any interface. + None + "Equals" + (tps +-> (mkEqualsWithComparerTyExact g ty)) + tupArg + false + + { + GetHashCode = objGetHashCodeVal + GetHashCodeWithComparer = withcGetHashCodeVal + EqualsWithComparer = withcEqualsVal + EqualsExactWithComparer = withcEqualsValExact + } let MakeBindingsForCompareAugmentation g (tycon: Tycon) = let tcref = mkLocalTyconRef tycon @@ -1419,7 +1472,7 @@ let MakeBindingsForEqualityWithComparerAugmentation (g: TcGlobals) (tycon: Tycon let mkStructuralEquatable hashf equalsf = match tycon.GeneratedHashAndEqualsWithComparerValues with | None -> [] - | Some(objGetHashCodeVal, withcGetHashCodeVal, withcEqualsVal) -> + | Some(objGetHashCodeVal, withcGetHashCodeVal, withcEqualsVal, withcEqualsExactValOption) -> // build the hash rhs let withcGetHashCodeExpr = @@ -1451,12 +1504,33 @@ let MakeBindingsForEqualityWithComparerAugmentation (g: TcGlobals) (tycon: Tycon // build the equals rhs let withcEqualsExpr = - let _tinst, ty = mkMinimalTy g tcref + let tinst, ty = mkMinimalTy g tcref let thisv, thise = mkThisVar g m ty let thatobjv, thatobje = mkCompGenLocal m "obj" g.obj_ty let thatv, thate = mkCompGenLocal m "that" ty let compv, compe = mkCompGenLocal m "comp" g.IEqualityComparer_ty - let equalse = equalsf g tcref tycon (thisv, thise) thatobje (thatv, thate) compe + + // if the new overload is available, use it + // otherwise, generate the whole equals thing + let equalse = + match withcEqualsExactValOption with + | Some withcEqualsExactVal -> + mkIsInstConditional + g + m + ty + thatobje + thatv + (mkApps + g + ((exprForValRef m withcEqualsExactVal, withcEqualsExactVal.Type), + (if isNil tinst then [] else [ tinst ]), + [ thise; mkRefTupled g m [ thate; compe ] [ty; g.IEqualityComparer_ty ] ], + m)) + (mkFalse g m) + | None -> + equalsf g tcref tycon thise thatobje (thatv, thate) compe false + mkMultiLambdas g m tps [ [ thisv ]; [ thatobjv; compv ] ] (equalse, g.bool_ty) let objGetHashCodeExpr = @@ -1481,9 +1555,22 @@ let MakeBindingsForEqualityWithComparerAugmentation (g: TcGlobals) (tycon: Tycon mkLambdas g m tps [ thisv; unitv ] (hashe, g.int_ty) + let withcEqualsExactExpr = + let _tinst, ty = mkMinimalTy g tcref + let thisv, thise = mkThisVar g m ty + let thatv, thate = mkCompGenLocal m "obj" ty + let compv, compe = mkCompGenLocal m "comp" g.IEqualityComparer_ty + + let equalse = equalsf g tcref tycon thise thate (thatv, thate) compe true + + mkMultiLambdas g m tps [ [ thisv ]; [ thatv; compv ] ] (equalse, g.bool_ty) + [ (mkCompGenBind withcGetHashCodeVal.Deref withcGetHashCodeExpr) (mkCompGenBind objGetHashCodeVal.Deref objGetHashCodeExpr) + match withcEqualsExactValOption with + | Some withcEqualsExactVal -> mkCompGenBind withcEqualsExactVal.Deref withcEqualsExactExpr + | None -> () (mkCompGenBind withcEqualsVal.Deref withcEqualsExpr) ] diff --git a/src/Compiler/Checking/AugmentWithHashCompare.fsi b/src/Compiler/Checking/AugmentWithHashCompare.fsi index 5fa185c0460..4a7d74311b1 100644 --- a/src/Compiler/Checking/AugmentWithHashCompare.fsi +++ b/src/Compiler/Checking/AugmentWithHashCompare.fsi @@ -7,6 +7,13 @@ open FSharp.Compiler open FSharp.Compiler.TypedTree open FSharp.Compiler.TcGlobals +[] +type EqualityWithComparerAugmentation = + { GetHashCode: Val + GetHashCodeWithComparer: Val + EqualsWithComparer: Val + EqualsExactWithComparer: Val } + val CheckAugmentationAttribs: bool -> TcGlobals -> Import.ImportMap -> Tycon -> unit val TyconIsCandidateForAugmentationWithCompare: TcGlobals -> Tycon -> bool @@ -21,7 +28,7 @@ val MakeValsForCompareWithComparerAugmentation: TcGlobals -> TyconRef -> Val val MakeValsForEqualsAugmentation: TcGlobals -> TyconRef -> Val * Val -val MakeValsForEqualityWithComparerAugmentation: TcGlobals -> TyconRef -> Val * Val * Val +val MakeValsForEqualityWithComparerAugmentation: TcGlobals -> TyconRef -> EqualityWithComparerAugmentation val MakeBindingsForCompareAugmentation: TcGlobals -> Tycon -> Binding list diff --git a/src/Compiler/Checking/CheckDeclarations.fs b/src/Compiler/Checking/CheckDeclarations.fs index 648f2fd31f4..4ecd8f4824a 100644 --- a/src/Compiler/Checking/CheckDeclarations.fs +++ b/src/Compiler/Checking/CheckDeclarations.fs @@ -817,12 +817,18 @@ module AddAugmentationDeclarations = if hasExplicitIStructuralEquatable then errorR(Error(FSComp.SR.tcImplementsIStructuralEquatableExplicitly(tycon.DisplayName), m)) else - let evspec1, evspec2, evspec3 = AugmentTypeDefinitions.MakeValsForEqualityWithComparerAugmentation g tcref + let augmentation = AugmentTypeDefinitions.MakeValsForEqualityWithComparerAugmentation g tcref PublishInterface cenv env.DisplayEnv tcref m true g.mk_IStructuralEquatable_ty - tcaug.SetHashAndEqualsWith (mkLocalValRef evspec1, mkLocalValRef evspec2, mkLocalValRef evspec3) - PublishValueDefn cenv env ModuleOrMemberBinding evspec1 - PublishValueDefn cenv env ModuleOrMemberBinding evspec2 - PublishValueDefn cenv env ModuleOrMemberBinding evspec3 + tcaug.SetHashAndEqualsWith ( + mkLocalValRef augmentation.GetHashCode, + mkLocalValRef augmentation.GetHashCodeWithComparer, + mkLocalValRef augmentation.EqualsWithComparer, + Some (mkLocalValRef augmentation.EqualsExactWithComparer)) + + PublishValueDefn cenv env ModuleOrMemberBinding augmentation.GetHashCode + PublishValueDefn cenv env ModuleOrMemberBinding augmentation.GetHashCodeWithComparer + PublishValueDefn cenv env ModuleOrMemberBinding augmentation.EqualsWithComparer + PublishValueDefnMaybeInclCompilerGenerated cenv env true ModuleOrMemberBinding augmentation.EqualsExactWithComparer let AddGenericCompareBindings (cenv: cenv) (tycon: Tycon) = if (* AugmentTypeDefinitions.TyconIsCandidateForAugmentationWithCompare cenv.g tycon && *) Option.isSome tycon.GeneratedCompareToValues then diff --git a/src/Compiler/Checking/MethodOverrides.fs b/src/Compiler/Checking/MethodOverrides.fs index 7d41026582a..a426e0b166c 100644 --- a/src/Compiler/Checking/MethodOverrides.fs +++ b/src/Compiler/Checking/MethodOverrides.fs @@ -776,7 +776,7 @@ module DispatchSlotChecking = // Get all the members that are immediately part of this type // Include the auto-generated members - let allImmediateMembers = tycon.MembersOfFSharpTyconSorted @ tycon.AllGeneratedValues + let allImmediateMembers = tycon.MembersOfFSharpTyconSorted @ tycon.AllGeneratedInterfaceImplsAndOverrides // Get all the members we have to implement, organized by each type we explicitly implement let slotImplSets = GetSlotImplSets infoReader denv AccessibleFromSomewhere false allReqdTys diff --git a/src/Compiler/Checking/NicePrint.fs b/src/Compiler/Checking/NicePrint.fs index a09328222c4..cec9d12f6ac 100644 --- a/src/Compiler/Checking/NicePrint.fs +++ b/src/Compiler/Checking/NicePrint.fs @@ -1909,6 +1909,7 @@ module TastDefinitionPrinting = match vrefOpt with | None -> true | Some vref -> + (not vref.IsCompilerGenerated) && (denv.showObsoleteMembers || not (CheckFSharpAttributesForObsolete denv.g vref.Attribs)) && (denv.showHiddenMembers || not (CheckFSharpAttributesForHidden denv.g vref.Attribs)) diff --git a/src/Compiler/Checking/PostInferenceChecks.fs b/src/Compiler/Checking/PostInferenceChecks.fs index 21b1ec0897b..c7090709cca 100644 --- a/src/Compiler/Checking/PostInferenceChecks.fs +++ b/src/Compiler/Checking/PostInferenceChecks.fs @@ -2280,7 +2280,7 @@ let CheckEntityDefn cenv env (tycon: Entity) = else MethInfosEquivByNameAndPartialSig eraseFlag true g cenv.amap m minfo minfo2 (* partial ignores return type *) let immediateMeths = - [ for v in tycon.AllGeneratedValues do yield FSMeth (g, ty, v, None) + [ for v in tycon.AllGeneratedInterfaceImplsAndOverrides do yield FSMeth (g, ty, v, None) yield! GetImmediateIntrinsicMethInfosOfType (None, AccessibleFromSomewhere) g cenv.amap m ty ] let immediateProps = GetImmediateIntrinsicPropInfosOfType (None, AccessibleFromSomewhere) g cenv.amap m ty diff --git a/src/Compiler/CodeGen/IlxGen.fs b/src/Compiler/CodeGen/IlxGen.fs index 5c174ecf9de..9be96f680b7 100644 --- a/src/Compiler/CodeGen/IlxGen.fs +++ b/src/Compiler/CodeGen/IlxGen.fs @@ -2189,7 +2189,7 @@ type AnonTypeGenerationTable() = let vspec1, vspec2 = AugmentTypeDefinitions.MakeValsForEqualsAugmentation g tcref - let evspec1, evspec2, evspec3 = + let augmentation = AugmentTypeDefinitions.MakeValsForEqualityWithComparerAugmentation g tcref let cvspec1, cvspec2 = AugmentTypeDefinitions.MakeValsForCompareAugmentation g tcref @@ -2200,7 +2200,13 @@ type AnonTypeGenerationTable() = tcaug.SetCompare(mkLocalValRef cvspec1, mkLocalValRef cvspec2) tcaug.SetCompareWith(mkLocalValRef cvspec3) tcaug.SetEquals(mkLocalValRef vspec1, mkLocalValRef vspec2) - tcaug.SetHashAndEqualsWith(mkLocalValRef evspec1, mkLocalValRef evspec2, mkLocalValRef evspec3) + + tcaug.SetHashAndEqualsWith( + mkLocalValRef augmentation.GetHashCode, + mkLocalValRef augmentation.GetHashCodeWithComparer, + mkLocalValRef augmentation.EqualsWithComparer, + Some(mkLocalValRef augmentation.EqualsExactWithComparer) + ) // Build the ILTypeDef. We don't rely on the normal record generation process because we want very specific field names diff --git a/src/Compiler/Optimize/Optimizer.fs b/src/Compiler/Optimize/Optimizer.fs index 88a1ba389dc..557f84b5f9e 100644 --- a/src/Compiler/Optimize/Optimizer.fs +++ b/src/Compiler/Optimize/Optimizer.fs @@ -3247,30 +3247,47 @@ and TryDevirtualizeApplication cenv env (f, tyargs, args, m) = | Some (_, vref) -> Some (DevirtualizeApplication cenv env vref ty tyargs args m) | _ -> None - // Optimize/analyze calls to LanguagePrimitives.HashCompare.GenericEqualityWithComparerFast + // Optimize/analyze calls to LanguagePrimitives.HashCompare.GenericEqualityWithComparerIntrinsic | Expr.Val (v, _, _), [ty], _ when CanDevirtualizeApplication cenv v g.generic_equality_withc_inner_vref ty args -> let tcref, tyargs = StripToNominalTyconRef cenv ty match tcref.GeneratedHashAndEqualsWithComparerValues, args with - | Some (_, _, withcEqualsVal), [comp; x; y] -> + | Some (_, _, _, Some withcEqualsExactVal), [comp; x; y] -> + // push the comparer to the end + let args2 = [x; mkRefTupledNoTypes g m [y; comp]] + Some (DevirtualizeApplication cenv env withcEqualsExactVal ty tyargs args2 m) + | Some (_, _, withcEqualsVal, _ ), [comp; x; y] -> // push the comparer to the end and box the argument let args2 = [x; mkRefTupledNoTypes g m [mkCoerceExpr(y, g.obj_ty, m, ty) ; comp]] Some (DevirtualizeApplication cenv env withcEqualsVal ty tyargs args2 m) | _ -> None - // Optimize/analyze calls to LanguagePrimitives.HashCompare.GenericEqualityWithComparer + // Optimize/analyze calls to LanguagePrimitives.HashCompare.GenericEqualityIntrinsic | Expr.Val (v, _, _), [ty], _ when CanDevirtualizeApplication cenv v g.generic_equality_per_inner_vref ty args && not(isRefTupleTy g ty) -> let tcref, tyargs = StripToNominalTyconRef cenv ty match tcref.GeneratedHashAndEqualsWithComparerValues, args with - | Some (_, _, withcEqualsVal), [x; y] -> - let args2 = [x; mkRefTupledNoTypes g m [mkCoerceExpr(y, g.obj_ty, m, ty); (mkCallGetGenericPEREqualityComparer g m)]] - Some (DevirtualizeApplication cenv env withcEqualsVal ty tyargs args2 m) + | Some (_, _, _, Some withcEqualsExactVal), [x; y] -> + let args2 = [x; mkRefTupledNoTypes g m [y; (mkCallGetGenericPEREqualityComparer g m)]] + Some (DevirtualizeApplication cenv env withcEqualsExactVal ty tyargs args2 m) + | Some (_, _, withcEqualsVal, _), [x; y] -> + let equalsExactOpt = + tcref.MembersOfFSharpTyconByName.TryFind("Equals") + |> Option.map (List.where (fun x -> x.IsCompilerGenerated)) + |> Option.bind List.tryExactlyOne + + match equalsExactOpt with + | Some equalsExact -> + let args2 = [x; mkRefTupledNoTypes g m [y; (mkCallGetGenericPEREqualityComparer g m)]] + Some (DevirtualizeApplication cenv env equalsExact ty tyargs args2 m) + | None -> + let args2 = [x; mkRefTupledNoTypes g m [mkCoerceExpr(y, g.obj_ty, m, ty); (mkCallGetGenericPEREqualityComparer g m)]] + Some (DevirtualizeApplication cenv env withcEqualsVal ty tyargs args2 m) | _ -> None // Optimize/analyze calls to LanguagePrimitives.HashCompare.GenericHashIntrinsic | Expr.Val (v, _, _), [ty], _ when CanDevirtualizeApplication cenv v g.generic_hash_inner_vref ty args -> let tcref, tyargs = StripToNominalTyconRef cenv ty match tcref.GeneratedHashAndEqualsWithComparerValues, args with - | Some (_, withcGetHashCodeVal, _), [x] -> + | Some (_, withcGetHashCodeVal, _, _), [x] -> let args2 = [x; mkCallGetGenericEREqualityComparer g m] Some (DevirtualizeApplication cenv env withcGetHashCodeVal ty tyargs args2 m) | _ -> None @@ -3279,7 +3296,7 @@ and TryDevirtualizeApplication cenv env (f, tyargs, args, m) = | Expr.Val (v, _, _), [ty], _ when CanDevirtualizeApplication cenv v g.generic_hash_withc_inner_vref ty args -> let tcref, tyargs = StripToNominalTyconRef cenv ty match tcref.GeneratedHashAndEqualsWithComparerValues, args with - | Some (_, withcGetHashCodeVal, _), [comp; x] -> + | Some (_, withcGetHashCodeVal, _, _), [comp; x] -> let args2 = [x; comp] Some (DevirtualizeApplication cenv env withcGetHashCodeVal ty tyargs args2 m) | _ -> None diff --git a/src/Compiler/TypedTree/TypedTree.fs b/src/Compiler/TypedTree/TypedTree.fs index 7c2a454ae36..ec455fcbee8 100644 --- a/src/Compiler/TypedTree/TypedTree.fs +++ b/src/Compiler/TypedTree/TypedTree.fs @@ -1246,7 +1246,7 @@ type Entity = member x.GeneratedHashAndEqualsValues = x.TypeContents.tcaug_equals /// Gets all implicit hash/equals/compare methods added to an F# record, union or struct type definition. - member x.AllGeneratedValues = + member x.AllGeneratedInterfaceImplsAndOverrides = [ match x.GeneratedCompareToValues with | None -> () | Some (vref1, vref2) -> yield vref1; yield vref2 @@ -1258,7 +1258,8 @@ type Entity = | Some (vref1, vref2) -> yield vref1; yield vref2 match x.GeneratedHashAndEqualsWithComparerValues with | None -> () - | Some (vref1, vref2, vref3) -> yield vref1; yield vref2; yield vref3 ] + // vref4 is compiled as a sealed instance member, not an interface impl or an override. + | Some (vref1, vref2, vref3, _) -> yield vref1; yield vref2; yield vref3 ] /// Gets the data indicating the compiled representation of a type or module in terms of Abstract IL data structures. @@ -1398,10 +1399,10 @@ type TyconAugmentation = /// of Object.Equals or if the type doesn't override Object.Equals implicitly. mutable tcaug_equals: (ValRef * ValRef) option - /// This is the value implementing the auto-generated comparison + /// This is the value implementing the auto-generated equality /// semantics if any. It is not present if the type defines its own implementation - /// of IStructuralEquatable or if the type doesn't implement IComparable implicitly. - mutable tcaug_hash_and_equals_withc: (ValRef * ValRef * ValRef) option + /// of IStructuralEquatable or if the type doesn't override Object.Equals implicitly. + mutable tcaug_hash_and_equals_withc: (ValRef * ValRef * ValRef * ValRef option) option /// True if the type defined an Object.GetHashCode method. In this /// case we give a warning if we auto-generate a hash method since the semantics may not match up diff --git a/src/Compiler/TypedTree/TypedTree.fsi b/src/Compiler/TypedTree/TypedTree.fsi index 00aee7a92ef..ca766220265 100644 --- a/src/Compiler/TypedTree/TypedTree.fsi +++ b/src/Compiler/TypedTree/TypedTree.fsi @@ -508,7 +508,7 @@ type Entity = member AllFieldsAsList: RecdField list /// Gets all implicit hash/equals/compare methods added to an F# record, union or struct type definition. - member AllGeneratedValues: ValRef list + member AllGeneratedInterfaceImplsAndOverrides: ValRef list /// Get a list of all instance fields for F#-defined record, struct type class fields in this type definition. /// including hidden fields from the compilation of implicit class constructions. @@ -587,7 +587,7 @@ type Entity = member GeneratedHashAndEqualsValues: (ValRef * ValRef) option /// Gets any implicit hash/equals (with comparer argument) methods added to an F# record, union or struct type definition. - member GeneratedHashAndEqualsWithComparerValues: (ValRef * ValRef * ValRef) option + member GeneratedHashAndEqualsWithComparerValues: (ValRef * ValRef * ValRef * ValRef option) option /// Indicates if we have pre-determined that a type definition has a self-referential constructor using 'as x' member HasSelfReferentialConstructor: bool @@ -845,10 +845,10 @@ type TyconAugmentation = /// of Object.Equals or if the type doesn't override Object.Equals implicitly. mutable tcaug_equals: (ValRef * ValRef) option - /// This is the value implementing the auto-generated comparison + /// This is the value implementing the auto-generated equality /// semantics if any. It is not present if the type defines its own implementation - /// of IStructuralEquatable or if the type doesn't implement IComparable implicitly. - mutable tcaug_hash_and_equals_withc: (ValRef * ValRef * ValRef) option + /// of IStructuralEquatable or if the type doesn't override Object.Equals implicitly. + mutable tcaug_hash_and_equals_withc: (ValRef * ValRef * ValRef * ValRef option) option /// True if the type defined an Object.GetHashCode method. In this /// case we give a warning if we auto-generate a hash method since the semantics may not match up @@ -885,7 +885,7 @@ type TyconAugmentation = member SetHasObjectGetHashCode: b: bool -> unit - member SetHashAndEqualsWith: x: (ValRef * ValRef * ValRef) -> unit + member SetHashAndEqualsWith: x: (ValRef * ValRef * ValRef * ValRef option) -> unit override ToString: unit -> string @@ -2500,7 +2500,7 @@ type EntityRef = member GeneratedHashAndEqualsValues: (ValRef * ValRef) option /// Gets any implicit hash/equals (with comparer argument) methods added to an F# record, union or struct type definition. - member GeneratedHashAndEqualsWithComparerValues: (ValRef * ValRef * ValRef) option + member GeneratedHashAndEqualsWithComparerValues: (ValRef * ValRef * ValRef * ValRef option) option /// Indicates if we have pre-determined that a type definition has a self-referential constructor using 'as x' member HasSelfReferentialConstructor: bool @@ -3059,7 +3059,7 @@ type TType = /// Indicates the type is a universal type, only used for types of values type members | TType_forall of typars: Typars * bodyTy: TType - /// Indicates the type is built from a named type type a number of type arguments. + /// Indicates the type is built from a named type and a number of type arguments. /// /// 'flags' is a placeholder for future features, in particular nullness analysis | TType_app of tyconRef: TyconRef * typeInstantiation: TypeInst * flags: byte diff --git a/src/Compiler/TypedTree/TypedTreeOps.fs b/src/Compiler/TypedTree/TypedTreeOps.fs index cc031de1c1c..eb2ceb9a6aa 100644 --- a/src/Compiler/TypedTree/TypedTreeOps.fs +++ b/src/Compiler/TypedTree/TypedTreeOps.fs @@ -6116,7 +6116,7 @@ and remapTyconAug tmenv (x: TyconAugmentation) = tcaug_equals = x.tcaug_equals |> Option.map (mapPair (remapValRef tmenv, remapValRef tmenv)) tcaug_compare = x.tcaug_compare |> Option.map (mapPair (remapValRef tmenv, remapValRef tmenv)) tcaug_compare_withc = x.tcaug_compare_withc |> Option.map(remapValRef tmenv) - tcaug_hash_and_equals_withc = x.tcaug_hash_and_equals_withc |> Option.map (mapTriple (remapValRef tmenv, remapValRef tmenv, remapValRef tmenv)) + tcaug_hash_and_equals_withc = x.tcaug_hash_and_equals_withc |> Option.map (mapQuadruple (remapValRef tmenv, remapValRef tmenv, remapValRef tmenv, Option.map (remapValRef tmenv))) tcaug_adhoc = x.tcaug_adhoc |> NameMap.map (List.map (remapValRef tmenv)) tcaug_adhoc_list = x.tcaug_adhoc_list |> ResizeArray.map (fun (flag, vref) -> (flag, remapValRef tmenv vref)) tcaug_super = x.tcaug_super |> Option.map (remapType tmenv) diff --git a/src/Compiler/TypedTree/TypedTreePickle.fs b/src/Compiler/TypedTree/TypedTreePickle.fs index 519068b85f3..038909659ce 100644 --- a/src/Compiler/TypedTree/TypedTreePickle.fs +++ b/src/Compiler/TypedTree/TypedTreePickle.fs @@ -1914,7 +1914,7 @@ and p_tcaug p st = (p_space 1) (p.tcaug_compare, p.tcaug_compare_withc, - p.tcaug_hash_and_equals_withc, + p.tcaug_hash_and_equals_withc |> Option.map (fun (v1, v2, v3, _) -> (v1, v2, v3)), p.tcaug_equals, (p.tcaug_adhoc_list |> ResizeArray.toList @@ -2221,7 +2221,7 @@ and u_tcaug st = st {tcaug_compare=a1 tcaug_compare_withc=a2 - tcaug_hash_and_equals_withc=a3 + tcaug_hash_and_equals_withc=a3 |> Option.map (fun (v1, v2, v3) -> (v1, v2, v3, None)) tcaug_equals=b2 // only used for code generation and checking - hence don't care about the values when reading back in tcaug_hasObjectGetHashCode=false diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/CCtorDUWithMember/CCtorDUWithMember01a.fs.RealInternalSignatureOff.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/CCtorDUWithMember/CCtorDUWithMember01a.fs.RealInternalSignatureOff.il.net472.bsl index 6976f3903b3..36f2188c863 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/CCtorDUWithMember/CCtorDUWithMember01a.fs.RealInternalSignatureOff.il.net472.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/CCtorDUWithMember/CCtorDUWithMember01a.fs.RealInternalSignatureOff.il.net472.bsl @@ -92,8 +92,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 8 @@ -106,8 +105,7 @@ IL_0016: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 _tag) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 _tag) cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 E0 07 00 00 16 43 43 74 6F 72 44 55 57 69 @@ -124,8 +122,7 @@ IL_000d: ret } - .method public static class assembly/C - get_A() cil managed + .method public static class assembly/C get_A() cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -135,8 +132,7 @@ IL_0005: ret } - .method public hidebysig instance bool - get_IsA() cil managed + .method public hidebysig instance bool get_IsA() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -149,8 +145,7 @@ IL_0009: ret } - .method public static class assembly/C - get_B() cil managed + .method public static class assembly/C get_B() cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 01 00 00 00 00 00 ) @@ -160,8 +155,7 @@ IL_0005: ret } - .method public hidebysig instance bool - get_IsB() cil managed + .method public hidebysig instance bool get_IsB() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -174,8 +168,7 @@ IL_0009: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -186,8 +179,7 @@ IL_0006: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -201,8 +193,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -215,8 +206,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/C obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/C obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -260,8 +250,7 @@ IL_0026: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -325,8 +314,7 @@ IL_0037: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -345,8 +333,7 @@ IL_000d: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -357,52 +344,72 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/C obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/C V_0, - class assembly/C V_1, - int32 V_2, - int32 V_3) + int32 V_1, + int32 V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0024 + IL_0001: brfalse.s IL_001d IL_0003: ldarg.1 - IL_0004: isinst assembly/C - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0022 + IL_0004: brfalse.s IL_001b - IL_000d: ldloc.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: ldfld int32 assembly/C::_tag IL_000e: stloc.1 - IL_000f: ldarg.0 + IL_000f: ldloc.0 IL_0010: ldfld int32 assembly/C::_tag IL_0015: stloc.2 IL_0016: ldloc.1 - IL_0017: ldfld int32 assembly/C::_tag - IL_001c: stloc.3 - IL_001d: ldloc.2 - IL_001e: ldloc.3 - IL_001f: ceq - IL_0021: ret - - IL_0022: ldc.i4.0 - IL_0023: ret - - IL_0024: ldarg.1 - IL_0025: ldnull - IL_0026: cgt.un - IL_0028: ldc.i4.0 - IL_0029: ceq - IL_002b: ret + IL_0017: ldloc.2 + IL_0018: ceq + IL_001a: ret + + IL_001b: ldc.i4.0 + IL_001c: ret + + IL_001d: ldarg.1 + IL_001e: ldnull + IL_001f: cgt.un + IL_0021: ldc.i4.0 + IL_0022: ceq + IL_0024: ret } - .method public hidebysig specialname - instance int32 get_P() cil managed + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/C V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/C + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/C::Equals(class assembly/C, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig specialname instance int32 get_P() cil managed { .maxstack 3 @@ -413,8 +420,7 @@ IL_0003: ret } - .method public hidebysig virtual final - instance bool Equals(class assembly/C obj) cil managed + .method public hidebysig virtual final instance bool Equals(class assembly/C obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -449,8 +455,7 @@ IL_0022: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -514,8 +519,7 @@ } } - .method public specialname static class assembly/C - get_e2() cil managed + .method public specialname static class assembly/C get_e2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -538,8 +542,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 3 @@ -605,8 +608,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -617,8 +619,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/CCtorDUWithMember/CCtorDUWithMember01a.fs.RealInternalSignatureOff.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/CCtorDUWithMember/CCtorDUWithMember01a.fs.RealInternalSignatureOff.il.netcore.bsl index 6f5455efb9e..e37f7b7c7b3 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/CCtorDUWithMember/CCtorDUWithMember01a.fs.RealInternalSignatureOff.il.netcore.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/CCtorDUWithMember/CCtorDUWithMember01a.fs.RealInternalSignatureOff.il.netcore.bsl @@ -92,8 +92,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 8 @@ -106,8 +105,7 @@ IL_0016: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 _tag) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 _tag) cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 E0 07 00 00 16 43 43 74 6F 72 44 55 57 69 @@ -124,8 +122,7 @@ IL_000d: ret } - .method public static class assembly/C - get_A() cil managed + .method public static class assembly/C get_A() cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -135,8 +132,7 @@ IL_0005: ret } - .method public hidebysig instance bool - get_IsA() cil managed + .method public hidebysig instance bool get_IsA() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -149,8 +145,7 @@ IL_0009: ret } - .method public static class assembly/C - get_B() cil managed + .method public static class assembly/C get_B() cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 01 00 00 00 00 00 ) @@ -160,8 +155,7 @@ IL_0005: ret } - .method public hidebysig instance bool - get_IsB() cil managed + .method public hidebysig instance bool get_IsB() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -174,8 +168,7 @@ IL_0009: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -186,8 +179,7 @@ IL_0006: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -201,8 +193,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -215,8 +206,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/C obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/C obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -260,8 +250,7 @@ IL_0026: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -325,8 +314,7 @@ IL_0037: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -345,8 +333,7 @@ IL_000d: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -357,52 +344,72 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/C obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/C V_0, - class assembly/C V_1, - int32 V_2, - int32 V_3) + int32 V_1, + int32 V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0024 + IL_0001: brfalse.s IL_001d IL_0003: ldarg.1 - IL_0004: isinst assembly/C - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0022 + IL_0004: brfalse.s IL_001b - IL_000d: ldloc.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: ldfld int32 assembly/C::_tag IL_000e: stloc.1 - IL_000f: ldarg.0 + IL_000f: ldloc.0 IL_0010: ldfld int32 assembly/C::_tag IL_0015: stloc.2 IL_0016: ldloc.1 - IL_0017: ldfld int32 assembly/C::_tag - IL_001c: stloc.3 - IL_001d: ldloc.2 - IL_001e: ldloc.3 - IL_001f: ceq - IL_0021: ret - - IL_0022: ldc.i4.0 - IL_0023: ret - - IL_0024: ldarg.1 - IL_0025: ldnull - IL_0026: cgt.un - IL_0028: ldc.i4.0 - IL_0029: ceq - IL_002b: ret + IL_0017: ldloc.2 + IL_0018: ceq + IL_001a: ret + + IL_001b: ldc.i4.0 + IL_001c: ret + + IL_001d: ldarg.1 + IL_001e: ldnull + IL_001f: cgt.un + IL_0021: ldc.i4.0 + IL_0022: ceq + IL_0024: ret } - .method public hidebysig specialname - instance int32 get_P() cil managed + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/C V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/C + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/C::Equals(class assembly/C, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig specialname instance int32 get_P() cil managed { .maxstack 3 @@ -413,8 +420,7 @@ IL_0003: ret } - .method public hidebysig virtual final - instance bool Equals(class assembly/C obj) cil managed + .method public hidebysig virtual final instance bool Equals(class assembly/C obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -449,8 +455,7 @@ IL_0022: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -514,8 +519,7 @@ } } - .method public specialname static class assembly/C - get_e2() cil managed + .method public specialname static class assembly/C get_e2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -538,8 +542,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 3 diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/CCtorDUWithMember/CCtorDUWithMember01a.fs.RealInternalSignatureOn.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/CCtorDUWithMember/CCtorDUWithMember01a.fs.RealInternalSignatureOn.il.net472.bsl index d2af1bde4e8..962a0f7a013 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/CCtorDUWithMember/CCtorDUWithMember01a.fs.RealInternalSignatureOn.il.net472.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/CCtorDUWithMember/CCtorDUWithMember01a.fs.RealInternalSignatureOn.il.net472.bsl @@ -344,48 +344,69 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/C obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/C V_0, - class assembly/C V_1, - int32 V_2, - int32 V_3) + int32 V_1, + int32 V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0024 + IL_0001: brfalse.s IL_001d IL_0003: ldarg.1 - IL_0004: isinst assembly/C - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0022 + IL_0004: brfalse.s IL_001b - IL_000d: ldloc.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: ldfld int32 assembly/C::_tag IL_000e: stloc.1 - IL_000f: ldarg.0 + IL_000f: ldloc.0 IL_0010: ldfld int32 assembly/C::_tag IL_0015: stloc.2 IL_0016: ldloc.1 - IL_0017: ldfld int32 assembly/C::_tag - IL_001c: stloc.3 - IL_001d: ldloc.2 - IL_001e: ldloc.3 - IL_001f: ceq - IL_0021: ret - - IL_0022: ldc.i4.0 - IL_0023: ret - - IL_0024: ldarg.1 - IL_0025: ldnull - IL_0026: cgt.un - IL_0028: ldc.i4.0 - IL_0029: ceq - IL_002b: ret + IL_0017: ldloc.2 + IL_0018: ceq + IL_001a: ret + + IL_001b: ldc.i4.0 + IL_001c: ret + + IL_001d: ldarg.1 + IL_001e: ldnull + IL_001f: cgt.un + IL_0021: ldc.i4.0 + IL_0022: ceq + IL_0024: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/C V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/C + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/C::Equals(class assembly/C, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig specialname instance int32 get_P() cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/CCtorDUWithMember/CCtorDUWithMember01a.fs.RealInternalSignatureOn.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/CCtorDUWithMember/CCtorDUWithMember01a.fs.RealInternalSignatureOn.il.netcore.bsl index e631a36fccb..1d580c36200 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/CCtorDUWithMember/CCtorDUWithMember01a.fs.RealInternalSignatureOn.il.netcore.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/CCtorDUWithMember/CCtorDUWithMember01a.fs.RealInternalSignatureOn.il.netcore.bsl @@ -344,48 +344,69 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/C obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/C V_0, - class assembly/C V_1, - int32 V_2, - int32 V_3) + int32 V_1, + int32 V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0024 + IL_0001: brfalse.s IL_001d IL_0003: ldarg.1 - IL_0004: isinst assembly/C - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0022 + IL_0004: brfalse.s IL_001b - IL_000d: ldloc.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: ldfld int32 assembly/C::_tag IL_000e: stloc.1 - IL_000f: ldarg.0 + IL_000f: ldloc.0 IL_0010: ldfld int32 assembly/C::_tag IL_0015: stloc.2 IL_0016: ldloc.1 - IL_0017: ldfld int32 assembly/C::_tag - IL_001c: stloc.3 - IL_001d: ldloc.2 - IL_001e: ldloc.3 - IL_001f: ceq - IL_0021: ret - - IL_0022: ldc.i4.0 - IL_0023: ret - - IL_0024: ldarg.1 - IL_0025: ldnull - IL_0026: cgt.un - IL_0028: ldc.i4.0 - IL_0029: ceq - IL_002b: ret + IL_0017: ldloc.2 + IL_0018: ceq + IL_001a: ret + + IL_001b: ldc.i4.0 + IL_001c: ret + + IL_001d: ldarg.1 + IL_001e: ldnull + IL_001f: cgt.un + IL_0021: ldc.i4.0 + IL_0022: ceq + IL_0024: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/C V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/C + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/C::Equals(class assembly/C, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig specialname instance int32 get_P() cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOff.fs.il.net472.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOff.fs.il.net472.debug.bsl index ca0b5dcaae0..3d9cae250c3 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOff.fs.il.net472.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOff.fs.il.net472.debug.bsl @@ -55,13 +55,11 @@ .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationArgumentCountsAttribute::.ctor(int32[]) = ( 01 00 02 00 00 00 01 00 00 00 01 00 00 00 00 00 ) } - .method public hidebysig abstract virtual - instance int32 A2(int32 A_1) cil managed + .method public hidebysig abstract virtual instance int32 A2(int32 A_1) cil managed { } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -72,8 +70,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_P() cil managed + .method public hidebysig specialname instance int32 get_P() cil managed { .maxstack 8 @@ -94,8 +91,7 @@ IL_0003: ret } - .method public hidebysig instance !!a - M2(!!a x) cil managed preservesig + .method public hidebysig instance !!a M2(!!a x) cil managed preservesig { .maxstack 8 @@ -112,8 +108,7 @@ .class interface abstract auto ansi serializable nested public IInterface { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) - .method public hidebysig abstract virtual - instance int32 SomeMethod(int32 A_1) cil managed preservesig + .method public hidebysig abstract virtual instance int32 SomeMethod(int32 A_1) cil managed preservesig { } @@ -130,8 +125,7 @@ .pack 0 .size 1 .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) - .method public hidebysig virtual final - instance int32 CompareTo(valuetype Program/S obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(valuetype Program/S obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -143,8 +137,7 @@ IL_0004: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -174,8 +167,7 @@ IL_000b: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -184,8 +176,7 @@ IL_0001: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -196,38 +187,52 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype Program/S obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 3 + .locals init (valuetype Program/S& V_0) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldc.i4.1 + IL_0004: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 3 + .maxstack 5 .locals init (object V_0, - valuetype Program/S V_1, - valuetype Program/S& V_2) + valuetype Program/S V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst Program/S IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_0019 + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any Program/S IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldc.i4.1 - IL_0018: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool Program/S::Equals(valuetype Program/S, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret - IL_0019: ldc.i4.0 - IL_001a: ret + IL_001d: ldc.i4.0 + IL_001e: ret } - .method public hidebysig instance !!a - M1(!!a x) cil managed preservesig + .method public hidebysig instance !!a M1(!!a x) cil managed preservesig { .maxstack 8 @@ -235,8 +240,7 @@ IL_0001: ret } - .method public hidebysig virtual final - instance bool Equals(valuetype Program/S obj) cil managed + .method public hidebysig virtual final instance bool Equals(valuetype Program/S obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -248,8 +252,7 @@ IL_0004: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -281,8 +284,7 @@ .class interface abstract auto ansi serializable nested public ITestInterface { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) - .method public hidebysig abstract virtual - instance int32 M(int32 A_1) cil managed + .method public hidebysig abstract virtual instance int32 M(int32 A_1) cil managed { } @@ -293,8 +295,7 @@ implements Program/ITestInterface { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 06 00 00 00 00 00 ) - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -305,8 +306,7 @@ IL_0008: ret } - .method private hidebysig newslot virtual final - instance int32 Program.ITestInterface.M(int32 x) cil managed + .method private hidebysig newslot virtual final instance int32 Program.ITestInterface.M(int32 x) cil managed { .custom instance void [runtime]System.Runtime.InteropServices.PreserveSigAttribute::.ctor() = ( 01 00 00 00 ) .override Program/ITestInterface::M @@ -340,8 +340,7 @@ IL_0001: ret } - .method public specialname static class Program/ITestInterface - get_a() cil managed + .method public specialname static class Program/ITestInterface get_a() cil managed { .maxstack 8 diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOff.fs.il.net472.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOff.fs.il.net472.release.bsl index ca0b5dcaae0..3d9cae250c3 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOff.fs.il.net472.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOff.fs.il.net472.release.bsl @@ -55,13 +55,11 @@ .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationArgumentCountsAttribute::.ctor(int32[]) = ( 01 00 02 00 00 00 01 00 00 00 01 00 00 00 00 00 ) } - .method public hidebysig abstract virtual - instance int32 A2(int32 A_1) cil managed + .method public hidebysig abstract virtual instance int32 A2(int32 A_1) cil managed { } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -72,8 +70,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_P() cil managed + .method public hidebysig specialname instance int32 get_P() cil managed { .maxstack 8 @@ -94,8 +91,7 @@ IL_0003: ret } - .method public hidebysig instance !!a - M2(!!a x) cil managed preservesig + .method public hidebysig instance !!a M2(!!a x) cil managed preservesig { .maxstack 8 @@ -112,8 +108,7 @@ .class interface abstract auto ansi serializable nested public IInterface { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) - .method public hidebysig abstract virtual - instance int32 SomeMethod(int32 A_1) cil managed preservesig + .method public hidebysig abstract virtual instance int32 SomeMethod(int32 A_1) cil managed preservesig { } @@ -130,8 +125,7 @@ .pack 0 .size 1 .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) - .method public hidebysig virtual final - instance int32 CompareTo(valuetype Program/S obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(valuetype Program/S obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -143,8 +137,7 @@ IL_0004: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -174,8 +167,7 @@ IL_000b: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -184,8 +176,7 @@ IL_0001: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -196,38 +187,52 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype Program/S obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 3 + .locals init (valuetype Program/S& V_0) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldc.i4.1 + IL_0004: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 3 + .maxstack 5 .locals init (object V_0, - valuetype Program/S V_1, - valuetype Program/S& V_2) + valuetype Program/S V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst Program/S IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_0019 + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any Program/S IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldc.i4.1 - IL_0018: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool Program/S::Equals(valuetype Program/S, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret - IL_0019: ldc.i4.0 - IL_001a: ret + IL_001d: ldc.i4.0 + IL_001e: ret } - .method public hidebysig instance !!a - M1(!!a x) cil managed preservesig + .method public hidebysig instance !!a M1(!!a x) cil managed preservesig { .maxstack 8 @@ -235,8 +240,7 @@ IL_0001: ret } - .method public hidebysig virtual final - instance bool Equals(valuetype Program/S obj) cil managed + .method public hidebysig virtual final instance bool Equals(valuetype Program/S obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -248,8 +252,7 @@ IL_0004: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -281,8 +284,7 @@ .class interface abstract auto ansi serializable nested public ITestInterface { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) - .method public hidebysig abstract virtual - instance int32 M(int32 A_1) cil managed + .method public hidebysig abstract virtual instance int32 M(int32 A_1) cil managed { } @@ -293,8 +295,7 @@ implements Program/ITestInterface { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 06 00 00 00 00 00 ) - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -305,8 +306,7 @@ IL_0008: ret } - .method private hidebysig newslot virtual final - instance int32 Program.ITestInterface.M(int32 x) cil managed + .method private hidebysig newslot virtual final instance int32 Program.ITestInterface.M(int32 x) cil managed { .custom instance void [runtime]System.Runtime.InteropServices.PreserveSigAttribute::.ctor() = ( 01 00 00 00 ) .override Program/ITestInterface::M @@ -340,8 +340,7 @@ IL_0001: ret } - .method public specialname static class Program/ITestInterface - get_a() cil managed + .method public specialname static class Program/ITestInterface get_a() cil managed { .maxstack 8 diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOff.fs.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOff.fs.il.netcore.debug.bsl index e266b844053..71747396c31 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOff.fs.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOff.fs.il.netcore.debug.bsl @@ -56,13 +56,11 @@ .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationArgumentCountsAttribute::.ctor(int32[]) = ( 01 00 02 00 00 00 01 00 00 00 01 00 00 00 00 00 ) } - .method public hidebysig abstract virtual - instance int32 A2(int32 A_1) cil managed + .method public hidebysig abstract virtual instance int32 A2(int32 A_1) cil managed { } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -73,8 +71,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_P() cil managed + .method public hidebysig specialname instance int32 get_P() cil managed { .maxstack 8 @@ -95,8 +92,7 @@ IL_0003: ret } - .method public hidebysig instance !!a - M2(!!a x) cil managed preservesig + .method public hidebysig instance !!a M2(!!a x) cil managed preservesig { .maxstack 8 @@ -113,8 +109,7 @@ .class interface abstract auto ansi serializable nested public IInterface { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) - .method public hidebysig abstract virtual - instance int32 SomeMethod(int32 A_1) cil managed preservesig + .method public hidebysig abstract virtual instance int32 SomeMethod(int32 A_1) cil managed preservesig { } @@ -131,8 +126,7 @@ .pack 0 .size 1 .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) - .method public hidebysig virtual final - instance int32 CompareTo(valuetype Program/S obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(valuetype Program/S obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -144,8 +138,7 @@ IL_0004: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -175,8 +168,7 @@ IL_000b: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -185,8 +177,7 @@ IL_0001: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -197,38 +188,52 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype Program/S obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 3 + .locals init (valuetype Program/S& V_0) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldc.i4.1 + IL_0004: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 3 + .maxstack 5 .locals init (object V_0, - valuetype Program/S V_1, - valuetype Program/S& V_2) + valuetype Program/S V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst Program/S IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_0019 + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any Program/S IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldc.i4.1 - IL_0018: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool Program/S::Equals(valuetype Program/S, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret - IL_0019: ldc.i4.0 - IL_001a: ret + IL_001d: ldc.i4.0 + IL_001e: ret } - .method public hidebysig instance !!a - M1(!!a x) cil managed preservesig + .method public hidebysig instance !!a M1(!!a x) cil managed preservesig { .maxstack 8 @@ -236,8 +241,7 @@ IL_0001: ret } - .method public hidebysig virtual final - instance bool Equals(valuetype Program/S obj) cil managed + .method public hidebysig virtual final instance bool Equals(valuetype Program/S obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -249,8 +253,7 @@ IL_0004: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -282,8 +285,7 @@ .class interface abstract auto ansi serializable nested public ITestInterface { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) - .method public hidebysig abstract virtual - instance int32 M(int32 A_1) cil managed + .method public hidebysig abstract virtual instance int32 M(int32 A_1) cil managed { } @@ -294,8 +296,7 @@ implements Program/ITestInterface { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 06 00 00 00 00 00 ) - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -306,8 +307,7 @@ IL_0008: ret } - .method private hidebysig newslot virtual final - instance int32 Program.ITestInterface.M(int32 x) cil managed + .method private hidebysig newslot virtual final instance int32 Program.ITestInterface.M(int32 x) cil managed { .custom instance void [System.Runtime.InteropServices]System.Runtime.InteropServices.PreserveSigAttribute::.ctor() = ( 01 00 00 00 ) .override Program/ITestInterface::M @@ -341,8 +341,7 @@ IL_0001: ret } - .method public specialname static class Program/ITestInterface - get_a() cil managed + .method public specialname static class Program/ITestInterface get_a() cil managed { .maxstack 8 diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOff.fs.il.netcore.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOff.fs.il.netcore.release.bsl index e266b844053..71747396c31 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOff.fs.il.netcore.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOff.fs.il.netcore.release.bsl @@ -56,13 +56,11 @@ .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationArgumentCountsAttribute::.ctor(int32[]) = ( 01 00 02 00 00 00 01 00 00 00 01 00 00 00 00 00 ) } - .method public hidebysig abstract virtual - instance int32 A2(int32 A_1) cil managed + .method public hidebysig abstract virtual instance int32 A2(int32 A_1) cil managed { } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -73,8 +71,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_P() cil managed + .method public hidebysig specialname instance int32 get_P() cil managed { .maxstack 8 @@ -95,8 +92,7 @@ IL_0003: ret } - .method public hidebysig instance !!a - M2(!!a x) cil managed preservesig + .method public hidebysig instance !!a M2(!!a x) cil managed preservesig { .maxstack 8 @@ -113,8 +109,7 @@ .class interface abstract auto ansi serializable nested public IInterface { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) - .method public hidebysig abstract virtual - instance int32 SomeMethod(int32 A_1) cil managed preservesig + .method public hidebysig abstract virtual instance int32 SomeMethod(int32 A_1) cil managed preservesig { } @@ -131,8 +126,7 @@ .pack 0 .size 1 .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) - .method public hidebysig virtual final - instance int32 CompareTo(valuetype Program/S obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(valuetype Program/S obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -144,8 +138,7 @@ IL_0004: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -175,8 +168,7 @@ IL_000b: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -185,8 +177,7 @@ IL_0001: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -197,38 +188,52 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype Program/S obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 3 + .locals init (valuetype Program/S& V_0) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldc.i4.1 + IL_0004: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 3 + .maxstack 5 .locals init (object V_0, - valuetype Program/S V_1, - valuetype Program/S& V_2) + valuetype Program/S V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst Program/S IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_0019 + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any Program/S IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldc.i4.1 - IL_0018: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool Program/S::Equals(valuetype Program/S, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret - IL_0019: ldc.i4.0 - IL_001a: ret + IL_001d: ldc.i4.0 + IL_001e: ret } - .method public hidebysig instance !!a - M1(!!a x) cil managed preservesig + .method public hidebysig instance !!a M1(!!a x) cil managed preservesig { .maxstack 8 @@ -236,8 +241,7 @@ IL_0001: ret } - .method public hidebysig virtual final - instance bool Equals(valuetype Program/S obj) cil managed + .method public hidebysig virtual final instance bool Equals(valuetype Program/S obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -249,8 +253,7 @@ IL_0004: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -282,8 +285,7 @@ .class interface abstract auto ansi serializable nested public ITestInterface { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) - .method public hidebysig abstract virtual - instance int32 M(int32 A_1) cil managed + .method public hidebysig abstract virtual instance int32 M(int32 A_1) cil managed { } @@ -294,8 +296,7 @@ implements Program/ITestInterface { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 06 00 00 00 00 00 ) - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -306,8 +307,7 @@ IL_0008: ret } - .method private hidebysig newslot virtual final - instance int32 Program.ITestInterface.M(int32 x) cil managed + .method private hidebysig newslot virtual final instance int32 Program.ITestInterface.M(int32 x) cil managed { .custom instance void [System.Runtime.InteropServices]System.Runtime.InteropServices.PreserveSigAttribute::.ctor() = ( 01 00 00 00 ) .override Program/ITestInterface::M @@ -341,8 +341,7 @@ IL_0001: ret } - .method public specialname static class Program/ITestInterface - get_a() cil managed + .method public specialname static class Program/ITestInterface get_a() cil managed { .maxstack 8 diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOn.fs.il.net472.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOn.fs.il.net472.debug.bsl index 4f200c9131a..a3a27ae3c42 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOn.fs.il.net472.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOn.fs.il.net472.debug.bsl @@ -187,34 +187,49 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype Program/S obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 3 + .locals init (valuetype Program/S& V_0) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldc.i4.1 + IL_0004: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 3 + .maxstack 5 .locals init (object V_0, - valuetype Program/S V_1, - valuetype Program/S& V_2) + valuetype Program/S V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst Program/S IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_0019 + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any Program/S IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldc.i4.1 - IL_0018: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool Program/S::Equals(valuetype Program/S, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret - IL_0019: ldc.i4.0 - IL_001a: ret + IL_001d: ldc.i4.0 + IL_001e: ret } .method public hidebysig instance !!a M1(!!a x) cil managed preservesig diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOn.fs.il.net472.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOn.fs.il.net472.release.bsl index 4f200c9131a..a3a27ae3c42 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOn.fs.il.net472.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOn.fs.il.net472.release.bsl @@ -187,34 +187,49 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype Program/S obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 3 + .locals init (valuetype Program/S& V_0) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldc.i4.1 + IL_0004: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 3 + .maxstack 5 .locals init (object V_0, - valuetype Program/S V_1, - valuetype Program/S& V_2) + valuetype Program/S V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst Program/S IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_0019 + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any Program/S IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldc.i4.1 - IL_0018: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool Program/S::Equals(valuetype Program/S, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret - IL_0019: ldc.i4.0 - IL_001a: ret + IL_001d: ldc.i4.0 + IL_001e: ret } .method public hidebysig instance !!a M1(!!a x) cil managed preservesig diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOn.fs.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOn.fs.il.netcore.debug.bsl index 23bd08a2e1a..e25b36742eb 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOn.fs.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOn.fs.il.netcore.debug.bsl @@ -188,34 +188,49 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype Program/S obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 3 + .locals init (valuetype Program/S& V_0) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldc.i4.1 + IL_0004: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 3 + .maxstack 5 .locals init (object V_0, - valuetype Program/S V_1, - valuetype Program/S& V_2) + valuetype Program/S V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst Program/S IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_0019 + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any Program/S IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldc.i4.1 - IL_0018: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool Program/S::Equals(valuetype Program/S, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret - IL_0019: ldc.i4.0 - IL_001a: ret + IL_001d: ldc.i4.0 + IL_001e: ret } .method public hidebysig instance !!a M1(!!a x) cil managed preservesig diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOn.fs.il.netcore.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOn.fs.il.netcore.release.bsl index 23bd08a2e1a..e25b36742eb 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOn.fs.il.netcore.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/CompiledNameAttribute/CompiledNameAttribute04_RealInternalSignatureOn.fs.il.netcore.release.bsl @@ -188,34 +188,49 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype Program/S obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 3 + .locals init (valuetype Program/S& V_0) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldc.i4.1 + IL_0004: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 3 + .maxstack 5 .locals init (object V_0, - valuetype Program/S V_1, - valuetype Program/S& V_2) + valuetype Program/S V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst Program/S IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_0019 + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any Program/S IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldc.i4.1 - IL_0018: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool Program/S::Equals(valuetype Program/S, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret - IL_0019: ldc.i4.0 - IL_001a: ret + IL_001d: ldc.i4.0 + IL_001e: ret } .method public hidebysig instance !!a M1(!!a x) cil managed preservesig diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare05.fsx.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare05.fsx.il.net472.bsl index aa0bd09cd47..94d2248f41d 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare05.fsx.il.net472.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare05.fsx.il.net472.bsl @@ -105,8 +105,7 @@ IL_0014: ret } - .method public hidebysig instance int32 - get_Item1() cil managed + .method public hidebysig instance int32 get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -117,8 +116,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Item2() cil managed + .method public hidebysig instance int32 get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -129,8 +127,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -142,8 +139,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -157,8 +153,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -171,8 +166,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/CompareMicroPerfAndCodeGenerationTests/Key obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/CompareMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -255,8 +249,7 @@ IL_0068: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -354,8 +347,7 @@ IL_006d: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -406,8 +398,7 @@ IL_0038: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -418,60 +409,80 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/Key obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_0, - class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_1, - class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_2) + class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_1) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0034 + IL_0001: brfalse.s IL_002d IL_0003: ldarg.1 - IL_0004: isinst assembly/CompareMicroPerfAndCodeGenerationTests/Key + IL_0004: brfalse.s IL_002b + + IL_0006: ldarg.0 + IL_0007: pop + IL_0008: ldarg.0 IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0032 + IL_000a: ldarg.1 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item1 + IL_0012: ldloc.1 + IL_0013: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item1 + IL_0018: bne.un.s IL_0029 - IL_000d: ldarg.0 - IL_000e: pop - IL_000f: ldarg.0 - IL_0010: stloc.1 - IL_0011: ldloc.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item1 - IL_0019: ldloc.2 - IL_001a: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item1 - IL_001f: bne.un.s IL_0030 - - IL_0021: ldloc.1 - IL_0022: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item2 - IL_0027: ldloc.2 - IL_0028: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item2 - IL_002d: ceq - IL_002f: ret - - IL_0030: ldc.i4.0 - IL_0031: ret - - IL_0032: ldc.i4.0 - IL_0033: ret - - IL_0034: ldarg.1 - IL_0035: ldnull - IL_0036: cgt.un - IL_0038: ldc.i4.0 - IL_0039: ceq - IL_003b: ret + IL_001a: ldloc.0 + IL_001b: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item2 + IL_0020: ldloc.1 + IL_0021: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item2 + IL_0026: ceq + IL_0028: ret + + IL_0029: ldc.i4.0 + IL_002a: ret + + IL_002b: ldc.i4.0 + IL_002c: ret + + IL_002d: ldarg.1 + IL_002e: ldnull + IL_002f: cgt.un + IL_0031: ldc.i4.0 + IL_0032: ceq + IL_0034: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/Key obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/CompareMicroPerfAndCodeGenerationTests/Key + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/CompareMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/Key, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -517,8 +528,7 @@ IL_0034: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -677,8 +687,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -689,8 +698,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare05.fsx.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare05.fsx.il.netcore.bsl index 5f844543627..7bec8718abe 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare05.fsx.il.netcore.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare05.fsx.il.netcore.bsl @@ -105,8 +105,7 @@ IL_0014: ret } - .method public hidebysig instance int32 - get_Item1() cil managed + .method public hidebysig instance int32 get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -117,8 +116,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Item2() cil managed + .method public hidebysig instance int32 get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -129,8 +127,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -142,8 +139,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -157,8 +153,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -171,8 +166,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/CompareMicroPerfAndCodeGenerationTests/Key obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/CompareMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -255,8 +249,7 @@ IL_0068: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -354,8 +347,7 @@ IL_006d: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -406,8 +398,7 @@ IL_0038: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -418,60 +409,80 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/Key obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_0, - class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_1, - class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_2) + class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_1) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0034 + IL_0001: brfalse.s IL_002d IL_0003: ldarg.1 - IL_0004: isinst assembly/CompareMicroPerfAndCodeGenerationTests/Key + IL_0004: brfalse.s IL_002b + + IL_0006: ldarg.0 + IL_0007: pop + IL_0008: ldarg.0 IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0032 + IL_000a: ldarg.1 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item1 + IL_0012: ldloc.1 + IL_0013: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item1 + IL_0018: bne.un.s IL_0029 - IL_000d: ldarg.0 - IL_000e: pop - IL_000f: ldarg.0 - IL_0010: stloc.1 - IL_0011: ldloc.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item1 - IL_0019: ldloc.2 - IL_001a: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item1 - IL_001f: bne.un.s IL_0030 - - IL_0021: ldloc.1 - IL_0022: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item2 - IL_0027: ldloc.2 - IL_0028: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item2 - IL_002d: ceq - IL_002f: ret - - IL_0030: ldc.i4.0 - IL_0031: ret - - IL_0032: ldc.i4.0 - IL_0033: ret - - IL_0034: ldarg.1 - IL_0035: ldnull - IL_0036: cgt.un - IL_0038: ldc.i4.0 - IL_0039: ceq - IL_003b: ret + IL_001a: ldloc.0 + IL_001b: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item2 + IL_0020: ldloc.1 + IL_0021: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item2 + IL_0026: ceq + IL_0028: ret + + IL_0029: ldc.i4.0 + IL_002a: ret + + IL_002b: ldc.i4.0 + IL_002c: ret + + IL_002d: ldarg.1 + IL_002e: ldnull + IL_002f: cgt.un + IL_0031: ldc.i4.0 + IL_0032: ceq + IL_0034: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/Key obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/CompareMicroPerfAndCodeGenerationTests/Key + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/CompareMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/Key, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -517,8 +528,7 @@ IL_0034: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare06.fsx.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare06.fsx.il.net472.bsl index d0ac3122eaf..cbc961228a9 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare06.fsx.il.net472.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare06.fsx.il.net472.bsl @@ -62,8 +62,7 @@ .field assembly int32 key2@ .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .method public hidebysig specialname - instance int32 get_key1() cil managed + .method public hidebysig specialname instance int32 get_key1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -74,8 +73,7 @@ IL_0006: ret } - .method public hidebysig specialname - instance int32 get_key2() cil managed + .method public hidebysig specialname instance int32 get_key2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -108,8 +106,7 @@ IL_0014: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -122,8 +119,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/CompareMicroPerfAndCodeGenerationTests/KeyR obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/CompareMicroPerfAndCodeGenerationTests/KeyR obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -198,8 +194,7 @@ IL_0056: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -289,8 +284,7 @@ IL_005b: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -334,8 +328,7 @@ IL_0032: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -346,52 +339,72 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/KeyR obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 - .locals init (class assembly/CompareMicroPerfAndCodeGenerationTests/KeyR V_0) + .maxstack 8 IL_0000: ldarg.0 - IL_0001: brfalse.s IL_002e + IL_0001: brfalse.s IL_0027 IL_0003: ldarg.1 - IL_0004: isinst assembly/CompareMicroPerfAndCodeGenerationTests/KeyR - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_002c + IL_0004: brfalse.s IL_0025 - IL_000d: ldarg.0 - IL_000e: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_0013: ldloc.0 - IL_0014: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_0019: bne.un.s IL_002a + IL_0006: ldarg.0 + IL_0007: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_000c: ldarg.1 + IL_000d: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_0012: bne.un.s IL_0023 - IL_001b: ldarg.0 - IL_001c: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_0021: ldloc.0 - IL_0022: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_0027: ceq - IL_0029: ret + IL_0014: ldarg.0 + IL_0015: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_001a: ldarg.1 + IL_001b: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_0020: ceq + IL_0022: ret - IL_002a: ldc.i4.0 - IL_002b: ret + IL_0023: ldc.i4.0 + IL_0024: ret - IL_002c: ldc.i4.0 - IL_002d: ret + IL_0025: ldc.i4.0 + IL_0026: ret - IL_002e: ldarg.1 - IL_002f: ldnull - IL_0030: cgt.un - IL_0032: ldc.i4.0 - IL_0033: ceq - IL_0035: ret + IL_0027: ldarg.1 + IL_0028: ldnull + IL_0029: cgt.un + IL_002b: ldc.i4.0 + IL_002c: ceq + IL_002e: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/KeyR obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/CompareMicroPerfAndCodeGenerationTests/KeyR V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/CompareMicroPerfAndCodeGenerationTests/KeyR + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/CompareMicroPerfAndCodeGenerationTests/KeyR::Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/KeyR, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/KeyR obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -429,8 +442,7 @@ IL_002e: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -575,8 +587,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -587,8 +598,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare06.fsx.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare06.fsx.il.netcore.bsl index 7a405133e02..7a21dfe1de9 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare06.fsx.il.netcore.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare06.fsx.il.netcore.bsl @@ -62,8 +62,7 @@ .field assembly int32 key2@ .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .method public hidebysig specialname - instance int32 get_key1() cil managed + .method public hidebysig specialname instance int32 get_key1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -74,8 +73,7 @@ IL_0006: ret } - .method public hidebysig specialname - instance int32 get_key2() cil managed + .method public hidebysig specialname instance int32 get_key2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -108,8 +106,7 @@ IL_0014: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -122,8 +119,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/CompareMicroPerfAndCodeGenerationTests/KeyR obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/CompareMicroPerfAndCodeGenerationTests/KeyR obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -198,8 +194,7 @@ IL_0056: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -289,8 +284,7 @@ IL_005b: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -334,8 +328,7 @@ IL_0032: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -346,52 +339,72 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/KeyR obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 - .locals init (class assembly/CompareMicroPerfAndCodeGenerationTests/KeyR V_0) + .maxstack 8 IL_0000: ldarg.0 - IL_0001: brfalse.s IL_002e + IL_0001: brfalse.s IL_0027 IL_0003: ldarg.1 - IL_0004: isinst assembly/CompareMicroPerfAndCodeGenerationTests/KeyR - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_002c + IL_0004: brfalse.s IL_0025 - IL_000d: ldarg.0 - IL_000e: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_0013: ldloc.0 - IL_0014: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_0019: bne.un.s IL_002a + IL_0006: ldarg.0 + IL_0007: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_000c: ldarg.1 + IL_000d: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_0012: bne.un.s IL_0023 - IL_001b: ldarg.0 - IL_001c: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_0021: ldloc.0 - IL_0022: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_0027: ceq - IL_0029: ret + IL_0014: ldarg.0 + IL_0015: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_001a: ldarg.1 + IL_001b: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_0020: ceq + IL_0022: ret - IL_002a: ldc.i4.0 - IL_002b: ret + IL_0023: ldc.i4.0 + IL_0024: ret - IL_002c: ldc.i4.0 - IL_002d: ret + IL_0025: ldc.i4.0 + IL_0026: ret - IL_002e: ldarg.1 - IL_002f: ldnull - IL_0030: cgt.un - IL_0032: ldc.i4.0 - IL_0033: ceq - IL_0035: ret + IL_0027: ldarg.1 + IL_0028: ldnull + IL_0029: cgt.un + IL_002b: ldc.i4.0 + IL_002c: ceq + IL_002e: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/KeyR obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/CompareMicroPerfAndCodeGenerationTests/KeyR V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/CompareMicroPerfAndCodeGenerationTests/KeyR + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/CompareMicroPerfAndCodeGenerationTests/KeyR::Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/KeyR, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/KeyR obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -429,8 +442,7 @@ IL_002e: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare07.fsx.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare07.fsx.il.net472.bsl index 7a0ad1d24a3..4b9776f8498 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare07.fsx.il.net472.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare07.fsx.il.net472.bsl @@ -106,8 +106,7 @@ IL_0014: ret } - .method public hidebysig instance !a - get_Item1() cil managed + .method public hidebysig instance !a get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -118,8 +117,7 @@ IL_0006: ret } - .method public hidebysig instance !a - get_Item2() cil managed + .method public hidebysig instance !a get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -130,8 +128,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -143,8 +140,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -158,8 +154,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -172,8 +167,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -255,8 +249,7 @@ IL_0064: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -354,8 +347,7 @@ IL_0069: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -417,8 +409,7 @@ IL_0048: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -429,78 +420,99 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 5 .locals init (class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 V_0, class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 V_1, - class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 V_2, - !a V_3, - !a V_4) + !a V_2, + !a V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_004c + IL_0001: brfalse.s IL_0041 IL_0003: ldarg.1 - IL_0004: isinst class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_004a + IL_0004: brfalse.s IL_003f - IL_000d: ldarg.0 - IL_000e: pop - IL_000f: ldarg.0 - IL_0010: stloc.1 - IL_0011: ldloc.0 + IL_0006: ldarg.0 + IL_0007: pop + IL_0008: ldarg.0 + IL_0009: stloc.0 + IL_000a: ldarg.1 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: ldfld !0 class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item1 IL_0012: stloc.2 IL_0013: ldloc.1 IL_0014: ldfld !0 class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item1 IL_0019: stloc.3 - IL_001a: ldloc.2 - IL_001b: ldfld !0 class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item1 - IL_0020: stloc.s V_4 - IL_0022: ldarg.2 - IL_0023: ldloc.3 - IL_0024: ldloc.s V_4 - IL_0026: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, + IL_001a: ldarg.2 + IL_001b: ldloc.2 + IL_001c: ldloc.3 + IL_001d: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, !!0, !!0) - IL_002b: brfalse.s IL_0048 - - IL_002d: ldloc.1 - IL_002e: ldfld !0 class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_0033: stloc.3 - IL_0034: ldloc.2 - IL_0035: ldfld !0 class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_003a: stloc.s V_4 - IL_003c: ldarg.2 - IL_003d: ldloc.3 - IL_003e: ldloc.s V_4 - IL_0040: tail. - IL_0042: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, + IL_0022: brfalse.s IL_003d + + IL_0024: ldloc.0 + IL_0025: ldfld !0 class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_002a: stloc.2 + IL_002b: ldloc.1 + IL_002c: ldfld !0 class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_0031: stloc.3 + IL_0032: ldarg.2 + IL_0033: ldloc.2 + IL_0034: ldloc.3 + IL_0035: tail. + IL_0037: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, !!0, !!0) - IL_0047: ret + IL_003c: ret - IL_0048: ldc.i4.0 - IL_0049: ret + IL_003d: ldc.i4.0 + IL_003e: ret - IL_004a: ldc.i4.0 - IL_004b: ret + IL_003f: ldc.i4.0 + IL_0040: ret - IL_004c: ldarg.1 - IL_004d: ldnull - IL_004e: cgt.un - IL_0050: ldc.i4.0 - IL_0051: ceq - IL_0053: ret + IL_0041: ldarg.1 + IL_0042: ldnull + IL_0043: cgt.un + IL_0045: ldc.i4.0 + IL_0046: ceq + IL_0048: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 V_0) + IL_0000: ldarg.1 + IL_0001: isinst class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0015 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: tail. + IL_000f: callvirt instance bool class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1, + class [runtime]System.Collections.IEqualityComparer) + IL_0014: ret + + IL_0015: ldc.i4.0 + IL_0016: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -560,8 +572,7 @@ IL_0046: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -721,8 +732,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -733,8 +743,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare07.fsx.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare07.fsx.il.netcore.bsl index 053ca73e359..4a39f6a8f74 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare07.fsx.il.netcore.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare07.fsx.il.netcore.bsl @@ -106,8 +106,7 @@ IL_0014: ret } - .method public hidebysig instance !a - get_Item1() cil managed + .method public hidebysig instance !a get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -118,8 +117,7 @@ IL_0006: ret } - .method public hidebysig instance !a - get_Item2() cil managed + .method public hidebysig instance !a get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -130,8 +128,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -143,8 +140,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -158,8 +154,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -172,8 +167,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -255,8 +249,7 @@ IL_0064: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -354,8 +347,7 @@ IL_0069: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -417,8 +409,7 @@ IL_0048: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -429,78 +420,99 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 5 .locals init (class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 V_0, class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 V_1, - class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 V_2, - !a V_3, - !a V_4) + !a V_2, + !a V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_004c + IL_0001: brfalse.s IL_0041 IL_0003: ldarg.1 - IL_0004: isinst class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_004a + IL_0004: brfalse.s IL_003f - IL_000d: ldarg.0 - IL_000e: pop - IL_000f: ldarg.0 - IL_0010: stloc.1 - IL_0011: ldloc.0 + IL_0006: ldarg.0 + IL_0007: pop + IL_0008: ldarg.0 + IL_0009: stloc.0 + IL_000a: ldarg.1 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: ldfld !0 class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item1 IL_0012: stloc.2 IL_0013: ldloc.1 IL_0014: ldfld !0 class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item1 IL_0019: stloc.3 - IL_001a: ldloc.2 - IL_001b: ldfld !0 class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item1 - IL_0020: stloc.s V_4 - IL_0022: ldarg.2 - IL_0023: ldloc.3 - IL_0024: ldloc.s V_4 - IL_0026: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, + IL_001a: ldarg.2 + IL_001b: ldloc.2 + IL_001c: ldloc.3 + IL_001d: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, !!0, !!0) - IL_002b: brfalse.s IL_0048 - - IL_002d: ldloc.1 - IL_002e: ldfld !0 class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_0033: stloc.3 - IL_0034: ldloc.2 - IL_0035: ldfld !0 class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_003a: stloc.s V_4 - IL_003c: ldarg.2 - IL_003d: ldloc.3 - IL_003e: ldloc.s V_4 - IL_0040: tail. - IL_0042: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, + IL_0022: brfalse.s IL_003d + + IL_0024: ldloc.0 + IL_0025: ldfld !0 class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_002a: stloc.2 + IL_002b: ldloc.1 + IL_002c: ldfld !0 class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_0031: stloc.3 + IL_0032: ldarg.2 + IL_0033: ldloc.2 + IL_0034: ldloc.3 + IL_0035: tail. + IL_0037: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, !!0, !!0) - IL_0047: ret + IL_003c: ret - IL_0048: ldc.i4.0 - IL_0049: ret + IL_003d: ldc.i4.0 + IL_003e: ret - IL_004a: ldc.i4.0 - IL_004b: ret + IL_003f: ldc.i4.0 + IL_0040: ret - IL_004c: ldarg.1 - IL_004d: ldnull - IL_004e: cgt.un - IL_0050: ldc.i4.0 - IL_0051: ceq - IL_0053: ret + IL_0041: ldarg.1 + IL_0042: ldnull + IL_0043: cgt.un + IL_0045: ldc.i4.0 + IL_0046: ceq + IL_0048: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 V_0) + IL_0000: ldarg.1 + IL_0001: isinst class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0015 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: tail. + IL_000f: callvirt instance bool class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1, + class [runtime]System.Collections.IEqualityComparer) + IL_0014: ret + + IL_0015: ldc.i4.0 + IL_0016: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -560,8 +572,7 @@ IL_0046: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare10.fsx.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare10.fsx.il.net472.bsl index 5b174e9e701..54f7673a0af 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare10.fsx.il.net472.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare10.fsx.il.net472.bsl @@ -105,8 +105,7 @@ IL_0014: ret } - .method public hidebysig instance int32 - get_Item1() cil managed + .method public hidebysig instance int32 get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -117,8 +116,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Item2() cil managed + .method public hidebysig instance int32 get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -129,8 +127,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -142,8 +139,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -157,8 +153,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -171,8 +166,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/CompareMicroPerfAndCodeGenerationTests/Key obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/CompareMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -255,8 +249,7 @@ IL_0068: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -354,8 +347,7 @@ IL_006d: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -406,8 +398,7 @@ IL_0038: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -418,60 +409,80 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/Key obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_0, - class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_1, - class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_2) + class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_1) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0034 + IL_0001: brfalse.s IL_002d IL_0003: ldarg.1 - IL_0004: isinst assembly/CompareMicroPerfAndCodeGenerationTests/Key + IL_0004: brfalse.s IL_002b + + IL_0006: ldarg.0 + IL_0007: pop + IL_0008: ldarg.0 IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0032 + IL_000a: ldarg.1 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item1 + IL_0012: ldloc.1 + IL_0013: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item1 + IL_0018: bne.un.s IL_0029 - IL_000d: ldarg.0 - IL_000e: pop - IL_000f: ldarg.0 - IL_0010: stloc.1 - IL_0011: ldloc.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item1 - IL_0019: ldloc.2 - IL_001a: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item1 - IL_001f: bne.un.s IL_0030 - - IL_0021: ldloc.1 - IL_0022: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item2 - IL_0027: ldloc.2 - IL_0028: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item2 - IL_002d: ceq - IL_002f: ret - - IL_0030: ldc.i4.0 - IL_0031: ret - - IL_0032: ldc.i4.0 - IL_0033: ret - - IL_0034: ldarg.1 - IL_0035: ldnull - IL_0036: cgt.un - IL_0038: ldc.i4.0 - IL_0039: ceq - IL_003b: ret + IL_001a: ldloc.0 + IL_001b: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item2 + IL_0020: ldloc.1 + IL_0021: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item2 + IL_0026: ceq + IL_0028: ret + + IL_0029: ldc.i4.0 + IL_002a: ret + + IL_002b: ldc.i4.0 + IL_002c: ret + + IL_002d: ldarg.1 + IL_002e: ldnull + IL_002f: cgt.un + IL_0031: ldc.i4.0 + IL_0032: ceq + IL_0034: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/Key obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/CompareMicroPerfAndCodeGenerationTests/Key + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/CompareMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/Key, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -517,8 +528,7 @@ IL_0034: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -625,8 +635,7 @@ IL_0014: ret } - .method public hidebysig instance class assembly/CompareMicroPerfAndCodeGenerationTests/Key - get_Item1() cil managed + .method public hidebysig instance class assembly/CompareMicroPerfAndCodeGenerationTests/Key get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -637,8 +646,7 @@ IL_0006: ret } - .method public hidebysig instance class [runtime]System.Tuple`2 - get_Item2() cil managed + .method public hidebysig instance class [runtime]System.Tuple`2 get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -649,8 +657,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -662,8 +669,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -677,8 +683,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -691,8 +696,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -800,8 +804,7 @@ IL_009f: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -924,8 +927,7 @@ IL_00a4: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1002,8 +1004,7 @@ IL_0067: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1014,101 +1015,121 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 5 .locals init (class assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_0, class assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_1, - class assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_2, + class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_2, class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_3, - class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_4, + class [runtime]System.Tuple`2 V_4, class [runtime]System.Tuple`2 V_5, - class [runtime]System.Tuple`2 V_6, - class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_7, - class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_8) + class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_6, + class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_7) IL_0000: ldarg.0 - IL_0001: brfalse IL_007f + IL_0001: brfalse.s IL_0071 - IL_0006: ldarg.1 - IL_0007: isinst assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_007d + IL_0003: ldarg.1 + IL_0004: brfalse.s IL_006f - IL_0010: ldarg.0 - IL_0011: pop - IL_0012: ldarg.0 - IL_0013: stloc.1 - IL_0014: ldloc.0 - IL_0015: stloc.2 - IL_0016: ldloc.1 - IL_0017: ldfld class assembly/CompareMicroPerfAndCodeGenerationTests/Key assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_001c: stloc.3 - IL_001d: ldloc.2 - IL_001e: ldfld class assembly/CompareMicroPerfAndCodeGenerationTests/Key assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_0023: stloc.s V_4 - IL_0025: ldloc.3 - IL_0026: ldloc.s V_4 - IL_0028: ldarg.2 - IL_0029: callvirt instance bool assembly/CompareMicroPerfAndCodeGenerationTests/Key::Equals(object, + IL_0006: ldarg.0 + IL_0007: pop + IL_0008: ldarg.0 + IL_0009: stloc.0 + IL_000a: ldarg.1 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: ldfld class assembly/CompareMicroPerfAndCodeGenerationTests/Key assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_0012: stloc.2 + IL_0013: ldloc.1 + IL_0014: ldfld class assembly/CompareMicroPerfAndCodeGenerationTests/Key assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_0019: stloc.3 + IL_001a: ldloc.2 + IL_001b: ldloc.3 + IL_001c: ldarg.2 + IL_001d: callvirt instance bool assembly/CompareMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/Key, class [runtime]System.Collections.IEqualityComparer) - IL_002e: brfalse.s IL_007b - - IL_0030: ldloc.1 - IL_0031: ldfld class [runtime]System.Tuple`2 assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_0036: stloc.s V_5 - IL_0038: ldloc.2 - IL_0039: ldfld class [runtime]System.Tuple`2 assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_003e: stloc.s V_6 - IL_0040: ldloc.s V_5 - IL_0042: call instance !0 class [runtime]System.Tuple`2::get_Item1() - IL_0047: stloc.3 - IL_0048: ldloc.s V_5 - IL_004a: call instance !1 class [runtime]System.Tuple`2::get_Item2() - IL_004f: stloc.s V_4 - IL_0051: ldloc.s V_6 - IL_0053: call instance !0 class [runtime]System.Tuple`2::get_Item1() - IL_0058: stloc.s V_7 - IL_005a: ldloc.s V_6 - IL_005c: call instance !1 class [runtime]System.Tuple`2::get_Item2() - IL_0061: stloc.s V_8 - IL_0063: ldloc.3 - IL_0064: ldloc.s V_7 - IL_0066: ldarg.2 - IL_0067: callvirt instance bool assembly/CompareMicroPerfAndCodeGenerationTests/Key::Equals(object, + IL_0022: brfalse.s IL_006d + + IL_0024: ldloc.0 + IL_0025: ldfld class [runtime]System.Tuple`2 assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_002a: stloc.s V_4 + IL_002c: ldloc.1 + IL_002d: ldfld class [runtime]System.Tuple`2 assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_0032: stloc.s V_5 + IL_0034: ldloc.s V_4 + IL_0036: call instance !0 class [runtime]System.Tuple`2::get_Item1() + IL_003b: stloc.2 + IL_003c: ldloc.s V_4 + IL_003e: call instance !1 class [runtime]System.Tuple`2::get_Item2() + IL_0043: stloc.3 + IL_0044: ldloc.s V_5 + IL_0046: call instance !0 class [runtime]System.Tuple`2::get_Item1() + IL_004b: stloc.s V_6 + IL_004d: ldloc.s V_5 + IL_004f: call instance !1 class [runtime]System.Tuple`2::get_Item2() + IL_0054: stloc.s V_7 + IL_0056: ldloc.2 + IL_0057: ldloc.s V_6 + IL_0059: ldarg.2 + IL_005a: callvirt instance bool assembly/CompareMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/Key, class [runtime]System.Collections.IEqualityComparer) - IL_006c: brfalse.s IL_0079 + IL_005f: brfalse.s IL_006b - IL_006e: ldloc.s V_4 - IL_0070: ldloc.s V_8 - IL_0072: ldarg.2 - IL_0073: callvirt instance bool assembly/CompareMicroPerfAndCodeGenerationTests/Key::Equals(object, + IL_0061: ldloc.3 + IL_0062: ldloc.s V_7 + IL_0064: ldarg.2 + IL_0065: callvirt instance bool assembly/CompareMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/Key, class [runtime]System.Collections.IEqualityComparer) - IL_0078: ret + IL_006a: ret - IL_0079: ldc.i4.0 - IL_007a: ret + IL_006b: ldc.i4.0 + IL_006c: ret - IL_007b: ldc.i4.0 - IL_007c: ret + IL_006d: ldc.i4.0 + IL_006e: ret - IL_007d: ldc.i4.0 - IL_007e: ret + IL_006f: ldc.i4.0 + IL_0070: ret - IL_007f: ldarg.1 - IL_0080: ldnull - IL_0081: cgt.un - IL_0083: ldc.i4.0 - IL_0084: ceq - IL_0086: ret + IL_0071: ldarg.1 + IL_0072: ldnull + IL_0073: cgt.un + IL_0075: ldc.i4.0 + IL_0076: ceq + IL_0078: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1157,8 +1178,7 @@ IL_003e: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1343,8 +1363,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1355,8 +1374,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare10.fsx.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare10.fsx.il.netcore.bsl index e3cb0ef6801..4fa9495ce46 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare10.fsx.il.netcore.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Compare10.fsx.il.netcore.bsl @@ -105,8 +105,7 @@ IL_0014: ret } - .method public hidebysig instance int32 - get_Item1() cil managed + .method public hidebysig instance int32 get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -117,8 +116,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Item2() cil managed + .method public hidebysig instance int32 get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -129,8 +127,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -142,8 +139,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -157,8 +153,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -171,8 +166,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/CompareMicroPerfAndCodeGenerationTests/Key obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/CompareMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -255,8 +249,7 @@ IL_0068: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -354,8 +347,7 @@ IL_006d: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -406,8 +398,7 @@ IL_0038: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -418,60 +409,80 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/Key obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_0, - class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_1, - class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_2) + class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_1) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0034 + IL_0001: brfalse.s IL_002d IL_0003: ldarg.1 - IL_0004: isinst assembly/CompareMicroPerfAndCodeGenerationTests/Key + IL_0004: brfalse.s IL_002b + + IL_0006: ldarg.0 + IL_0007: pop + IL_0008: ldarg.0 IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0032 + IL_000a: ldarg.1 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item1 + IL_0012: ldloc.1 + IL_0013: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item1 + IL_0018: bne.un.s IL_0029 - IL_000d: ldarg.0 - IL_000e: pop - IL_000f: ldarg.0 - IL_0010: stloc.1 - IL_0011: ldloc.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item1 - IL_0019: ldloc.2 - IL_001a: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item1 - IL_001f: bne.un.s IL_0030 - - IL_0021: ldloc.1 - IL_0022: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item2 - IL_0027: ldloc.2 - IL_0028: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item2 - IL_002d: ceq - IL_002f: ret - - IL_0030: ldc.i4.0 - IL_0031: ret - - IL_0032: ldc.i4.0 - IL_0033: ret - - IL_0034: ldarg.1 - IL_0035: ldnull - IL_0036: cgt.un - IL_0038: ldc.i4.0 - IL_0039: ceq - IL_003b: ret + IL_001a: ldloc.0 + IL_001b: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item2 + IL_0020: ldloc.1 + IL_0021: ldfld int32 assembly/CompareMicroPerfAndCodeGenerationTests/Key::item2 + IL_0026: ceq + IL_0028: ret + + IL_0029: ldc.i4.0 + IL_002a: ret + + IL_002b: ldc.i4.0 + IL_002c: ret + + IL_002d: ldarg.1 + IL_002e: ldnull + IL_002f: cgt.un + IL_0031: ldc.i4.0 + IL_0032: ceq + IL_0034: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/Key obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/CompareMicroPerfAndCodeGenerationTests/Key + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/CompareMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/Key, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -517,8 +528,7 @@ IL_0034: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -625,8 +635,7 @@ IL_0014: ret } - .method public hidebysig instance class assembly/CompareMicroPerfAndCodeGenerationTests/Key - get_Item1() cil managed + .method public hidebysig instance class assembly/CompareMicroPerfAndCodeGenerationTests/Key get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -637,8 +646,7 @@ IL_0006: ret } - .method public hidebysig instance class [runtime]System.Tuple`2 - get_Item2() cil managed + .method public hidebysig instance class [runtime]System.Tuple`2 get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -649,8 +657,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -662,8 +669,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -677,8 +683,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -691,8 +696,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -800,8 +804,7 @@ IL_009f: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -924,8 +927,7 @@ IL_00a4: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1002,8 +1004,7 @@ IL_0067: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1014,101 +1015,121 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 5 .locals init (class assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_0, class assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_1, - class assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_2, + class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_2, class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_3, - class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_4, + class [runtime]System.Tuple`2 V_4, class [runtime]System.Tuple`2 V_5, - class [runtime]System.Tuple`2 V_6, - class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_7, - class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_8) + class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_6, + class assembly/CompareMicroPerfAndCodeGenerationTests/Key V_7) IL_0000: ldarg.0 - IL_0001: brfalse IL_007f + IL_0001: brfalse.s IL_0071 - IL_0006: ldarg.1 - IL_0007: isinst assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_007d + IL_0003: ldarg.1 + IL_0004: brfalse.s IL_006f - IL_0010: ldarg.0 - IL_0011: pop - IL_0012: ldarg.0 - IL_0013: stloc.1 - IL_0014: ldloc.0 - IL_0015: stloc.2 - IL_0016: ldloc.1 - IL_0017: ldfld class assembly/CompareMicroPerfAndCodeGenerationTests/Key assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_001c: stloc.3 - IL_001d: ldloc.2 - IL_001e: ldfld class assembly/CompareMicroPerfAndCodeGenerationTests/Key assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_0023: stloc.s V_4 - IL_0025: ldloc.3 - IL_0026: ldloc.s V_4 - IL_0028: ldarg.2 - IL_0029: callvirt instance bool assembly/CompareMicroPerfAndCodeGenerationTests/Key::Equals(object, + IL_0006: ldarg.0 + IL_0007: pop + IL_0008: ldarg.0 + IL_0009: stloc.0 + IL_000a: ldarg.1 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: ldfld class assembly/CompareMicroPerfAndCodeGenerationTests/Key assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_0012: stloc.2 + IL_0013: ldloc.1 + IL_0014: ldfld class assembly/CompareMicroPerfAndCodeGenerationTests/Key assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_0019: stloc.3 + IL_001a: ldloc.2 + IL_001b: ldloc.3 + IL_001c: ldarg.2 + IL_001d: callvirt instance bool assembly/CompareMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/Key, class [runtime]System.Collections.IEqualityComparer) - IL_002e: brfalse.s IL_007b - - IL_0030: ldloc.1 - IL_0031: ldfld class [runtime]System.Tuple`2 assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_0036: stloc.s V_5 - IL_0038: ldloc.2 - IL_0039: ldfld class [runtime]System.Tuple`2 assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_003e: stloc.s V_6 - IL_0040: ldloc.s V_5 - IL_0042: call instance !0 class [runtime]System.Tuple`2::get_Item1() - IL_0047: stloc.3 - IL_0048: ldloc.s V_5 - IL_004a: call instance !1 class [runtime]System.Tuple`2::get_Item2() - IL_004f: stloc.s V_4 - IL_0051: ldloc.s V_6 - IL_0053: call instance !0 class [runtime]System.Tuple`2::get_Item1() - IL_0058: stloc.s V_7 - IL_005a: ldloc.s V_6 - IL_005c: call instance !1 class [runtime]System.Tuple`2::get_Item2() - IL_0061: stloc.s V_8 - IL_0063: ldloc.3 - IL_0064: ldloc.s V_7 - IL_0066: ldarg.2 - IL_0067: callvirt instance bool assembly/CompareMicroPerfAndCodeGenerationTests/Key::Equals(object, + IL_0022: brfalse.s IL_006d + + IL_0024: ldloc.0 + IL_0025: ldfld class [runtime]System.Tuple`2 assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_002a: stloc.s V_4 + IL_002c: ldloc.1 + IL_002d: ldfld class [runtime]System.Tuple`2 assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_0032: stloc.s V_5 + IL_0034: ldloc.s V_4 + IL_0036: call instance !0 class [runtime]System.Tuple`2::get_Item1() + IL_003b: stloc.2 + IL_003c: ldloc.s V_4 + IL_003e: call instance !1 class [runtime]System.Tuple`2::get_Item2() + IL_0043: stloc.3 + IL_0044: ldloc.s V_5 + IL_0046: call instance !0 class [runtime]System.Tuple`2::get_Item1() + IL_004b: stloc.s V_6 + IL_004d: ldloc.s V_5 + IL_004f: call instance !1 class [runtime]System.Tuple`2::get_Item2() + IL_0054: stloc.s V_7 + IL_0056: ldloc.2 + IL_0057: ldloc.s V_6 + IL_0059: ldarg.2 + IL_005a: callvirt instance bool assembly/CompareMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/Key, class [runtime]System.Collections.IEqualityComparer) - IL_006c: brfalse.s IL_0079 + IL_005f: brfalse.s IL_006b - IL_006e: ldloc.s V_4 - IL_0070: ldloc.s V_8 - IL_0072: ldarg.2 - IL_0073: callvirt instance bool assembly/CompareMicroPerfAndCodeGenerationTests/Key::Equals(object, + IL_0061: ldloc.3 + IL_0062: ldloc.s V_7 + IL_0064: ldarg.2 + IL_0065: callvirt instance bool assembly/CompareMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/Key, class [runtime]System.Collections.IEqualityComparer) - IL_0078: ret + IL_006a: ret - IL_0079: ldc.i4.0 - IL_007a: ret + IL_006b: ldc.i4.0 + IL_006c: ret - IL_007b: ldc.i4.0 - IL_007c: ret + IL_006d: ldc.i4.0 + IL_006e: ret - IL_007d: ldc.i4.0 - IL_007e: ret + IL_006f: ldc.i4.0 + IL_0070: ret - IL_007f: ldarg.1 - IL_0080: ldnull - IL_0081: cgt.un - IL_0083: ldc.i4.0 - IL_0084: ceq - IL_0086: ret + IL_0071: ldarg.1 + IL_0072: ldnull + IL_0073: cgt.un + IL_0075: ldc.i4.0 + IL_0076: ceq + IL_0078: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1157,8 +1178,7 @@ IL_003e: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/CrossAssembly.fs b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/CrossAssembly.fs new file mode 100644 index 00000000000..8e2cd0853c0 --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/CrossAssembly.fs @@ -0,0 +1,93 @@ +// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. + +namespace EmittedIL + +open Xunit +open FSharp.Test.Compiler + +module GenericComparisonCrossAssembly = + + [] + let ``fslib``() = + FSharpWithFileName "Program.fs" + """ +ValueSome (1, 2) = ValueSome (2, 3) |> ignore""" + |> withOptimize + |> compileExeAndRun + |> shouldSucceed + |> verifyIL [ """ + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: ldc.i4.2 + IL_0002: newobj instance void class [runtime]System.Tuple`2::.ctor(!0, + !1) + IL_0007: call valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpValueOption`1 valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpValueOption`1>::NewValueSome(!0) + IL_000c: stsfld valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpValueOption`1> Program::x@1 + IL_0011: ldc.i4.2 + IL_0012: ldc.i4.3 + IL_0013: newobj instance void class [runtime]System.Tuple`2::.ctor(!0, + !1) + IL_0018: call valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpValueOption`1 valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpValueOption`1>::NewValueSome(!0) + IL_001d: stsfld valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpValueOption`1> Program::y@1 + IL_0022: ldsflda valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpValueOption`1> Program::x@1 + IL_0027: call valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpValueOption`1> Program::get_y@1() + IL_002c: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0031: call instance bool valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpValueOption`1>::Equals(valuetype [FSharp.Core]Microsoft.FSharp.Core.FSharpValueOption`1, + class [runtime]System.Collections.IEqualityComparer) + IL_0036: stsfld bool Program::arg@1 + IL_003b: ret + } +""" ] + + [] + let ``Another assembly``() = + let module1 = + FSharpWithFileName "Module1.fs" + """ +module Module1 + + [] + type Struct(v: int, u: int) = + member _.V = v + member _.U = u """ + |> withOptimize + |> asLibrary + |> withName "module1" + + let module2 = + FSharpWithFileName "Program.fs" + """ +Module1.Struct(1, 2) = Module1.Struct(2, 3) |> ignore""" + + module2 + |> withReferences [module1] + |> withOptimize + |> compileExeAndRun + |> shouldSucceed + |> verifyIL [ """ + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: ldc.i4.2 + IL_0002: newobj instance void [module1]Module1/Struct::.ctor(int32, + int32) + IL_0007: stsfld valuetype [module1]Module1/Struct Program::x@1 + IL_000c: ldc.i4.2 + IL_000d: ldc.i4.3 + IL_000e: newobj instance void [module1]Module1/Struct::.ctor(int32, + int32) + IL_0013: stsfld valuetype [module1]Module1/Struct Program::y@1 + IL_0018: ldsflda valuetype [module1]Module1/Struct Program::x@1 + IL_001d: call valuetype [module1]Module1/Struct Program::get_y@1() + IL_0022: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0027: call instance bool [module1]Module1/Struct::Equals(valuetype [module1]Module1/Struct, + class [runtime]System.Collections.IEqualityComparer) + IL_002c: stsfld bool Program::arg@1 + IL_0031: ret + } +""" ] diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals04.fsx.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals04.fsx.il.net472.bsl index 99c01217900..714867efeec 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals04.fsx.il.net472.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals04.fsx.il.net472.bsl @@ -105,8 +105,7 @@ IL_0014: ret } - .method public hidebysig instance int32 - get_Item1() cil managed + .method public hidebysig instance int32 get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -117,8 +116,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Item2() cil managed + .method public hidebysig instance int32 get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -129,8 +127,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -142,8 +139,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -157,8 +153,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -171,8 +166,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -255,8 +249,7 @@ IL_0068: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -354,8 +347,7 @@ IL_006d: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -406,8 +398,7 @@ IL_0038: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -418,60 +409,80 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_0, - class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_1, - class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_2) + class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_1) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0034 + IL_0001: brfalse.s IL_002d IL_0003: ldarg.1 - IL_0004: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/Key + IL_0004: brfalse.s IL_002b + + IL_0006: ldarg.0 + IL_0007: pop + IL_0008: ldarg.0 IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0032 + IL_000a: ldarg.1 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item1 + IL_0012: ldloc.1 + IL_0013: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item1 + IL_0018: bne.un.s IL_0029 - IL_000d: ldarg.0 - IL_000e: pop - IL_000f: ldarg.0 - IL_0010: stloc.1 - IL_0011: ldloc.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item1 - IL_0019: ldloc.2 - IL_001a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item1 - IL_001f: bne.un.s IL_0030 - - IL_0021: ldloc.1 - IL_0022: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item2 - IL_0027: ldloc.2 - IL_0028: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item2 - IL_002d: ceq - IL_002f: ret - - IL_0030: ldc.i4.0 - IL_0031: ret - - IL_0032: ldc.i4.0 - IL_0033: ret - - IL_0034: ldarg.1 - IL_0035: ldnull - IL_0036: cgt.un - IL_0038: ldc.i4.0 - IL_0039: ceq - IL_003b: ret + IL_001a: ldloc.0 + IL_001b: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item2 + IL_0020: ldloc.1 + IL_0021: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item2 + IL_0026: ceq + IL_0028: ret + + IL_0029: ldc.i4.0 + IL_002a: ret + + IL_002b: ldc.i4.0 + IL_002c: ret + + IL_002d: ldarg.1 + IL_002e: ldnull + IL_002f: cgt.un + IL_0031: ldc.i4.0 + IL_0032: ceq + IL_0034: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/Key + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -517,8 +528,7 @@ IL_0034: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -593,7 +603,7 @@ IL_0016: ldloc.1 IL_0017: ldloc.2 IL_0018: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() - IL_001d: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/Key::Equals(object, + IL_001d: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key, class [runtime]System.Collections.IEqualityComparer) IL_0022: stloc.0 IL_0023: ldloc.3 @@ -679,8 +689,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -691,8 +700,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals04.fsx.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals04.fsx.il.netcore.bsl index 0a0eccf087b..1709df973c0 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals04.fsx.il.netcore.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals04.fsx.il.netcore.bsl @@ -105,8 +105,7 @@ IL_0014: ret } - .method public hidebysig instance int32 - get_Item1() cil managed + .method public hidebysig instance int32 get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -117,8 +116,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Item2() cil managed + .method public hidebysig instance int32 get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -129,8 +127,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -142,8 +139,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -157,8 +153,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -171,8 +166,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -255,8 +249,7 @@ IL_0068: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -354,8 +347,7 @@ IL_006d: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -406,8 +398,7 @@ IL_0038: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -418,60 +409,80 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_0, - class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_1, - class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_2) + class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_1) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0034 + IL_0001: brfalse.s IL_002d IL_0003: ldarg.1 - IL_0004: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/Key + IL_0004: brfalse.s IL_002b + + IL_0006: ldarg.0 + IL_0007: pop + IL_0008: ldarg.0 IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0032 + IL_000a: ldarg.1 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item1 + IL_0012: ldloc.1 + IL_0013: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item1 + IL_0018: bne.un.s IL_0029 - IL_000d: ldarg.0 - IL_000e: pop - IL_000f: ldarg.0 - IL_0010: stloc.1 - IL_0011: ldloc.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item1 - IL_0019: ldloc.2 - IL_001a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item1 - IL_001f: bne.un.s IL_0030 - - IL_0021: ldloc.1 - IL_0022: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item2 - IL_0027: ldloc.2 - IL_0028: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item2 - IL_002d: ceq - IL_002f: ret - - IL_0030: ldc.i4.0 - IL_0031: ret - - IL_0032: ldc.i4.0 - IL_0033: ret - - IL_0034: ldarg.1 - IL_0035: ldnull - IL_0036: cgt.un - IL_0038: ldc.i4.0 - IL_0039: ceq - IL_003b: ret + IL_001a: ldloc.0 + IL_001b: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item2 + IL_0020: ldloc.1 + IL_0021: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item2 + IL_0026: ceq + IL_0028: ret + + IL_0029: ldc.i4.0 + IL_002a: ret + + IL_002b: ldc.i4.0 + IL_002c: ret + + IL_002d: ldarg.1 + IL_002e: ldnull + IL_002f: cgt.un + IL_0031: ldc.i4.0 + IL_0032: ceq + IL_0034: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/Key + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -517,8 +528,7 @@ IL_0034: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -593,7 +603,7 @@ IL_0016: ldloc.1 IL_0017: ldloc.2 IL_0018: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() - IL_001d: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/Key::Equals(object, + IL_001d: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key, class [runtime]System.Collections.IEqualityComparer) IL_0022: stloc.0 IL_0023: ldloc.3 diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals05.fsx.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals05.fsx.il.net472.bsl index 8989b79ef7c..156762ff882 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals05.fsx.il.net472.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals05.fsx.il.net472.bsl @@ -62,8 +62,7 @@ .field assembly int32 key2@ .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .method public hidebysig specialname - instance int32 get_key1() cil managed + .method public hidebysig specialname instance int32 get_key1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -74,8 +73,7 @@ IL_0006: ret } - .method public hidebysig specialname - instance int32 get_key2() cil managed + .method public hidebysig specialname instance int32 get_key2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -108,8 +106,7 @@ IL_0014: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -122,8 +119,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -198,8 +194,7 @@ IL_0056: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -289,8 +284,7 @@ IL_005b: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -334,8 +328,7 @@ IL_0032: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -346,52 +339,72 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 - .locals init (class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR V_0) + .maxstack 8 IL_0000: ldarg.0 - IL_0001: brfalse.s IL_002e + IL_0001: brfalse.s IL_0027 IL_0003: ldarg.1 - IL_0004: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_002c + IL_0004: brfalse.s IL_0025 - IL_000d: ldarg.0 - IL_000e: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_0013: ldloc.0 - IL_0014: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_0019: bne.un.s IL_002a + IL_0006: ldarg.0 + IL_0007: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_000c: ldarg.1 + IL_000d: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_0012: bne.un.s IL_0023 - IL_001b: ldarg.0 - IL_001c: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_0021: ldloc.0 - IL_0022: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_0027: ceq - IL_0029: ret + IL_0014: ldarg.0 + IL_0015: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_001a: ldarg.1 + IL_001b: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_0020: ceq + IL_0022: ret - IL_002a: ldc.i4.0 - IL_002b: ret + IL_0023: ldc.i4.0 + IL_0024: ret - IL_002c: ldc.i4.0 - IL_002d: ret + IL_0025: ldc.i4.0 + IL_0026: ret - IL_002e: ldarg.1 - IL_002f: ldnull - IL_0030: cgt.un - IL_0032: ldc.i4.0 - IL_0033: ceq - IL_0035: ret + IL_0027: ldarg.1 + IL_0028: ldnull + IL_0029: cgt.un + IL_002b: ldc.i4.0 + IL_002c: ceq + IL_002e: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR::Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -429,8 +442,7 @@ IL_002e: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -492,7 +504,7 @@ IL_0016: ldloc.1 IL_0017: ldloc.2 IL_0018: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() - IL_001d: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR::Equals(object, + IL_001d: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR::Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR, class [runtime]System.Collections.IEqualityComparer) IL_0022: stloc.0 IL_0023: ldloc.3 @@ -577,8 +589,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -589,8 +600,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals05.fsx.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals05.fsx.il.netcore.bsl index 0b2be0a0404..541cea12575 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals05.fsx.il.netcore.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals05.fsx.il.netcore.bsl @@ -62,8 +62,7 @@ .field assembly int32 key2@ .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .method public hidebysig specialname - instance int32 get_key1() cil managed + .method public hidebysig specialname instance int32 get_key1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -74,8 +73,7 @@ IL_0006: ret } - .method public hidebysig specialname - instance int32 get_key2() cil managed + .method public hidebysig specialname instance int32 get_key2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -108,8 +106,7 @@ IL_0014: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -122,8 +119,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -198,8 +194,7 @@ IL_0056: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -289,8 +284,7 @@ IL_005b: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -334,8 +328,7 @@ IL_0032: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -346,52 +339,72 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 - .locals init (class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR V_0) + .maxstack 8 IL_0000: ldarg.0 - IL_0001: brfalse.s IL_002e + IL_0001: brfalse.s IL_0027 IL_0003: ldarg.1 - IL_0004: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_002c + IL_0004: brfalse.s IL_0025 - IL_000d: ldarg.0 - IL_000e: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_0013: ldloc.0 - IL_0014: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_0019: bne.un.s IL_002a + IL_0006: ldarg.0 + IL_0007: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_000c: ldarg.1 + IL_000d: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_0012: bne.un.s IL_0023 - IL_001b: ldarg.0 - IL_001c: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_0021: ldloc.0 - IL_0022: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_0027: ceq - IL_0029: ret + IL_0014: ldarg.0 + IL_0015: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_001a: ldarg.1 + IL_001b: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_0020: ceq + IL_0022: ret - IL_002a: ldc.i4.0 - IL_002b: ret + IL_0023: ldc.i4.0 + IL_0024: ret - IL_002c: ldc.i4.0 - IL_002d: ret + IL_0025: ldc.i4.0 + IL_0026: ret - IL_002e: ldarg.1 - IL_002f: ldnull - IL_0030: cgt.un - IL_0032: ldc.i4.0 - IL_0033: ceq - IL_0035: ret + IL_0027: ldarg.1 + IL_0028: ldnull + IL_0029: cgt.un + IL_002b: ldc.i4.0 + IL_002c: ceq + IL_002e: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR::Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -429,8 +442,7 @@ IL_002e: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -492,7 +504,7 @@ IL_0016: ldloc.1 IL_0017: ldloc.2 IL_0018: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() - IL_001d: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR::Equals(object, + IL_001d: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR::Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyR, class [runtime]System.Collections.IEqualityComparer) IL_0022: stloc.0 IL_0023: ldloc.3 diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals06.fsx.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals06.fsx.il.net472.bsl index d2e397fc420..ce1a61427bc 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals06.fsx.il.net472.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals06.fsx.il.net472.bsl @@ -106,8 +106,7 @@ IL_0014: ret } - .method public hidebysig instance !a - get_Item1() cil managed + .method public hidebysig instance !a get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -118,8 +117,7 @@ IL_0006: ret } - .method public hidebysig instance !a - get_Item2() cil managed + .method public hidebysig instance !a get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -130,8 +128,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -143,8 +140,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -158,8 +154,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -172,8 +167,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -255,8 +249,7 @@ IL_0064: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -354,8 +347,7 @@ IL_0069: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -417,8 +409,7 @@ IL_0048: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -429,78 +420,99 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 5 .locals init (class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 V_0, class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 V_1, - class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 V_2, - !a V_3, - !a V_4) + !a V_2, + !a V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_004c + IL_0001: brfalse.s IL_0041 IL_0003: ldarg.1 - IL_0004: isinst class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_004a + IL_0004: brfalse.s IL_003f - IL_000d: ldarg.0 - IL_000e: pop - IL_000f: ldarg.0 - IL_0010: stloc.1 - IL_0011: ldloc.0 + IL_0006: ldarg.0 + IL_0007: pop + IL_0008: ldarg.0 + IL_0009: stloc.0 + IL_000a: ldarg.1 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: ldfld !0 class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item1 IL_0012: stloc.2 IL_0013: ldloc.1 IL_0014: ldfld !0 class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item1 IL_0019: stloc.3 - IL_001a: ldloc.2 - IL_001b: ldfld !0 class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item1 - IL_0020: stloc.s V_4 - IL_0022: ldarg.2 - IL_0023: ldloc.3 - IL_0024: ldloc.s V_4 - IL_0026: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, + IL_001a: ldarg.2 + IL_001b: ldloc.2 + IL_001c: ldloc.3 + IL_001d: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, !!0, !!0) - IL_002b: brfalse.s IL_0048 - - IL_002d: ldloc.1 - IL_002e: ldfld !0 class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_0033: stloc.3 - IL_0034: ldloc.2 - IL_0035: ldfld !0 class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_003a: stloc.s V_4 - IL_003c: ldarg.2 - IL_003d: ldloc.3 - IL_003e: ldloc.s V_4 - IL_0040: tail. - IL_0042: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, + IL_0022: brfalse.s IL_003d + + IL_0024: ldloc.0 + IL_0025: ldfld !0 class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_002a: stloc.2 + IL_002b: ldloc.1 + IL_002c: ldfld !0 class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_0031: stloc.3 + IL_0032: ldarg.2 + IL_0033: ldloc.2 + IL_0034: ldloc.3 + IL_0035: tail. + IL_0037: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, !!0, !!0) - IL_0047: ret + IL_003c: ret - IL_0048: ldc.i4.0 - IL_0049: ret + IL_003d: ldc.i4.0 + IL_003e: ret - IL_004a: ldc.i4.0 - IL_004b: ret + IL_003f: ldc.i4.0 + IL_0040: ret - IL_004c: ldarg.1 - IL_004d: ldnull - IL_004e: cgt.un - IL_0050: ldc.i4.0 - IL_0051: ceq - IL_0053: ret + IL_0041: ldarg.1 + IL_0042: ldnull + IL_0043: cgt.un + IL_0045: ldc.i4.0 + IL_0046: ceq + IL_0048: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 V_0) + IL_0000: ldarg.1 + IL_0001: isinst class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0015 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: tail. + IL_000f: callvirt instance bool class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1, + class [runtime]System.Collections.IEqualityComparer) + IL_0014: ret + + IL_0015: ldc.i4.0 + IL_0016: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -560,8 +572,7 @@ IL_0046: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -637,7 +648,7 @@ IL_0016: ldloc.1 IL_0017: ldloc.2 IL_0018: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() - IL_001d: callvirt instance bool class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::Equals(object, + IL_001d: callvirt instance bool class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1, class [runtime]System.Collections.IEqualityComparer) IL_0022: stloc.0 IL_0023: ldloc.3 @@ -723,8 +734,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -735,8 +745,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals06.fsx.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals06.fsx.il.netcore.bsl index d84919c9528..c99e852841e 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals06.fsx.il.netcore.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals06.fsx.il.netcore.bsl @@ -106,8 +106,7 @@ IL_0014: ret } - .method public hidebysig instance !a - get_Item1() cil managed + .method public hidebysig instance !a get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -118,8 +117,7 @@ IL_0006: ret } - .method public hidebysig instance !a - get_Item2() cil managed + .method public hidebysig instance !a get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -130,8 +128,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -143,8 +140,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -158,8 +154,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -172,8 +167,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -255,8 +249,7 @@ IL_0064: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -354,8 +347,7 @@ IL_0069: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -417,8 +409,7 @@ IL_0048: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -429,78 +420,99 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 5 .locals init (class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 V_0, class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 V_1, - class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 V_2, - !a V_3, - !a V_4) + !a V_2, + !a V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_004c + IL_0001: brfalse.s IL_0041 IL_0003: ldarg.1 - IL_0004: isinst class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_004a + IL_0004: brfalse.s IL_003f - IL_000d: ldarg.0 - IL_000e: pop - IL_000f: ldarg.0 - IL_0010: stloc.1 - IL_0011: ldloc.0 + IL_0006: ldarg.0 + IL_0007: pop + IL_0008: ldarg.0 + IL_0009: stloc.0 + IL_000a: ldarg.1 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: ldfld !0 class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item1 IL_0012: stloc.2 IL_0013: ldloc.1 IL_0014: ldfld !0 class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item1 IL_0019: stloc.3 - IL_001a: ldloc.2 - IL_001b: ldfld !0 class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item1 - IL_0020: stloc.s V_4 - IL_0022: ldarg.2 - IL_0023: ldloc.3 - IL_0024: ldloc.s V_4 - IL_0026: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, + IL_001a: ldarg.2 + IL_001b: ldloc.2 + IL_001c: ldloc.3 + IL_001d: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, !!0, !!0) - IL_002b: brfalse.s IL_0048 - - IL_002d: ldloc.1 - IL_002e: ldfld !0 class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_0033: stloc.3 - IL_0034: ldloc.2 - IL_0035: ldfld !0 class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_003a: stloc.s V_4 - IL_003c: ldarg.2 - IL_003d: ldloc.3 - IL_003e: ldloc.s V_4 - IL_0040: tail. - IL_0042: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, + IL_0022: brfalse.s IL_003d + + IL_0024: ldloc.0 + IL_0025: ldfld !0 class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_002a: stloc.2 + IL_002b: ldloc.1 + IL_002c: ldfld !0 class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_0031: stloc.3 + IL_0032: ldarg.2 + IL_0033: ldloc.2 + IL_0034: ldloc.3 + IL_0035: tail. + IL_0037: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, !!0, !!0) - IL_0047: ret + IL_003c: ret - IL_0048: ldc.i4.0 - IL_0049: ret + IL_003d: ldc.i4.0 + IL_003e: ret - IL_004a: ldc.i4.0 - IL_004b: ret + IL_003f: ldc.i4.0 + IL_0040: ret - IL_004c: ldarg.1 - IL_004d: ldnull - IL_004e: cgt.un - IL_0050: ldc.i4.0 - IL_0051: ceq - IL_0053: ret + IL_0041: ldarg.1 + IL_0042: ldnull + IL_0043: cgt.un + IL_0045: ldc.i4.0 + IL_0046: ceq + IL_0048: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 V_0) + IL_0000: ldarg.1 + IL_0001: isinst class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0015 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: tail. + IL_000f: callvirt instance bool class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1, + class [runtime]System.Collections.IEqualityComparer) + IL_0014: ret + + IL_0015: ldc.i4.0 + IL_0016: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -560,8 +572,7 @@ IL_0046: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -637,7 +648,7 @@ IL_0016: ldloc.1 IL_0017: ldloc.2 IL_0018: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() - IL_001d: callvirt instance bool class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::Equals(object, + IL_001d: callvirt instance bool class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1, class [runtime]System.Collections.IEqualityComparer) IL_0022: stloc.0 IL_0023: ldloc.3 diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals09.fsx.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals09.fsx.il.net472.bsl index 6c3e3536713..f7d11d90f47 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals09.fsx.il.net472.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals09.fsx.il.net472.bsl @@ -105,8 +105,7 @@ IL_0014: ret } - .method public hidebysig instance int32 - get_Item1() cil managed + .method public hidebysig instance int32 get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -117,8 +116,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Item2() cil managed + .method public hidebysig instance int32 get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -129,8 +127,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -142,8 +139,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -157,8 +153,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -171,8 +166,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -255,8 +249,7 @@ IL_0068: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -354,8 +347,7 @@ IL_006d: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -406,8 +398,7 @@ IL_0038: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -418,60 +409,80 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_0, - class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_1, - class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_2) + class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_1) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0034 + IL_0001: brfalse.s IL_002d IL_0003: ldarg.1 - IL_0004: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/Key + IL_0004: brfalse.s IL_002b + + IL_0006: ldarg.0 + IL_0007: pop + IL_0008: ldarg.0 IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0032 + IL_000a: ldarg.1 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item1 + IL_0012: ldloc.1 + IL_0013: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item1 + IL_0018: bne.un.s IL_0029 - IL_000d: ldarg.0 - IL_000e: pop - IL_000f: ldarg.0 - IL_0010: stloc.1 - IL_0011: ldloc.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item1 - IL_0019: ldloc.2 - IL_001a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item1 - IL_001f: bne.un.s IL_0030 - - IL_0021: ldloc.1 - IL_0022: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item2 - IL_0027: ldloc.2 - IL_0028: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item2 - IL_002d: ceq - IL_002f: ret - - IL_0030: ldc.i4.0 - IL_0031: ret - - IL_0032: ldc.i4.0 - IL_0033: ret - - IL_0034: ldarg.1 - IL_0035: ldnull - IL_0036: cgt.un - IL_0038: ldc.i4.0 - IL_0039: ceq - IL_003b: ret + IL_001a: ldloc.0 + IL_001b: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item2 + IL_0020: ldloc.1 + IL_0021: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item2 + IL_0026: ceq + IL_0028: ret + + IL_0029: ldc.i4.0 + IL_002a: ret + + IL_002b: ldc.i4.0 + IL_002c: ret + + IL_002d: ldarg.1 + IL_002e: ldnull + IL_002f: cgt.un + IL_0031: ldc.i4.0 + IL_0032: ceq + IL_0034: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/Key + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -517,8 +528,7 @@ IL_0034: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -625,8 +635,7 @@ IL_0014: ret } - .method public hidebysig instance class assembly/EqualsMicroPerfAndCodeGenerationTests/Key - get_Item1() cil managed + .method public hidebysig instance class assembly/EqualsMicroPerfAndCodeGenerationTests/Key get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -637,8 +646,7 @@ IL_0006: ret } - .method public hidebysig instance class [runtime]System.Tuple`2 - get_Item2() cil managed + .method public hidebysig instance class [runtime]System.Tuple`2 get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -649,8 +657,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -662,8 +669,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -677,8 +683,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -691,8 +696,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -800,8 +804,7 @@ IL_009f: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -924,8 +927,7 @@ IL_00a4: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1002,8 +1004,7 @@ IL_0067: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1014,101 +1015,121 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 5 .locals init (class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_0, class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_1, - class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_2, + class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_2, class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_3, - class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_4, + class [runtime]System.Tuple`2 V_4, class [runtime]System.Tuple`2 V_5, - class [runtime]System.Tuple`2 V_6, - class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_7, - class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_8) + class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_6, + class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_7) IL_0000: ldarg.0 - IL_0001: brfalse IL_007f + IL_0001: brfalse.s IL_0071 - IL_0006: ldarg.1 - IL_0007: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_007d + IL_0003: ldarg.1 + IL_0004: brfalse.s IL_006f - IL_0010: ldarg.0 - IL_0011: pop - IL_0012: ldarg.0 - IL_0013: stloc.1 - IL_0014: ldloc.0 - IL_0015: stloc.2 - IL_0016: ldloc.1 - IL_0017: ldfld class assembly/EqualsMicroPerfAndCodeGenerationTests/Key assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_001c: stloc.3 - IL_001d: ldloc.2 - IL_001e: ldfld class assembly/EqualsMicroPerfAndCodeGenerationTests/Key assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_0023: stloc.s V_4 - IL_0025: ldloc.3 - IL_0026: ldloc.s V_4 - IL_0028: ldarg.2 - IL_0029: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/Key::Equals(object, + IL_0006: ldarg.0 + IL_0007: pop + IL_0008: ldarg.0 + IL_0009: stloc.0 + IL_000a: ldarg.1 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: ldfld class assembly/EqualsMicroPerfAndCodeGenerationTests/Key assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_0012: stloc.2 + IL_0013: ldloc.1 + IL_0014: ldfld class assembly/EqualsMicroPerfAndCodeGenerationTests/Key assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_0019: stloc.3 + IL_001a: ldloc.2 + IL_001b: ldloc.3 + IL_001c: ldarg.2 + IL_001d: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key, class [runtime]System.Collections.IEqualityComparer) - IL_002e: brfalse.s IL_007b - - IL_0030: ldloc.1 - IL_0031: ldfld class [runtime]System.Tuple`2 assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_0036: stloc.s V_5 - IL_0038: ldloc.2 - IL_0039: ldfld class [runtime]System.Tuple`2 assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_003e: stloc.s V_6 - IL_0040: ldloc.s V_5 - IL_0042: call instance !0 class [runtime]System.Tuple`2::get_Item1() - IL_0047: stloc.3 - IL_0048: ldloc.s V_5 - IL_004a: call instance !1 class [runtime]System.Tuple`2::get_Item2() - IL_004f: stloc.s V_4 - IL_0051: ldloc.s V_6 - IL_0053: call instance !0 class [runtime]System.Tuple`2::get_Item1() - IL_0058: stloc.s V_7 - IL_005a: ldloc.s V_6 - IL_005c: call instance !1 class [runtime]System.Tuple`2::get_Item2() - IL_0061: stloc.s V_8 - IL_0063: ldloc.3 - IL_0064: ldloc.s V_7 - IL_0066: ldarg.2 - IL_0067: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/Key::Equals(object, + IL_0022: brfalse.s IL_006d + + IL_0024: ldloc.0 + IL_0025: ldfld class [runtime]System.Tuple`2 assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_002a: stloc.s V_4 + IL_002c: ldloc.1 + IL_002d: ldfld class [runtime]System.Tuple`2 assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_0032: stloc.s V_5 + IL_0034: ldloc.s V_4 + IL_0036: call instance !0 class [runtime]System.Tuple`2::get_Item1() + IL_003b: stloc.2 + IL_003c: ldloc.s V_4 + IL_003e: call instance !1 class [runtime]System.Tuple`2::get_Item2() + IL_0043: stloc.3 + IL_0044: ldloc.s V_5 + IL_0046: call instance !0 class [runtime]System.Tuple`2::get_Item1() + IL_004b: stloc.s V_6 + IL_004d: ldloc.s V_5 + IL_004f: call instance !1 class [runtime]System.Tuple`2::get_Item2() + IL_0054: stloc.s V_7 + IL_0056: ldloc.2 + IL_0057: ldloc.s V_6 + IL_0059: ldarg.2 + IL_005a: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key, class [runtime]System.Collections.IEqualityComparer) - IL_006c: brfalse.s IL_0079 + IL_005f: brfalse.s IL_006b - IL_006e: ldloc.s V_4 - IL_0070: ldloc.s V_8 - IL_0072: ldarg.2 - IL_0073: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/Key::Equals(object, + IL_0061: ldloc.3 + IL_0062: ldloc.s V_7 + IL_0064: ldarg.2 + IL_0065: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key, class [runtime]System.Collections.IEqualityComparer) - IL_0078: ret + IL_006a: ret - IL_0079: ldc.i4.0 - IL_007a: ret + IL_006b: ldc.i4.0 + IL_006c: ret - IL_007b: ldc.i4.0 - IL_007c: ret + IL_006d: ldc.i4.0 + IL_006e: ret - IL_007d: ldc.i4.0 - IL_007e: ret + IL_006f: ldc.i4.0 + IL_0070: ret - IL_007f: ldarg.1 - IL_0080: ldnull - IL_0081: cgt.un - IL_0083: ldc.i4.0 - IL_0084: ceq - IL_0086: ret + IL_0071: ldarg.1 + IL_0072: ldnull + IL_0073: cgt.un + IL_0075: ldc.i4.0 + IL_0076: ceq + IL_0078: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1157,8 +1178,7 @@ IL_003e: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1260,7 +1280,7 @@ IL_0046: ldloc.1 IL_0047: ldloc.2 IL_0048: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() - IL_004d: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::Equals(object, + IL_004d: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys, class [runtime]System.Collections.IEqualityComparer) IL_0052: stloc.0 IL_0053: ldloc.3 @@ -1345,8 +1365,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1357,8 +1376,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals09.fsx.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals09.fsx.il.netcore.bsl index ee415a9bb73..9d131774ce5 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals09.fsx.il.netcore.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals09.fsx.il.netcore.bsl @@ -105,8 +105,7 @@ IL_0014: ret } - .method public hidebysig instance int32 - get_Item1() cil managed + .method public hidebysig instance int32 get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -117,8 +116,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Item2() cil managed + .method public hidebysig instance int32 get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -129,8 +127,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -142,8 +139,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -157,8 +153,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -171,8 +166,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -255,8 +249,7 @@ IL_0068: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -354,8 +347,7 @@ IL_006d: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -406,8 +398,7 @@ IL_0038: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -418,60 +409,80 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_0, - class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_1, - class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_2) + class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_1) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0034 + IL_0001: brfalse.s IL_002d IL_0003: ldarg.1 - IL_0004: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/Key + IL_0004: brfalse.s IL_002b + + IL_0006: ldarg.0 + IL_0007: pop + IL_0008: ldarg.0 IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0032 + IL_000a: ldarg.1 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item1 + IL_0012: ldloc.1 + IL_0013: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item1 + IL_0018: bne.un.s IL_0029 - IL_000d: ldarg.0 - IL_000e: pop - IL_000f: ldarg.0 - IL_0010: stloc.1 - IL_0011: ldloc.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item1 - IL_0019: ldloc.2 - IL_001a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item1 - IL_001f: bne.un.s IL_0030 - - IL_0021: ldloc.1 - IL_0022: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item2 - IL_0027: ldloc.2 - IL_0028: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item2 - IL_002d: ceq - IL_002f: ret - - IL_0030: ldc.i4.0 - IL_0031: ret - - IL_0032: ldc.i4.0 - IL_0033: ret - - IL_0034: ldarg.1 - IL_0035: ldnull - IL_0036: cgt.un - IL_0038: ldc.i4.0 - IL_0039: ceq - IL_003b: ret + IL_001a: ldloc.0 + IL_001b: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item2 + IL_0020: ldloc.1 + IL_0021: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/Key::item2 + IL_0026: ceq + IL_0028: ret + + IL_0029: ldc.i4.0 + IL_002a: ret + + IL_002b: ldc.i4.0 + IL_002c: ret + + IL_002d: ldarg.1 + IL_002e: ldnull + IL_002f: cgt.un + IL_0031: ldc.i4.0 + IL_0032: ceq + IL_0034: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/Key + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -517,8 +528,7 @@ IL_0034: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -625,8 +635,7 @@ IL_0014: ret } - .method public hidebysig instance class assembly/EqualsMicroPerfAndCodeGenerationTests/Key - get_Item1() cil managed + .method public hidebysig instance class assembly/EqualsMicroPerfAndCodeGenerationTests/Key get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -637,8 +646,7 @@ IL_0006: ret } - .method public hidebysig instance class [runtime]System.Tuple`2 - get_Item2() cil managed + .method public hidebysig instance class [runtime]System.Tuple`2 get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -649,8 +657,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -662,8 +669,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -677,8 +683,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -691,8 +696,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -800,8 +804,7 @@ IL_009f: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -924,8 +927,7 @@ IL_00a4: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1002,8 +1004,7 @@ IL_0067: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1014,101 +1015,121 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 5 .locals init (class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_0, class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_1, - class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_2, + class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_2, class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_3, - class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_4, + class [runtime]System.Tuple`2 V_4, class [runtime]System.Tuple`2 V_5, - class [runtime]System.Tuple`2 V_6, - class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_7, - class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_8) + class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_6, + class assembly/EqualsMicroPerfAndCodeGenerationTests/Key V_7) IL_0000: ldarg.0 - IL_0001: brfalse IL_007f + IL_0001: brfalse.s IL_0071 - IL_0006: ldarg.1 - IL_0007: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_007d + IL_0003: ldarg.1 + IL_0004: brfalse.s IL_006f - IL_0010: ldarg.0 - IL_0011: pop - IL_0012: ldarg.0 - IL_0013: stloc.1 - IL_0014: ldloc.0 - IL_0015: stloc.2 - IL_0016: ldloc.1 - IL_0017: ldfld class assembly/EqualsMicroPerfAndCodeGenerationTests/Key assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_001c: stloc.3 - IL_001d: ldloc.2 - IL_001e: ldfld class assembly/EqualsMicroPerfAndCodeGenerationTests/Key assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_0023: stloc.s V_4 - IL_0025: ldloc.3 - IL_0026: ldloc.s V_4 - IL_0028: ldarg.2 - IL_0029: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/Key::Equals(object, + IL_0006: ldarg.0 + IL_0007: pop + IL_0008: ldarg.0 + IL_0009: stloc.0 + IL_000a: ldarg.1 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: ldfld class assembly/EqualsMicroPerfAndCodeGenerationTests/Key assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_0012: stloc.2 + IL_0013: ldloc.1 + IL_0014: ldfld class assembly/EqualsMicroPerfAndCodeGenerationTests/Key assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_0019: stloc.3 + IL_001a: ldloc.2 + IL_001b: ldloc.3 + IL_001c: ldarg.2 + IL_001d: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key, class [runtime]System.Collections.IEqualityComparer) - IL_002e: brfalse.s IL_007b - - IL_0030: ldloc.1 - IL_0031: ldfld class [runtime]System.Tuple`2 assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_0036: stloc.s V_5 - IL_0038: ldloc.2 - IL_0039: ldfld class [runtime]System.Tuple`2 assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_003e: stloc.s V_6 - IL_0040: ldloc.s V_5 - IL_0042: call instance !0 class [runtime]System.Tuple`2::get_Item1() - IL_0047: stloc.3 - IL_0048: ldloc.s V_5 - IL_004a: call instance !1 class [runtime]System.Tuple`2::get_Item2() - IL_004f: stloc.s V_4 - IL_0051: ldloc.s V_6 - IL_0053: call instance !0 class [runtime]System.Tuple`2::get_Item1() - IL_0058: stloc.s V_7 - IL_005a: ldloc.s V_6 - IL_005c: call instance !1 class [runtime]System.Tuple`2::get_Item2() - IL_0061: stloc.s V_8 - IL_0063: ldloc.3 - IL_0064: ldloc.s V_7 - IL_0066: ldarg.2 - IL_0067: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/Key::Equals(object, + IL_0022: brfalse.s IL_006d + + IL_0024: ldloc.0 + IL_0025: ldfld class [runtime]System.Tuple`2 assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_002a: stloc.s V_4 + IL_002c: ldloc.1 + IL_002d: ldfld class [runtime]System.Tuple`2 assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_0032: stloc.s V_5 + IL_0034: ldloc.s V_4 + IL_0036: call instance !0 class [runtime]System.Tuple`2::get_Item1() + IL_003b: stloc.2 + IL_003c: ldloc.s V_4 + IL_003e: call instance !1 class [runtime]System.Tuple`2::get_Item2() + IL_0043: stloc.3 + IL_0044: ldloc.s V_5 + IL_0046: call instance !0 class [runtime]System.Tuple`2::get_Item1() + IL_004b: stloc.s V_6 + IL_004d: ldloc.s V_5 + IL_004f: call instance !1 class [runtime]System.Tuple`2::get_Item2() + IL_0054: stloc.s V_7 + IL_0056: ldloc.2 + IL_0057: ldloc.s V_6 + IL_0059: ldarg.2 + IL_005a: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key, class [runtime]System.Collections.IEqualityComparer) - IL_006c: brfalse.s IL_0079 + IL_005f: brfalse.s IL_006b - IL_006e: ldloc.s V_4 - IL_0070: ldloc.s V_8 - IL_0072: ldarg.2 - IL_0073: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/Key::Equals(object, + IL_0061: ldloc.3 + IL_0062: ldloc.s V_7 + IL_0064: ldarg.2 + IL_0065: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/Key, class [runtime]System.Collections.IEqualityComparer) - IL_0078: ret + IL_006a: ret - IL_0079: ldc.i4.0 - IL_007a: ret + IL_006b: ldc.i4.0 + IL_006c: ret - IL_007b: ldc.i4.0 - IL_007c: ret + IL_006d: ldc.i4.0 + IL_006e: ret - IL_007d: ldc.i4.0 - IL_007e: ret + IL_006f: ldc.i4.0 + IL_0070: ret - IL_007f: ldarg.1 - IL_0080: ldnull - IL_0081: cgt.un - IL_0083: ldc.i4.0 - IL_0084: ceq - IL_0086: ret + IL_0071: ldarg.1 + IL_0072: ldnull + IL_0073: cgt.un + IL_0075: ldc.i4.0 + IL_0076: ceq + IL_0078: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1157,8 +1178,7 @@ IL_003e: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1260,7 +1280,7 @@ IL_0046: ldloc.1 IL_0047: ldloc.2 IL_0048: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() - IL_004d: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::Equals(object, + IL_004d: callvirt instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::Equals(class assembly/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys, class [runtime]System.Collections.IEqualityComparer) IL_0052: stloc.0 IL_0053: ldloc.3 diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals10.fsx b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals10.fsx new file mode 100644 index 00000000000..7a21560a311 --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals10.fsx @@ -0,0 +1,8 @@ +module EqualsMicroPerfAndCodeGenerationTests = + + [] + type SomeStruct(v: int, u: int) = + member _.V = v + member _.U = u + + SomeStruct(1, 2) = SomeStruct(2, 3) |> ignore \ No newline at end of file diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals10.fsx.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals10.fsx.il.net472.bsl new file mode 100644 index 00000000000..dcc4056f339 --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals10.fsx.il.net472.bsl @@ -0,0 +1,498 @@ + + + + + +.assembly extern runtime { } +.assembly extern FSharp.Core { } +.assembly assembly +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, + int32, + int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + + + + + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.mresource public FSharpSignatureData.assembly +{ + + +} +.mresource public FSharpOptimizationData.assembly +{ + + +} +.module assembly.exe + +.imagebase {value} +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 +.corflags 0x00000001 + + + + + +.class public abstract auto ansi sealed assembly + extends [runtime]System.Object +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class abstract auto ansi sealed nested public EqualsMicroPerfAndCodeGenerationTests + extends [runtime]System.Object + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class sequential ansi serializable sealed nested public SomeStruct + extends [runtime]System.ValueType + implements class [runtime]System.IEquatable`1, + [runtime]System.Collections.IStructuralEquatable, + class [runtime]System.IComparable`1, + [runtime]System.IComparable, + [runtime]System.Collections.IStructuralComparable + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.StructAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) + .field assembly int32 v + .field assembly int32 u + .method public hidebysig virtual final instance int32 CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (int32 V_0, + class [runtime]System.Collections.IComparer V_1, + int32 V_2, + int32 V_3) + IL_0000: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0005: stloc.1 + IL_0006: ldarg.0 + IL_0007: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_000c: stloc.2 + IL_000d: ldarga.s obj + IL_000f: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0014: stloc.3 + IL_0015: ldloc.2 + IL_0016: ldloc.3 + IL_0017: cgt + IL_0019: ldloc.2 + IL_001a: ldloc.3 + IL_001b: clt + IL_001d: sub + IL_001e: stloc.0 + IL_001f: ldloc.0 + IL_0020: ldc.i4.0 + IL_0021: bge.s IL_0025 + + IL_0023: ldloc.0 + IL_0024: ret + + IL_0025: ldloc.0 + IL_0026: ldc.i4.0 + IL_0027: ble.s IL_002b + + IL_0029: ldloc.0 + IL_002a: ret + + IL_002b: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0030: stloc.1 + IL_0031: ldarg.0 + IL_0032: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_0037: stloc.2 + IL_0038: ldarga.s obj + IL_003a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_003f: stloc.3 + IL_0040: ldloc.2 + IL_0041: ldloc.3 + IL_0042: cgt + IL_0044: ldloc.2 + IL_0045: ldloc.3 + IL_0046: clt + IL_0048: sub + IL_0049: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_0007: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct) + IL_000c: ret + } + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [runtime]System.Collections.IComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct V_0, + int32 V_1, + int32 V_2, + int32 V_3) + IL_0000: ldarg.1 + IL_0001: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_000d: stloc.2 + IL_000e: ldloca.s V_0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0015: stloc.3 + IL_0016: ldloc.2 + IL_0017: ldloc.3 + IL_0018: cgt + IL_001a: ldloc.2 + IL_001b: ldloc.3 + IL_001c: clt + IL_001e: sub + IL_001f: stloc.1 + IL_0020: ldloc.1 + IL_0021: ldc.i4.0 + IL_0022: bge.s IL_0026 + + IL_0024: ldloc.1 + IL_0025: ret + + IL_0026: ldloc.1 + IL_0027: ldc.i4.0 + IL_0028: ble.s IL_002c + + IL_002a: ldloc.1 + IL_002b: ret + + IL_002c: ldarg.0 + IL_002d: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_0032: stloc.2 + IL_0033: ldloca.s V_0 + IL_0035: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_003a: stloc.3 + IL_003b: ldloc.2 + IL_003c: ldloc.3 + IL_003d: cgt + IL_003f: ldloc.2 + IL_0040: ldloc.3 + IL_0041: clt + IL_0043: sub + IL_0044: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 7 + .locals init (int32 V_0) + IL_0000: ldc.i4.0 + IL_0001: stloc.0 + IL_0002: ldc.i4 0x9e3779b9 + IL_0007: ldarg.0 + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_000d: ldloc.0 + IL_000e: ldc.i4.6 + IL_000f: shl + IL_0010: ldloc.0 + IL_0011: ldc.i4.2 + IL_0012: shr + IL_0013: add + IL_0014: add + IL_0015: add + IL_0016: stloc.0 + IL_0017: ldc.i4 0x9e3779b9 + IL_001c: ldarg.0 + IL_001d: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0022: ldloc.0 + IL_0023: ldc.i4.6 + IL_0024: shl + IL_0025: ldloc.0 + IL_0026: ldc.i4.2 + IL_0027: shr + IL_0028: add + IL_0029: add + IL_002a: add + IL_002b: stloc.0 + IL_002c: ldloc.0 + IL_002d: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::GetHashCode(class [runtime]System.Collections.IEqualityComparer) + IL_000b: ret + } + + .method public hidebysig instance bool + Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0006: ldarga.s obj + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_000d: bne.un.s IL_001f + + IL_000f: ldarg.0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_0015: ldarga.s obj + IL_0017: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_0006: brfalse.s IL_0018 + + IL_0008: ldarg.1 + IL_0009: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_000e: stloc.0 + IL_000f: ldarg.0 + IL_0010: ldloc.0 + IL_0011: ldarg.2 + IL_0012: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct, + class [runtime]System.Collections.IEqualityComparer) + IL_0017: ret + + IL_0018: ldc.i4.0 + IL_0019: ret + } + + .method public specialname rtspecialname + instance void .ctor(int32 v, + int32 u) cil managed + { + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: stfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0007: ldarg.0 + IL_0008: ldarg.2 + IL_0009: stfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_000e: ret + } + + .method public hidebysig specialname instance int32 get_V() cil managed + { + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0006: ret + } + + .method public hidebysig specialname instance int32 get_U() cil managed + { + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_0006: ret + } + + .method public hidebysig virtual final instance bool Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0006: ldarga.s obj + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_000d: bne.un.s IL_001f + + IL_000f: ldarg.0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_0015: ldarga.s obj + IL_0017: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + } + + .method public hidebysig virtual final instance bool Equals(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_0006: brfalse.s IL_0015 + + IL_0008: ldarg.0 + IL_0009: ldarg.1 + IL_000a: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_000f: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct) + IL_0014: ret + + IL_0015: ldc.i4.0 + IL_0016: ret + } + + .property instance int32 V() + { + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::get_V() + } + .property instance int32 U() + { + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::get_U() + } + } + + .field static assembly bool arg@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct x@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct y@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method assembly specialname static bool get_arg@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct get_x@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct get_y@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0005: ret + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: ldc.i4.2 + IL_0002: newobj instance void assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::.ctor(int32, + int32) + IL_0007: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_000c: ldc.i4.2 + IL_000d: ldc.i4.3 + IL_000e: newobj instance void assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::.ctor(int32, + int32) + IL_0013: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0018: ldsflda valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_001d: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + IL_0022: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0027: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct, + class [runtime]System.Collections.IEqualityComparer) + IL_002c: stsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0031: ret + } + + .property bool arg@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get bool assembly/EqualsMicroPerfAndCodeGenerationTests::get_arg@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + x@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::get_x@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + y@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + } + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: call void assembly/EqualsMicroPerfAndCodeGenerationTests::staticInitialization@() + IL_0005: ret + } + +} + +.class private abstract auto ansi sealed ''.$assembly$fsx + extends [runtime]System.Object +{ + .field static assembly int32 init@ + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public static void main@() cil managed + { + .entrypoint + + .maxstack 8 + IL_0000: call void assembly::staticInitialization@() + IL_0005: ret + } + +} + + + + + + diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals10.fsx.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals10.fsx.il.netcore.bsl new file mode 100644 index 00000000000..dcc4056f339 --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals10.fsx.il.netcore.bsl @@ -0,0 +1,498 @@ + + + + + +.assembly extern runtime { } +.assembly extern FSharp.Core { } +.assembly assembly +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, + int32, + int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + + + + + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.mresource public FSharpSignatureData.assembly +{ + + +} +.mresource public FSharpOptimizationData.assembly +{ + + +} +.module assembly.exe + +.imagebase {value} +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 +.corflags 0x00000001 + + + + + +.class public abstract auto ansi sealed assembly + extends [runtime]System.Object +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class abstract auto ansi sealed nested public EqualsMicroPerfAndCodeGenerationTests + extends [runtime]System.Object + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class sequential ansi serializable sealed nested public SomeStruct + extends [runtime]System.ValueType + implements class [runtime]System.IEquatable`1, + [runtime]System.Collections.IStructuralEquatable, + class [runtime]System.IComparable`1, + [runtime]System.IComparable, + [runtime]System.Collections.IStructuralComparable + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.StructAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) + .field assembly int32 v + .field assembly int32 u + .method public hidebysig virtual final instance int32 CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (int32 V_0, + class [runtime]System.Collections.IComparer V_1, + int32 V_2, + int32 V_3) + IL_0000: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0005: stloc.1 + IL_0006: ldarg.0 + IL_0007: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_000c: stloc.2 + IL_000d: ldarga.s obj + IL_000f: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0014: stloc.3 + IL_0015: ldloc.2 + IL_0016: ldloc.3 + IL_0017: cgt + IL_0019: ldloc.2 + IL_001a: ldloc.3 + IL_001b: clt + IL_001d: sub + IL_001e: stloc.0 + IL_001f: ldloc.0 + IL_0020: ldc.i4.0 + IL_0021: bge.s IL_0025 + + IL_0023: ldloc.0 + IL_0024: ret + + IL_0025: ldloc.0 + IL_0026: ldc.i4.0 + IL_0027: ble.s IL_002b + + IL_0029: ldloc.0 + IL_002a: ret + + IL_002b: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0030: stloc.1 + IL_0031: ldarg.0 + IL_0032: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_0037: stloc.2 + IL_0038: ldarga.s obj + IL_003a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_003f: stloc.3 + IL_0040: ldloc.2 + IL_0041: ldloc.3 + IL_0042: cgt + IL_0044: ldloc.2 + IL_0045: ldloc.3 + IL_0046: clt + IL_0048: sub + IL_0049: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_0007: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct) + IL_000c: ret + } + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [runtime]System.Collections.IComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct V_0, + int32 V_1, + int32 V_2, + int32 V_3) + IL_0000: ldarg.1 + IL_0001: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_000d: stloc.2 + IL_000e: ldloca.s V_0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0015: stloc.3 + IL_0016: ldloc.2 + IL_0017: ldloc.3 + IL_0018: cgt + IL_001a: ldloc.2 + IL_001b: ldloc.3 + IL_001c: clt + IL_001e: sub + IL_001f: stloc.1 + IL_0020: ldloc.1 + IL_0021: ldc.i4.0 + IL_0022: bge.s IL_0026 + + IL_0024: ldloc.1 + IL_0025: ret + + IL_0026: ldloc.1 + IL_0027: ldc.i4.0 + IL_0028: ble.s IL_002c + + IL_002a: ldloc.1 + IL_002b: ret + + IL_002c: ldarg.0 + IL_002d: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_0032: stloc.2 + IL_0033: ldloca.s V_0 + IL_0035: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_003a: stloc.3 + IL_003b: ldloc.2 + IL_003c: ldloc.3 + IL_003d: cgt + IL_003f: ldloc.2 + IL_0040: ldloc.3 + IL_0041: clt + IL_0043: sub + IL_0044: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 7 + .locals init (int32 V_0) + IL_0000: ldc.i4.0 + IL_0001: stloc.0 + IL_0002: ldc.i4 0x9e3779b9 + IL_0007: ldarg.0 + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_000d: ldloc.0 + IL_000e: ldc.i4.6 + IL_000f: shl + IL_0010: ldloc.0 + IL_0011: ldc.i4.2 + IL_0012: shr + IL_0013: add + IL_0014: add + IL_0015: add + IL_0016: stloc.0 + IL_0017: ldc.i4 0x9e3779b9 + IL_001c: ldarg.0 + IL_001d: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0022: ldloc.0 + IL_0023: ldc.i4.6 + IL_0024: shl + IL_0025: ldloc.0 + IL_0026: ldc.i4.2 + IL_0027: shr + IL_0028: add + IL_0029: add + IL_002a: add + IL_002b: stloc.0 + IL_002c: ldloc.0 + IL_002d: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::GetHashCode(class [runtime]System.Collections.IEqualityComparer) + IL_000b: ret + } + + .method public hidebysig instance bool + Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0006: ldarga.s obj + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_000d: bne.un.s IL_001f + + IL_000f: ldarg.0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_0015: ldarga.s obj + IL_0017: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_0006: brfalse.s IL_0018 + + IL_0008: ldarg.1 + IL_0009: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_000e: stloc.0 + IL_000f: ldarg.0 + IL_0010: ldloc.0 + IL_0011: ldarg.2 + IL_0012: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct, + class [runtime]System.Collections.IEqualityComparer) + IL_0017: ret + + IL_0018: ldc.i4.0 + IL_0019: ret + } + + .method public specialname rtspecialname + instance void .ctor(int32 v, + int32 u) cil managed + { + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: stfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0007: ldarg.0 + IL_0008: ldarg.2 + IL_0009: stfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_000e: ret + } + + .method public hidebysig specialname instance int32 get_V() cil managed + { + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0006: ret + } + + .method public hidebysig specialname instance int32 get_U() cil managed + { + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_0006: ret + } + + .method public hidebysig virtual final instance bool Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0006: ldarga.s obj + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_000d: bne.un.s IL_001f + + IL_000f: ldarg.0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_0015: ldarga.s obj + IL_0017: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + } + + .method public hidebysig virtual final instance bool Equals(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_0006: brfalse.s IL_0015 + + IL_0008: ldarg.0 + IL_0009: ldarg.1 + IL_000a: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_000f: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct) + IL_0014: ret + + IL_0015: ldc.i4.0 + IL_0016: ret + } + + .property instance int32 V() + { + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::get_V() + } + .property instance int32 U() + { + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::get_U() + } + } + + .field static assembly bool arg@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct x@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct y@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method assembly specialname static bool get_arg@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct get_x@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct get_y@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0005: ret + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: ldc.i4.2 + IL_0002: newobj instance void assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::.ctor(int32, + int32) + IL_0007: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_000c: ldc.i4.2 + IL_000d: ldc.i4.3 + IL_000e: newobj instance void assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::.ctor(int32, + int32) + IL_0013: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0018: ldsflda valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_001d: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + IL_0022: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0027: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct, + class [runtime]System.Collections.IEqualityComparer) + IL_002c: stsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0031: ret + } + + .property bool arg@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get bool assembly/EqualsMicroPerfAndCodeGenerationTests::get_arg@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + x@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::get_x@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + y@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + } + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: call void assembly/EqualsMicroPerfAndCodeGenerationTests::staticInitialization@() + IL_0005: ret + } + +} + +.class private abstract auto ansi sealed ''.$assembly$fsx + extends [runtime]System.Object +{ + .field static assembly int32 init@ + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public static void main@() cil managed + { + .entrypoint + + .maxstack 8 + IL_0000: call void assembly::staticInitialization@() + IL_0005: ret + } + +} + + + + + + diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals11.fsx b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals11.fsx new file mode 100644 index 00000000000..c56ea609dd3 --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals11.fsx @@ -0,0 +1,6 @@ +module EqualsMicroPerfAndCodeGenerationTests = + + [] + type SomeUnion = SomeUnion of int * int + + SomeUnion (1, 2) = SomeUnion (2, 3) |> ignore \ No newline at end of file diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals11.fsx.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals11.fsx.il.net472.bsl new file mode 100644 index 00000000000..45751887444 --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals11.fsx.il.net472.bsl @@ -0,0 +1,586 @@ + + + + + +.assembly extern runtime { } +.assembly extern FSharp.Core { } +.assembly assembly +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, + int32, + int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + + + + + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.mresource public FSharpSignatureData.assembly +{ + + +} +.mresource public FSharpOptimizationData.assembly +{ + + +} +.module assembly.exe + +.imagebase {value} +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 +.corflags 0x00000001 + + + + + +.class public abstract auto ansi sealed assembly + extends [runtime]System.Object +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class abstract auto ansi sealed nested public EqualsMicroPerfAndCodeGenerationTests + extends [runtime]System.Object + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class sequential autochar serializable sealed nested public beforefieldinit SomeUnion + extends [runtime]System.ValueType + implements class [runtime]System.IEquatable`1, + [runtime]System.Collections.IStructuralEquatable, + class [runtime]System.IComparable`1, + [runtime]System.IComparable, + [runtime]System.Collections.IStructuralComparable + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.StructAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerDisplayAttribute::.ctor(string) = ( 01 00 15 7B 5F 5F 44 65 62 75 67 44 69 73 70 6C + 61 79 28 29 2C 6E 71 7D 00 00 ) + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 01 00 00 00 00 00 ) + .field assembly int32 item1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .field assembly int32 item2 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + NewSomeUnion(int32 item1, + int32 item2) cil managed + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) + + .maxstack 3 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion V_0) + IL_0000: ldloca.s V_0 + IL_0002: initobj assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0008: ldloca.s V_0 + IL_000a: ldarg.0 + IL_000b: stfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_0010: ldloca.s V_0 + IL_0012: ldarg.1 + IL_0013: stfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0018: ldloc.0 + IL_0019: ret + } + + .method public hidebysig instance int32 get_Item1() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_0006: ret + } + + .method public hidebysig instance int32 get_Item2() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0006: ret + } + + .method public hidebysig instance int32 get_Tag() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: ldc.i4.0 + IL_0003: ret + } + + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldstr "%+0.8A" + IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,string>::.ctor(string) + IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_000f: ldarg.0 + IL_0010: ldobj assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0015: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0) + IL_001a: ret + } + + .method public strict virtual instance string ToString() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldstr "%+A" + IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion>::.ctor(string) + IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_000f: ldarg.0 + IL_0010: ldobj assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0015: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0) + IL_001a: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (int32 V_0, + class [runtime]System.Collections.IComparer V_1, + int32 V_2, + int32 V_3) + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0007: stloc.1 + IL_0008: ldarg.0 + IL_0009: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_000e: stloc.2 + IL_000f: ldarga.s obj + IL_0011: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_0016: stloc.3 + IL_0017: ldloc.2 + IL_0018: ldloc.3 + IL_0019: cgt + IL_001b: ldloc.2 + IL_001c: ldloc.3 + IL_001d: clt + IL_001f: sub + IL_0020: stloc.0 + IL_0021: ldloc.0 + IL_0022: ldc.i4.0 + IL_0023: bge.s IL_0027 + + IL_0025: ldloc.0 + IL_0026: ret + + IL_0027: ldloc.0 + IL_0028: ldc.i4.0 + IL_0029: ble.s IL_002d + + IL_002b: ldloc.0 + IL_002c: ret + + IL_002d: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0032: stloc.1 + IL_0033: ldarg.0 + IL_0034: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0039: stloc.2 + IL_003a: ldarga.s obj + IL_003c: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0041: stloc.3 + IL_0042: ldloc.2 + IL_0043: ldloc.3 + IL_0044: cgt + IL_0046: ldloc.2 + IL_0047: ldloc.3 + IL_0048: clt + IL_004a: sub + IL_004b: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0007: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion) + IL_000c: ret + } + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [runtime]System.Collections.IComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion V_0, + int32 V_1, + int32 V_2, + int32 V_3) + IL_0000: ldarg.1 + IL_0001: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: pop + IL_0009: ldarg.0 + IL_000a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_000f: stloc.2 + IL_0010: ldloca.s V_0 + IL_0012: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_0017: stloc.3 + IL_0018: ldloc.2 + IL_0019: ldloc.3 + IL_001a: cgt + IL_001c: ldloc.2 + IL_001d: ldloc.3 + IL_001e: clt + IL_0020: sub + IL_0021: stloc.1 + IL_0022: ldloc.1 + IL_0023: ldc.i4.0 + IL_0024: bge.s IL_0028 + + IL_0026: ldloc.1 + IL_0027: ret + + IL_0028: ldloc.1 + IL_0029: ldc.i4.0 + IL_002a: ble.s IL_002e + + IL_002c: ldloc.1 + IL_002d: ret + + IL_002e: ldarg.0 + IL_002f: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0034: stloc.2 + IL_0035: ldloca.s V_0 + IL_0037: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_003c: stloc.3 + IL_003d: ldloc.2 + IL_003e: ldloc.3 + IL_003f: cgt + IL_0041: ldloc.2 + IL_0042: ldloc.3 + IL_0043: clt + IL_0045: sub + IL_0046: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 7 + .locals init (int32 V_0) + IL_0000: ldc.i4.0 + IL_0001: stloc.0 + IL_0002: ldarg.0 + IL_0003: pop + IL_0004: ldc.i4.0 + IL_0005: stloc.0 + IL_0006: ldc.i4 0x9e3779b9 + IL_000b: ldarg.0 + IL_000c: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0011: ldloc.0 + IL_0012: ldc.i4.6 + IL_0013: shl + IL_0014: ldloc.0 + IL_0015: ldc.i4.2 + IL_0016: shr + IL_0017: add + IL_0018: add + IL_0019: add + IL_001a: stloc.0 + IL_001b: ldc.i4 0x9e3779b9 + IL_0020: ldarg.0 + IL_0021: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_0026: ldloc.0 + IL_0027: ldc.i4.6 + IL_0028: shl + IL_0029: ldloc.0 + IL_002a: ldc.i4.2 + IL_002b: shr + IL_002c: add + IL_002d: add + IL_002e: add + IL_002f: stloc.0 + IL_0030: ldloc.0 + IL_0031: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::GetHashCode(class [runtime]System.Collections.IEqualityComparer) + IL_000b: ret + } + + .method public hidebysig instance bool + Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: ldarg.0 + IL_0003: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_0008: ldarga.s obj + IL_000a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_000f: bne.un.s IL_0021 + + IL_0011: ldarg.0 + IL_0012: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0017: ldarga.s obj + IL_0019: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_001e: ceq + IL_0020: ret + + IL_0021: ldc.i4.0 + IL_0022: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0006: brfalse.s IL_0018 + + IL_0008: ldarg.1 + IL_0009: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_000e: stloc.0 + IL_000f: ldarg.0 + IL_0010: ldloc.0 + IL_0011: ldarg.2 + IL_0012: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion, + class [runtime]System.Collections.IEqualityComparer) + IL_0017: ret + + IL_0018: ldc.i4.0 + IL_0019: ret + } + + .method public hidebysig virtual final instance bool Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: ldarg.0 + IL_0003: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_0008: ldarga.s obj + IL_000a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_000f: bne.un.s IL_0021 + + IL_0011: ldarg.0 + IL_0012: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0017: ldarga.s obj + IL_0019: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_001e: ceq + IL_0020: ret + + IL_0021: ldc.i4.0 + IL_0022: ret + } + + .method public hidebysig virtual final instance bool Equals(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0006: brfalse.s IL_0015 + + IL_0008: ldarg.0 + IL_0009: ldarg.1 + IL_000a: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_000f: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion) + IL_0014: ret + + IL_0015: ldc.i4.0 + IL_0016: ret + } + + .property instance int32 Tag() + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::get_Tag() + } + .property instance int32 Item1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32, + int32) = ( 01 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::get_Item1() + } + .property instance int32 Item2() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32, + int32) = ( 01 00 04 00 00 00 00 00 00 00 01 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::get_Item2() + } + } + + .field static assembly bool arg@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion x@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion y@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method assembly specialname static bool get_arg@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion get_x@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion get_y@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0005: ret + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: ldc.i4.2 + IL_0002: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::NewSomeUnion(int32, + int32) + IL_0007: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_000c: ldc.i4.2 + IL_000d: ldc.i4.3 + IL_000e: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::NewSomeUnion(int32, + int32) + IL_0013: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0018: ldsflda valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_001d: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + IL_0022: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0027: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion, + class [runtime]System.Collections.IEqualityComparer) + IL_002c: stsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0031: ret + } + + .property bool arg@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get bool assembly/EqualsMicroPerfAndCodeGenerationTests::get_arg@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + x@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::get_x@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + y@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + } + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: call void assembly/EqualsMicroPerfAndCodeGenerationTests::staticInitialization@() + IL_0005: ret + } + +} + +.class private abstract auto ansi sealed ''.$assembly$fsx + extends [runtime]System.Object +{ + .field static assembly int32 init@ + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public static void main@() cil managed + { + .entrypoint + + .maxstack 8 + IL_0000: call void assembly::staticInitialization@() + IL_0005: ret + } + +} + + + + + + diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals11.fsx.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals11.fsx.il.netcore.bsl new file mode 100644 index 00000000000..8d1119b95e0 --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals11.fsx.il.netcore.bsl @@ -0,0 +1,586 @@ + + + + + +.assembly extern runtime { } +.assembly extern FSharp.Core { } +.assembly assembly +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, + int32, + int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + + + + + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.mresource public FSharpSignatureData.assembly +{ + + +} +.mresource public FSharpOptimizationData.assembly +{ + + +} +.module assembly.exe + +.imagebase {value} +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 +.corflags 0x00000001 + + + + + +.class public abstract auto ansi sealed assembly + extends [runtime]System.Object +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class abstract auto ansi sealed nested public EqualsMicroPerfAndCodeGenerationTests + extends [runtime]System.Object + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class sequential autochar serializable sealed nested public beforefieldinit SomeUnion + extends [runtime]System.ValueType + implements class [runtime]System.IEquatable`1, + [runtime]System.Collections.IStructuralEquatable, + class [runtime]System.IComparable`1, + [runtime]System.IComparable, + [runtime]System.Collections.IStructuralComparable + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.StructAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerDisplayAttribute::.ctor(string) = ( 01 00 15 7B 5F 5F 44 65 62 75 67 44 69 73 70 6C + 61 79 28 29 2C 6E 71 7D 00 00 ) + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 01 00 00 00 00 00 ) + .field assembly int32 item1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .field assembly int32 item2 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + NewSomeUnion(int32 item1, + int32 item2) cil managed + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) + + .maxstack 3 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion V_0) + IL_0000: ldloca.s V_0 + IL_0002: initobj assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0008: ldloca.s V_0 + IL_000a: ldarg.0 + IL_000b: stfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_0010: ldloca.s V_0 + IL_0012: ldarg.1 + IL_0013: stfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0018: ldloc.0 + IL_0019: ret + } + + .method public hidebysig instance int32 get_Item1() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_0006: ret + } + + .method public hidebysig instance int32 get_Item2() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0006: ret + } + + .method public hidebysig instance int32 get_Tag() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: ldc.i4.0 + IL_0003: ret + } + + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldstr "%+0.8A" + IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,string>::.ctor(string) + IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_000f: ldarg.0 + IL_0010: ldobj assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0015: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0) + IL_001a: ret + } + + .method public strict virtual instance string ToString() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldstr "%+A" + IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion>::.ctor(string) + IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_000f: ldarg.0 + IL_0010: ldobj assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0015: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0) + IL_001a: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (int32 V_0, + class [runtime]System.Collections.IComparer V_1, + int32 V_2, + int32 V_3) + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0007: stloc.1 + IL_0008: ldarg.0 + IL_0009: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_000e: stloc.2 + IL_000f: ldarga.s obj + IL_0011: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_0016: stloc.3 + IL_0017: ldloc.2 + IL_0018: ldloc.3 + IL_0019: cgt + IL_001b: ldloc.2 + IL_001c: ldloc.3 + IL_001d: clt + IL_001f: sub + IL_0020: stloc.0 + IL_0021: ldloc.0 + IL_0022: ldc.i4.0 + IL_0023: bge.s IL_0027 + + IL_0025: ldloc.0 + IL_0026: ret + + IL_0027: ldloc.0 + IL_0028: ldc.i4.0 + IL_0029: ble.s IL_002d + + IL_002b: ldloc.0 + IL_002c: ret + + IL_002d: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0032: stloc.1 + IL_0033: ldarg.0 + IL_0034: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0039: stloc.2 + IL_003a: ldarga.s obj + IL_003c: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0041: stloc.3 + IL_0042: ldloc.2 + IL_0043: ldloc.3 + IL_0044: cgt + IL_0046: ldloc.2 + IL_0047: ldloc.3 + IL_0048: clt + IL_004a: sub + IL_004b: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0007: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion) + IL_000c: ret + } + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [runtime]System.Collections.IComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion V_0, + int32 V_1, + int32 V_2, + int32 V_3) + IL_0000: ldarg.1 + IL_0001: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: pop + IL_0009: ldarg.0 + IL_000a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_000f: stloc.2 + IL_0010: ldloca.s V_0 + IL_0012: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_0017: stloc.3 + IL_0018: ldloc.2 + IL_0019: ldloc.3 + IL_001a: cgt + IL_001c: ldloc.2 + IL_001d: ldloc.3 + IL_001e: clt + IL_0020: sub + IL_0021: stloc.1 + IL_0022: ldloc.1 + IL_0023: ldc.i4.0 + IL_0024: bge.s IL_0028 + + IL_0026: ldloc.1 + IL_0027: ret + + IL_0028: ldloc.1 + IL_0029: ldc.i4.0 + IL_002a: ble.s IL_002e + + IL_002c: ldloc.1 + IL_002d: ret + + IL_002e: ldarg.0 + IL_002f: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0034: stloc.2 + IL_0035: ldloca.s V_0 + IL_0037: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_003c: stloc.3 + IL_003d: ldloc.2 + IL_003e: ldloc.3 + IL_003f: cgt + IL_0041: ldloc.2 + IL_0042: ldloc.3 + IL_0043: clt + IL_0045: sub + IL_0046: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 7 + .locals init (int32 V_0) + IL_0000: ldc.i4.0 + IL_0001: stloc.0 + IL_0002: ldarg.0 + IL_0003: pop + IL_0004: ldc.i4.0 + IL_0005: stloc.0 + IL_0006: ldc.i4 0x9e3779b9 + IL_000b: ldarg.0 + IL_000c: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0011: ldloc.0 + IL_0012: ldc.i4.6 + IL_0013: shl + IL_0014: ldloc.0 + IL_0015: ldc.i4.2 + IL_0016: shr + IL_0017: add + IL_0018: add + IL_0019: add + IL_001a: stloc.0 + IL_001b: ldc.i4 0x9e3779b9 + IL_0020: ldarg.0 + IL_0021: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_0026: ldloc.0 + IL_0027: ldc.i4.6 + IL_0028: shl + IL_0029: ldloc.0 + IL_002a: ldc.i4.2 + IL_002b: shr + IL_002c: add + IL_002d: add + IL_002e: add + IL_002f: stloc.0 + IL_0030: ldloc.0 + IL_0031: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::GetHashCode(class [runtime]System.Collections.IEqualityComparer) + IL_000b: ret + } + + .method public hidebysig instance bool + Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: ldarg.0 + IL_0003: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_0008: ldarga.s obj + IL_000a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_000f: bne.un.s IL_0021 + + IL_0011: ldarg.0 + IL_0012: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0017: ldarga.s obj + IL_0019: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_001e: ceq + IL_0020: ret + + IL_0021: ldc.i4.0 + IL_0022: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0006: brfalse.s IL_0018 + + IL_0008: ldarg.1 + IL_0009: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_000e: stloc.0 + IL_000f: ldarg.0 + IL_0010: ldloc.0 + IL_0011: ldarg.2 + IL_0012: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion, + class [runtime]System.Collections.IEqualityComparer) + IL_0017: ret + + IL_0018: ldc.i4.0 + IL_0019: ret + } + + .method public hidebysig virtual final instance bool Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: ldarg.0 + IL_0003: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_0008: ldarga.s obj + IL_000a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_000f: bne.un.s IL_0021 + + IL_0011: ldarg.0 + IL_0012: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0017: ldarga.s obj + IL_0019: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_001e: ceq + IL_0020: ret + + IL_0021: ldc.i4.0 + IL_0022: ret + } + + .method public hidebysig virtual final instance bool Equals(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0006: brfalse.s IL_0015 + + IL_0008: ldarg.0 + IL_0009: ldarg.1 + IL_000a: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_000f: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion) + IL_0014: ret + + IL_0015: ldc.i4.0 + IL_0016: ret + } + + .property instance int32 Tag() + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::get_Tag() + } + .property instance int32 Item1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32, + int32) = ( 01 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::get_Item1() + } + .property instance int32 Item2() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32, + int32) = ( 01 00 04 00 00 00 00 00 00 00 01 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::get_Item2() + } + } + + .field static assembly bool arg@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion x@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion y@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method assembly specialname static bool get_arg@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion get_x@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion get_y@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0005: ret + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: ldc.i4.2 + IL_0002: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::NewSomeUnion(int32, + int32) + IL_0007: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_000c: ldc.i4.2 + IL_000d: ldc.i4.3 + IL_000e: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::NewSomeUnion(int32, + int32) + IL_0013: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0018: ldsflda valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_001d: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + IL_0022: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0027: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion, + class [runtime]System.Collections.IEqualityComparer) + IL_002c: stsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0031: ret + } + + .property bool arg@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get bool assembly/EqualsMicroPerfAndCodeGenerationTests::get_arg@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + x@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::get_x@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + y@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + } + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: call void assembly/EqualsMicroPerfAndCodeGenerationTests::staticInitialization@() + IL_0005: ret + } + +} + +.class private abstract auto ansi sealed ''.$assembly$fsx + extends [runtime]System.Object +{ + .field static assembly int32 init@ + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public static void main@() cil managed + { + .entrypoint + + .maxstack 8 + IL_0000: call void assembly::staticInitialization@() + IL_0005: ret + } + +} + + + + + + diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals12.fsx b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals12.fsx new file mode 100644 index 00000000000..1c707c9de12 --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals12.fsx @@ -0,0 +1,6 @@ +module EqualsMicroPerfAndCodeGenerationTests = + + [] + type SomeRecord = { V: int; U: int } + + { V = 1; U = 2 } = { V = 2; U = 3 } |> ignore \ No newline at end of file diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals12.fsx.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals12.fsx.il.net472.bsl new file mode 100644 index 00000000000..0d5ee1ea01d --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals12.fsx.il.net472.bsl @@ -0,0 +1,624 @@ + + + + + +.assembly extern runtime { } +.assembly extern FSharp.Core { } +.assembly assembly +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, + int32, + int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + + + + + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.mresource public FSharpSignatureData.assembly +{ + + +} +.mresource public FSharpOptimizationData.assembly +{ + + +} +.module assembly.exe + +.imagebase {value} +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 +.corflags 0x00000001 + + + + + +.class public abstract auto ansi sealed assembly + extends [runtime]System.Object +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class abstract auto ansi sealed nested public EqualsMicroPerfAndCodeGenerationTests + extends [runtime]System.Object + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class sequential ansi serializable sealed nested public SomeRecord + extends [runtime]System.ValueType + implements class [runtime]System.IEquatable`1, + [runtime]System.Collections.IStructuralEquatable, + class [runtime]System.IComparable`1, + [runtime]System.IComparable, + [runtime]System.Collections.IStructuralComparable + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.StructAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 02 00 00 00 00 00 ) + .field assembly int32 V@ + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field assembly int32 U@ + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method public hidebysig specialname instance int32 get_V() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.IsReadOnlyAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0006: ret + } + + .method public hidebysig specialname instance int32 get_U() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.IsReadOnlyAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_0006: ret + } + + .method public specialname rtspecialname + instance void .ctor(int32 v, + int32 u) cil managed + { + .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, + class [runtime]System.Type) = ( 01 00 60 06 00 00 39 45 71 75 61 6C 73 31 32 2B + 45 71 75 61 6C 73 4D 69 63 72 6F 50 65 72 66 41 + 6E 64 43 6F 64 65 47 65 6E 65 72 61 74 69 6F 6E + 54 65 73 74 73 2B 53 6F 6D 65 52 65 63 6F 72 64 + 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: stfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0007: ldarg.0 + IL_0008: ldarg.2 + IL_0009: stfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_000e: ret + } + + .method public strict virtual instance string ToString() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldstr "%+A" + IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord>::.ctor(string) + IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_000f: ldarg.0 + IL_0010: ldobj assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_0015: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0) + IL_001a: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (int32 V_0, + class [runtime]System.Collections.IComparer V_1, + int32 V_2, + int32 V_3) + IL_0000: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0005: stloc.1 + IL_0006: ldarg.0 + IL_0007: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_000c: stloc.2 + IL_000d: ldarga.s obj + IL_000f: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0014: stloc.3 + IL_0015: ldloc.2 + IL_0016: ldloc.3 + IL_0017: cgt + IL_0019: ldloc.2 + IL_001a: ldloc.3 + IL_001b: clt + IL_001d: sub + IL_001e: stloc.0 + IL_001f: ldloc.0 + IL_0020: ldc.i4.0 + IL_0021: bge.s IL_0025 + + IL_0023: ldloc.0 + IL_0024: ret + + IL_0025: ldloc.0 + IL_0026: ldc.i4.0 + IL_0027: ble.s IL_002b + + IL_0029: ldloc.0 + IL_002a: ret + + IL_002b: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0030: stloc.1 + IL_0031: ldarg.0 + IL_0032: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_0037: stloc.2 + IL_0038: ldarga.s obj + IL_003a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_003f: stloc.3 + IL_0040: ldloc.2 + IL_0041: ldloc.3 + IL_0042: cgt + IL_0044: ldloc.2 + IL_0045: ldloc.3 + IL_0046: clt + IL_0048: sub + IL_0049: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_0007: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord) + IL_000c: ret + } + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [runtime]System.Collections.IComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord V_0, + int32 V_1, + int32 V_2, + int32 V_3) + IL_0000: ldarg.1 + IL_0001: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_000d: stloc.2 + IL_000e: ldloca.s V_0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0015: stloc.3 + IL_0016: ldloc.2 + IL_0017: ldloc.3 + IL_0018: cgt + IL_001a: ldloc.2 + IL_001b: ldloc.3 + IL_001c: clt + IL_001e: sub + IL_001f: stloc.1 + IL_0020: ldloc.1 + IL_0021: ldc.i4.0 + IL_0022: bge.s IL_0026 + + IL_0024: ldloc.1 + IL_0025: ret + + IL_0026: ldloc.1 + IL_0027: ldc.i4.0 + IL_0028: ble.s IL_002c + + IL_002a: ldloc.1 + IL_002b: ret + + IL_002c: ldarg.0 + IL_002d: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_0032: stloc.2 + IL_0033: ldloca.s V_0 + IL_0035: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_003a: stloc.3 + IL_003b: ldloc.2 + IL_003c: ldloc.3 + IL_003d: cgt + IL_003f: ldloc.2 + IL_0040: ldloc.3 + IL_0041: clt + IL_0043: sub + IL_0044: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 7 + .locals init (int32 V_0) + IL_0000: ldc.i4.0 + IL_0001: stloc.0 + IL_0002: ldc.i4 0x9e3779b9 + IL_0007: ldarg.0 + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_000d: ldloc.0 + IL_000e: ldc.i4.6 + IL_000f: shl + IL_0010: ldloc.0 + IL_0011: ldc.i4.2 + IL_0012: shr + IL_0013: add + IL_0014: add + IL_0015: add + IL_0016: stloc.0 + IL_0017: ldc.i4 0x9e3779b9 + IL_001c: ldarg.0 + IL_001d: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0022: ldloc.0 + IL_0023: ldc.i4.6 + IL_0024: shl + IL_0025: ldloc.0 + IL_0026: ldc.i4.2 + IL_0027: shr + IL_0028: add + IL_0029: add + IL_002a: add + IL_002b: stloc.0 + IL_002c: ldloc.0 + IL_002d: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::GetHashCode(class [runtime]System.Collections.IEqualityComparer) + IL_000b: ret + } + + .method public hidebysig instance bool + Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0006: ldarga.s obj + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_000d: bne.un.s IL_001f + + IL_000f: ldarg.0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_0015: ldarga.s obj + IL_0017: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_0006: brfalse.s IL_0018 + + IL_0008: ldarg.1 + IL_0009: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_000e: stloc.0 + IL_000f: ldarg.0 + IL_0010: ldloc.0 + IL_0011: ldarg.2 + IL_0012: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord, + class [runtime]System.Collections.IEqualityComparer) + IL_0017: ret + + IL_0018: ldc.i4.0 + IL_0019: ret + } + + .method public hidebysig virtual final instance bool Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0006: ldarga.s obj + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_000d: bne.un.s IL_001f + + IL_000f: ldarg.0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_0015: ldarga.s obj + IL_0017: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + } + + .method public hidebysig virtual final instance bool Equals(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_0006: brfalse.s IL_0015 + + IL_0008: ldarg.0 + IL_0009: ldarg.1 + IL_000a: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_000f: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord) + IL_0014: ret + + IL_0015: ldc.i4.0 + IL_0016: ret + } + + .property instance int32 V() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32) = ( 01 00 04 00 00 00 00 00 00 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::get_V() + } + .property instance int32 U() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32) = ( 01 00 04 00 00 00 01 00 00 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::get_U() + } + } + + .field static assembly bool arg@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord x@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord y@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method assembly specialname static bool get_arg@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord get_x@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord get_y@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0005: ret + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: ldc.i4.2 + IL_0002: newobj instance void assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::.ctor(int32, + int32) + IL_0007: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_000c: ldc.i4.2 + IL_000d: ldc.i4.3 + IL_000e: newobj instance void assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::.ctor(int32, + int32) + IL_0013: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0018: ldsflda valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_001d: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + IL_0022: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0027: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord, + class [runtime]System.Collections.IEqualityComparer) + IL_002c: stsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0031: ret + } + + .property bool arg@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get bool assembly/EqualsMicroPerfAndCodeGenerationTests::get_arg@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + x@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::get_x@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + y@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + } + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: call void assembly/EqualsMicroPerfAndCodeGenerationTests::staticInitialization@() + IL_0005: ret + } + +} + +.class private abstract auto ansi sealed ''.$assembly$fsx + extends [runtime]System.Object +{ + .field static assembly int32 init@ + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public static void main@() cil managed + { + .entrypoint + + .maxstack 8 + IL_0000: call void assembly::staticInitialization@() + IL_0005: ret + } + +} + +.class private auto ansi serializable sealed System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes + extends [runtime]System.Enum +{ + .custom instance void [runtime]System.FlagsAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .field public specialname rtspecialname int32 value__ + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes All = int32(0xFFFFFFFF) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes None = int32(0x00000000) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes PublicParameterlessConstructor = int32(0x00000001) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes PublicConstructors = int32(0x00000003) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes NonPublicConstructors = int32(0x00000004) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes PublicMethods = int32(0x00000008) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes NonPublicMethods = int32(0x00000010) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes PublicFields = int32(0x00000020) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes NonPublicFields = int32(0x00000040) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes PublicNestedTypes = int32(0x00000080) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes NonPublicNestedTypes = int32(0x00000100) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes PublicProperties = int32(0x00000200) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes NonPublicProperties = int32(0x00000400) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes PublicEvents = int32(0x00000800) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes NonPublicEvents = int32(0x00001000) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes Interfaces = int32(0x00002000) +} + +.class private auto ansi beforefieldinit System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute + extends [runtime]System.Attribute +{ + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .field private valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes MemberType@ + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .field private class [runtime]System.Type Type@ + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public specialname rtspecialname + instance void .ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes MemberType, + class [runtime]System.Type Type) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [runtime]System.Attribute::.ctor() + IL_0006: ldarg.0 + IL_0007: ldarg.1 + IL_0008: stfld valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::MemberType@ + IL_000d: ldarg.0 + IL_000e: ldarg.2 + IL_000f: stfld class [runtime]System.Type System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::Type@ + IL_0014: ret + } + + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld class [runtime]System.Type System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::Type@ + IL_0006: ret + } + + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::MemberType@ + IL_0006: ret + } + + .property instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes + MemberType() + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .get instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::get_MemberType() + } + .property instance class [runtime]System.Type + Type() + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .get instance class [runtime]System.Type System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::get_Type() + } +} + + + + + + diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals12.fsx.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals12.fsx.il.netcore.bsl new file mode 100644 index 00000000000..efeb042ab2a --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals12.fsx.il.netcore.bsl @@ -0,0 +1,532 @@ + + + + + +.assembly extern runtime { } +.assembly extern FSharp.Core { } +.assembly assembly +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, + int32, + int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + + + + + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.mresource public FSharpSignatureData.assembly +{ + + +} +.mresource public FSharpOptimizationData.assembly +{ + + +} +.module assembly.exe + +.imagebase {value} +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 +.corflags 0x00000001 + + + + + +.class public abstract auto ansi sealed assembly + extends [runtime]System.Object +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class abstract auto ansi sealed nested public EqualsMicroPerfAndCodeGenerationTests + extends [runtime]System.Object + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class sequential ansi serializable sealed nested public SomeRecord + extends [runtime]System.ValueType + implements class [runtime]System.IEquatable`1, + [runtime]System.Collections.IStructuralEquatable, + class [runtime]System.IComparable`1, + [runtime]System.IComparable, + [runtime]System.Collections.IStructuralComparable + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.StructAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 02 00 00 00 00 00 ) + .field assembly int32 V@ + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field assembly int32 U@ + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method public hidebysig specialname instance int32 get_V() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.IsReadOnlyAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0006: ret + } + + .method public hidebysig specialname instance int32 get_U() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.IsReadOnlyAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_0006: ret + } + + .method public specialname rtspecialname + instance void .ctor(int32 v, + int32 u) cil managed + { + .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, + class [runtime]System.Type) = ( 01 00 60 06 00 00 39 45 71 75 61 6C 73 31 32 2B + 45 71 75 61 6C 73 4D 69 63 72 6F 50 65 72 66 41 + 6E 64 43 6F 64 65 47 65 6E 65 72 61 74 69 6F 6E + 54 65 73 74 73 2B 53 6F 6D 65 52 65 63 6F 72 64 + 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: stfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0007: ldarg.0 + IL_0008: ldarg.2 + IL_0009: stfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_000e: ret + } + + .method public strict virtual instance string ToString() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldstr "%+A" + IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord>::.ctor(string) + IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_000f: ldarg.0 + IL_0010: ldobj assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_0015: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0) + IL_001a: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (int32 V_0, + class [runtime]System.Collections.IComparer V_1, + int32 V_2, + int32 V_3) + IL_0000: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0005: stloc.1 + IL_0006: ldarg.0 + IL_0007: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_000c: stloc.2 + IL_000d: ldarga.s obj + IL_000f: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0014: stloc.3 + IL_0015: ldloc.2 + IL_0016: ldloc.3 + IL_0017: cgt + IL_0019: ldloc.2 + IL_001a: ldloc.3 + IL_001b: clt + IL_001d: sub + IL_001e: stloc.0 + IL_001f: ldloc.0 + IL_0020: ldc.i4.0 + IL_0021: bge.s IL_0025 + + IL_0023: ldloc.0 + IL_0024: ret + + IL_0025: ldloc.0 + IL_0026: ldc.i4.0 + IL_0027: ble.s IL_002b + + IL_0029: ldloc.0 + IL_002a: ret + + IL_002b: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0030: stloc.1 + IL_0031: ldarg.0 + IL_0032: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_0037: stloc.2 + IL_0038: ldarga.s obj + IL_003a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_003f: stloc.3 + IL_0040: ldloc.2 + IL_0041: ldloc.3 + IL_0042: cgt + IL_0044: ldloc.2 + IL_0045: ldloc.3 + IL_0046: clt + IL_0048: sub + IL_0049: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_0007: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord) + IL_000c: ret + } + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [runtime]System.Collections.IComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord V_0, + int32 V_1, + int32 V_2, + int32 V_3) + IL_0000: ldarg.1 + IL_0001: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_000d: stloc.2 + IL_000e: ldloca.s V_0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0015: stloc.3 + IL_0016: ldloc.2 + IL_0017: ldloc.3 + IL_0018: cgt + IL_001a: ldloc.2 + IL_001b: ldloc.3 + IL_001c: clt + IL_001e: sub + IL_001f: stloc.1 + IL_0020: ldloc.1 + IL_0021: ldc.i4.0 + IL_0022: bge.s IL_0026 + + IL_0024: ldloc.1 + IL_0025: ret + + IL_0026: ldloc.1 + IL_0027: ldc.i4.0 + IL_0028: ble.s IL_002c + + IL_002a: ldloc.1 + IL_002b: ret + + IL_002c: ldarg.0 + IL_002d: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_0032: stloc.2 + IL_0033: ldloca.s V_0 + IL_0035: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_003a: stloc.3 + IL_003b: ldloc.2 + IL_003c: ldloc.3 + IL_003d: cgt + IL_003f: ldloc.2 + IL_0040: ldloc.3 + IL_0041: clt + IL_0043: sub + IL_0044: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 7 + .locals init (int32 V_0) + IL_0000: ldc.i4.0 + IL_0001: stloc.0 + IL_0002: ldc.i4 0x9e3779b9 + IL_0007: ldarg.0 + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_000d: ldloc.0 + IL_000e: ldc.i4.6 + IL_000f: shl + IL_0010: ldloc.0 + IL_0011: ldc.i4.2 + IL_0012: shr + IL_0013: add + IL_0014: add + IL_0015: add + IL_0016: stloc.0 + IL_0017: ldc.i4 0x9e3779b9 + IL_001c: ldarg.0 + IL_001d: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0022: ldloc.0 + IL_0023: ldc.i4.6 + IL_0024: shl + IL_0025: ldloc.0 + IL_0026: ldc.i4.2 + IL_0027: shr + IL_0028: add + IL_0029: add + IL_002a: add + IL_002b: stloc.0 + IL_002c: ldloc.0 + IL_002d: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::GetHashCode(class [runtime]System.Collections.IEqualityComparer) + IL_000b: ret + } + + .method public hidebysig instance bool + Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0006: ldarga.s obj + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_000d: bne.un.s IL_001f + + IL_000f: ldarg.0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_0015: ldarga.s obj + IL_0017: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_0006: brfalse.s IL_0018 + + IL_0008: ldarg.1 + IL_0009: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_000e: stloc.0 + IL_000f: ldarg.0 + IL_0010: ldloc.0 + IL_0011: ldarg.2 + IL_0012: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord, + class [runtime]System.Collections.IEqualityComparer) + IL_0017: ret + + IL_0018: ldc.i4.0 + IL_0019: ret + } + + .method public hidebysig virtual final instance bool Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0006: ldarga.s obj + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_000d: bne.un.s IL_001f + + IL_000f: ldarg.0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_0015: ldarga.s obj + IL_0017: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + } + + .method public hidebysig virtual final instance bool Equals(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_0006: brfalse.s IL_0015 + + IL_0008: ldarg.0 + IL_0009: ldarg.1 + IL_000a: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_000f: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord) + IL_0014: ret + + IL_0015: ldc.i4.0 + IL_0016: ret + } + + .property instance int32 V() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32) = ( 01 00 04 00 00 00 00 00 00 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::get_V() + } + .property instance int32 U() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32) = ( 01 00 04 00 00 00 01 00 00 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::get_U() + } + } + + .field static assembly bool arg@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord x@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord y@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method assembly specialname static bool get_arg@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord get_x@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord get_y@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0005: ret + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: ldc.i4.2 + IL_0002: newobj instance void assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::.ctor(int32, + int32) + IL_0007: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_000c: ldc.i4.2 + IL_000d: ldc.i4.3 + IL_000e: newobj instance void assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::.ctor(int32, + int32) + IL_0013: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0018: ldsflda valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_001d: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + IL_0022: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0027: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord, + class [runtime]System.Collections.IEqualityComparer) + IL_002c: stsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0031: ret + } + + .property bool arg@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get bool assembly/EqualsMicroPerfAndCodeGenerationTests::get_arg@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + x@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::get_x@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + y@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + } + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: call void assembly/EqualsMicroPerfAndCodeGenerationTests::staticInitialization@() + IL_0005: ret + } + +} + +.class private abstract auto ansi sealed ''.$assembly$fsx + extends [runtime]System.Object +{ + .field static assembly int32 init@ + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public static void main@() cil managed + { + .entrypoint + + .maxstack 8 + IL_0000: call void assembly::staticInitialization@() + IL_0005: ret + } + +} + + + + + + diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals13.fsx b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals13.fsx new file mode 100644 index 00000000000..9d0b1641764 --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals13.fsx @@ -0,0 +1,8 @@ +module EqualsMicroPerfAndCodeGenerationTests = + + [] + type SomeGenericStruct<'T>(v: 'T, u: int) = + member _.V = v + member _.U = u + + SomeGenericStruct(1, 2) = SomeGenericStruct(2, 3) |> ignore \ No newline at end of file diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals13.fsx.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals13.fsx.il.net472.bsl new file mode 100644 index 00000000000..5a302fdd346 --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals13.fsx.il.net472.bsl @@ -0,0 +1,524 @@ + + + + + +.assembly extern runtime { } +.assembly extern FSharp.Core { } +.assembly assembly +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, + int32, + int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + + + + + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.mresource public FSharpSignatureData.assembly +{ + + +} +.mresource public FSharpOptimizationData.assembly +{ + + +} +.module assembly.exe + +.imagebase {value} +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 +.corflags 0x00000001 + + + + + +.class public abstract auto ansi sealed assembly + extends [runtime]System.Object +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class abstract auto ansi sealed nested public EqualsMicroPerfAndCodeGenerationTests + extends [runtime]System.Object + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class sequential ansi serializable sealed nested public SomeGenericStruct`1 + extends [runtime]System.ValueType + implements class [runtime]System.IEquatable`1>, + [runtime]System.Collections.IStructuralEquatable, + class [runtime]System.IComparable`1>, + [runtime]System.IComparable, + [runtime]System.Collections.IStructuralComparable + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.StructAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) + .field assembly !T v + .field assembly int32 u + .method public hidebysig virtual final instance int32 CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (int32 V_0, + class [runtime]System.Collections.IComparer V_1, + !T V_2, + !T V_3, + int32 V_4, + int32 V_5) + IL_0000: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0005: stloc.1 + IL_0006: ldarg.0 + IL_0007: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::v + IL_000c: stloc.2 + IL_000d: ldarga.s obj + IL_000f: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::v + IL_0014: stloc.3 + IL_0015: ldloc.1 + IL_0016: ldloc.2 + IL_0017: ldloc.3 + IL_0018: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericComparisonWithComparerIntrinsic(class [runtime]System.Collections.IComparer, + !!0, + !!0) + IL_001d: stloc.0 + IL_001e: ldloc.0 + IL_001f: ldc.i4.0 + IL_0020: bge.s IL_0024 + + IL_0022: ldloc.0 + IL_0023: ret + + IL_0024: ldloc.0 + IL_0025: ldc.i4.0 + IL_0026: ble.s IL_002a + + IL_0028: ldloc.0 + IL_0029: ret + + IL_002a: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_002f: stloc.1 + IL_0030: ldarg.0 + IL_0031: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::u + IL_0036: stloc.s V_4 + IL_0038: ldarga.s obj + IL_003a: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::u + IL_003f: stloc.s V_5 + IL_0041: ldloc.s V_4 + IL_0043: ldloc.s V_5 + IL_0045: cgt + IL_0047: ldloc.s V_4 + IL_0049: ldloc.s V_5 + IL_004b: clt + IL_004d: sub + IL_004e: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 + IL_0007: call instance int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1) + IL_000c: ret + } + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [runtime]System.Collections.IComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 V_0, + int32 V_1, + !T V_2, + !T V_3, + int32 V_4, + int32 V_5) + IL_0000: ldarg.1 + IL_0001: unbox.any valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::v + IL_000d: stloc.2 + IL_000e: ldloca.s V_0 + IL_0010: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::v + IL_0015: stloc.3 + IL_0016: ldarg.2 + IL_0017: ldloc.2 + IL_0018: ldloc.3 + IL_0019: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericComparisonWithComparerIntrinsic(class [runtime]System.Collections.IComparer, + !!0, + !!0) + IL_001e: stloc.1 + IL_001f: ldloc.1 + IL_0020: ldc.i4.0 + IL_0021: bge.s IL_0025 + + IL_0023: ldloc.1 + IL_0024: ret + + IL_0025: ldloc.1 + IL_0026: ldc.i4.0 + IL_0027: ble.s IL_002b + + IL_0029: ldloc.1 + IL_002a: ret + + IL_002b: ldarg.0 + IL_002c: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::u + IL_0031: stloc.s V_4 + IL_0033: ldloca.s V_0 + IL_0035: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::u + IL_003a: stloc.s V_5 + IL_003c: ldloc.s V_4 + IL_003e: ldloc.s V_5 + IL_0040: cgt + IL_0042: ldloc.s V_4 + IL_0044: ldloc.s V_5 + IL_0046: clt + IL_0048: sub + IL_0049: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 7 + .locals init (int32 V_0, + !T V_1) + IL_0000: ldc.i4.0 + IL_0001: stloc.0 + IL_0002: ldc.i4 0x9e3779b9 + IL_0007: ldarg.0 + IL_0008: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::u + IL_000d: ldloc.0 + IL_000e: ldc.i4.6 + IL_000f: shl + IL_0010: ldloc.0 + IL_0011: ldc.i4.2 + IL_0012: shr + IL_0013: add + IL_0014: add + IL_0015: add + IL_0016: stloc.0 + IL_0017: ldc.i4 0x9e3779b9 + IL_001c: ldarg.0 + IL_001d: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::v + IL_0022: stloc.1 + IL_0023: ldarg.1 + IL_0024: ldloc.1 + IL_0025: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericHashWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, + !!0) + IL_002a: ldloc.0 + IL_002b: ldc.i4.6 + IL_002c: shl + IL_002d: ldloc.0 + IL_002e: ldc.i4.2 + IL_002f: shr + IL_0030: add + IL_0031: add + IL_0032: add + IL_0033: stloc.0 + IL_0034: ldloc.0 + IL_0035: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: call instance int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::GetHashCode(class [runtime]System.Collections.IEqualityComparer) + IL_000b: ret + } + + .method public hidebysig instance bool + Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (!T V_0, + !T V_1) + IL_0000: ldarg.0 + IL_0001: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::v + IL_0006: stloc.0 + IL_0007: ldarga.s obj + IL_0009: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::v + IL_000e: stloc.1 + IL_000f: ldarg.2 + IL_0010: ldloc.0 + IL_0011: ldloc.1 + IL_0012: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, + !!0, + !!0) + IL_0017: brfalse.s IL_0029 + + IL_0019: ldarg.0 + IL_001a: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::u + IL_001f: ldarga.s obj + IL_0021: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::u + IL_0026: ceq + IL_0028: ret + + IL_0029: ldc.i4.0 + IL_002a: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 V_0) + IL_0000: ldarg.1 + IL_0001: isinst valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 + IL_0006: brfalse.s IL_0018 + + IL_0008: ldarg.1 + IL_0009: unbox.any valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 + IL_000e: stloc.0 + IL_000f: ldarg.0 + IL_0010: ldloc.0 + IL_0011: ldarg.2 + IL_0012: call instance bool valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1, + class [runtime]System.Collections.IEqualityComparer) + IL_0017: ret + + IL_0018: ldc.i4.0 + IL_0019: ret + } + + .method public specialname rtspecialname + instance void .ctor(!T v, + int32 u) cil managed + { + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: stfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::v + IL_0007: ldarg.0 + IL_0008: ldarg.2 + IL_0009: stfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::u + IL_000e: ret + } + + .method public hidebysig specialname instance !T get_V() cil managed + { + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::v + IL_0006: ret + } + + .method public hidebysig specialname instance int32 get_U() cil managed + { + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::u + IL_0006: ret + } + + .method public hidebysig virtual final instance bool Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (!T V_0, + !T V_1) + IL_0000: ldarg.0 + IL_0001: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::v + IL_0006: stloc.0 + IL_0007: ldarga.s obj + IL_0009: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::v + IL_000e: stloc.1 + IL_000f: ldloc.0 + IL_0010: ldloc.1 + IL_0011: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityERIntrinsic(!!0, + !!0) + IL_0016: brfalse.s IL_0028 + + IL_0018: ldarg.0 + IL_0019: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::u + IL_001e: ldarga.s obj + IL_0020: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::u + IL_0025: ceq + IL_0027: ret + + IL_0028: ldc.i4.0 + IL_0029: ret + } + + .method public hidebysig virtual final instance bool Equals(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: isinst valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 + IL_0006: brfalse.s IL_0015 + + IL_0008: ldarg.0 + IL_0009: ldarg.1 + IL_000a: unbox.any valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 + IL_000f: call instance bool valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1) + IL_0014: ret + + IL_0015: ldc.i4.0 + IL_0016: ret + } + + .property instance !T V() + { + .get instance !T assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::get_V() + } + .property instance int32 U() + { + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::get_U() + } + } + + .field static assembly bool arg@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 x@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 y@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method assembly specialname static bool get_arg@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 get_x@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 get_y@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0005: ret + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: ldc.i4.2 + IL_0002: newobj instance void valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::.ctor(!0, + int32) + IL_0007: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_000c: ldc.i4.2 + IL_000d: ldc.i4.3 + IL_000e: newobj instance void valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::.ctor(!0, + int32) + IL_0013: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0018: ldsflda valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_001d: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + IL_0022: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0027: call instance bool valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1, + class [runtime]System.Collections.IEqualityComparer) + IL_002c: stsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0031: ret + } + + .property bool arg@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get bool assembly/EqualsMicroPerfAndCodeGenerationTests::get_arg@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 + x@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 assembly/EqualsMicroPerfAndCodeGenerationTests::get_x@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 + y@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + } + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: call void assembly/EqualsMicroPerfAndCodeGenerationTests::staticInitialization@() + IL_0005: ret + } + +} + +.class private abstract auto ansi sealed ''.$assembly$fsx + extends [runtime]System.Object +{ + .field static assembly int32 init@ + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public static void main@() cil managed + { + .entrypoint + + .maxstack 8 + IL_0000: call void assembly::staticInitialization@() + IL_0005: ret + } + +} + + + + + + diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals13.fsx.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals13.fsx.il.netcore.bsl new file mode 100644 index 00000000000..5a302fdd346 --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals13.fsx.il.netcore.bsl @@ -0,0 +1,524 @@ + + + + + +.assembly extern runtime { } +.assembly extern FSharp.Core { } +.assembly assembly +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, + int32, + int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + + + + + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.mresource public FSharpSignatureData.assembly +{ + + +} +.mresource public FSharpOptimizationData.assembly +{ + + +} +.module assembly.exe + +.imagebase {value} +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 +.corflags 0x00000001 + + + + + +.class public abstract auto ansi sealed assembly + extends [runtime]System.Object +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class abstract auto ansi sealed nested public EqualsMicroPerfAndCodeGenerationTests + extends [runtime]System.Object + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class sequential ansi serializable sealed nested public SomeGenericStruct`1 + extends [runtime]System.ValueType + implements class [runtime]System.IEquatable`1>, + [runtime]System.Collections.IStructuralEquatable, + class [runtime]System.IComparable`1>, + [runtime]System.IComparable, + [runtime]System.Collections.IStructuralComparable + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.StructAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) + .field assembly !T v + .field assembly int32 u + .method public hidebysig virtual final instance int32 CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (int32 V_0, + class [runtime]System.Collections.IComparer V_1, + !T V_2, + !T V_3, + int32 V_4, + int32 V_5) + IL_0000: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0005: stloc.1 + IL_0006: ldarg.0 + IL_0007: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::v + IL_000c: stloc.2 + IL_000d: ldarga.s obj + IL_000f: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::v + IL_0014: stloc.3 + IL_0015: ldloc.1 + IL_0016: ldloc.2 + IL_0017: ldloc.3 + IL_0018: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericComparisonWithComparerIntrinsic(class [runtime]System.Collections.IComparer, + !!0, + !!0) + IL_001d: stloc.0 + IL_001e: ldloc.0 + IL_001f: ldc.i4.0 + IL_0020: bge.s IL_0024 + + IL_0022: ldloc.0 + IL_0023: ret + + IL_0024: ldloc.0 + IL_0025: ldc.i4.0 + IL_0026: ble.s IL_002a + + IL_0028: ldloc.0 + IL_0029: ret + + IL_002a: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_002f: stloc.1 + IL_0030: ldarg.0 + IL_0031: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::u + IL_0036: stloc.s V_4 + IL_0038: ldarga.s obj + IL_003a: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::u + IL_003f: stloc.s V_5 + IL_0041: ldloc.s V_4 + IL_0043: ldloc.s V_5 + IL_0045: cgt + IL_0047: ldloc.s V_4 + IL_0049: ldloc.s V_5 + IL_004b: clt + IL_004d: sub + IL_004e: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 + IL_0007: call instance int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1) + IL_000c: ret + } + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [runtime]System.Collections.IComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 V_0, + int32 V_1, + !T V_2, + !T V_3, + int32 V_4, + int32 V_5) + IL_0000: ldarg.1 + IL_0001: unbox.any valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::v + IL_000d: stloc.2 + IL_000e: ldloca.s V_0 + IL_0010: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::v + IL_0015: stloc.3 + IL_0016: ldarg.2 + IL_0017: ldloc.2 + IL_0018: ldloc.3 + IL_0019: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericComparisonWithComparerIntrinsic(class [runtime]System.Collections.IComparer, + !!0, + !!0) + IL_001e: stloc.1 + IL_001f: ldloc.1 + IL_0020: ldc.i4.0 + IL_0021: bge.s IL_0025 + + IL_0023: ldloc.1 + IL_0024: ret + + IL_0025: ldloc.1 + IL_0026: ldc.i4.0 + IL_0027: ble.s IL_002b + + IL_0029: ldloc.1 + IL_002a: ret + + IL_002b: ldarg.0 + IL_002c: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::u + IL_0031: stloc.s V_4 + IL_0033: ldloca.s V_0 + IL_0035: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::u + IL_003a: stloc.s V_5 + IL_003c: ldloc.s V_4 + IL_003e: ldloc.s V_5 + IL_0040: cgt + IL_0042: ldloc.s V_4 + IL_0044: ldloc.s V_5 + IL_0046: clt + IL_0048: sub + IL_0049: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 7 + .locals init (int32 V_0, + !T V_1) + IL_0000: ldc.i4.0 + IL_0001: stloc.0 + IL_0002: ldc.i4 0x9e3779b9 + IL_0007: ldarg.0 + IL_0008: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::u + IL_000d: ldloc.0 + IL_000e: ldc.i4.6 + IL_000f: shl + IL_0010: ldloc.0 + IL_0011: ldc.i4.2 + IL_0012: shr + IL_0013: add + IL_0014: add + IL_0015: add + IL_0016: stloc.0 + IL_0017: ldc.i4 0x9e3779b9 + IL_001c: ldarg.0 + IL_001d: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::v + IL_0022: stloc.1 + IL_0023: ldarg.1 + IL_0024: ldloc.1 + IL_0025: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericHashWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, + !!0) + IL_002a: ldloc.0 + IL_002b: ldc.i4.6 + IL_002c: shl + IL_002d: ldloc.0 + IL_002e: ldc.i4.2 + IL_002f: shr + IL_0030: add + IL_0031: add + IL_0032: add + IL_0033: stloc.0 + IL_0034: ldloc.0 + IL_0035: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: call instance int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::GetHashCode(class [runtime]System.Collections.IEqualityComparer) + IL_000b: ret + } + + .method public hidebysig instance bool + Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (!T V_0, + !T V_1) + IL_0000: ldarg.0 + IL_0001: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::v + IL_0006: stloc.0 + IL_0007: ldarga.s obj + IL_0009: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::v + IL_000e: stloc.1 + IL_000f: ldarg.2 + IL_0010: ldloc.0 + IL_0011: ldloc.1 + IL_0012: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, + !!0, + !!0) + IL_0017: brfalse.s IL_0029 + + IL_0019: ldarg.0 + IL_001a: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::u + IL_001f: ldarga.s obj + IL_0021: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::u + IL_0026: ceq + IL_0028: ret + + IL_0029: ldc.i4.0 + IL_002a: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 V_0) + IL_0000: ldarg.1 + IL_0001: isinst valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 + IL_0006: brfalse.s IL_0018 + + IL_0008: ldarg.1 + IL_0009: unbox.any valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 + IL_000e: stloc.0 + IL_000f: ldarg.0 + IL_0010: ldloc.0 + IL_0011: ldarg.2 + IL_0012: call instance bool valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1, + class [runtime]System.Collections.IEqualityComparer) + IL_0017: ret + + IL_0018: ldc.i4.0 + IL_0019: ret + } + + .method public specialname rtspecialname + instance void .ctor(!T v, + int32 u) cil managed + { + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: stfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::v + IL_0007: ldarg.0 + IL_0008: ldarg.2 + IL_0009: stfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::u + IL_000e: ret + } + + .method public hidebysig specialname instance !T get_V() cil managed + { + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::v + IL_0006: ret + } + + .method public hidebysig specialname instance int32 get_U() cil managed + { + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::u + IL_0006: ret + } + + .method public hidebysig virtual final instance bool Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (!T V_0, + !T V_1) + IL_0000: ldarg.0 + IL_0001: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::v + IL_0006: stloc.0 + IL_0007: ldarga.s obj + IL_0009: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::v + IL_000e: stloc.1 + IL_000f: ldloc.0 + IL_0010: ldloc.1 + IL_0011: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityERIntrinsic(!!0, + !!0) + IL_0016: brfalse.s IL_0028 + + IL_0018: ldarg.0 + IL_0019: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::u + IL_001e: ldarga.s obj + IL_0020: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::u + IL_0025: ceq + IL_0027: ret + + IL_0028: ldc.i4.0 + IL_0029: ret + } + + .method public hidebysig virtual final instance bool Equals(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: isinst valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 + IL_0006: brfalse.s IL_0015 + + IL_0008: ldarg.0 + IL_0009: ldarg.1 + IL_000a: unbox.any valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 + IL_000f: call instance bool valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1) + IL_0014: ret + + IL_0015: ldc.i4.0 + IL_0016: ret + } + + .property instance !T V() + { + .get instance !T assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::get_V() + } + .property instance int32 U() + { + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::get_U() + } + } + + .field static assembly bool arg@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 x@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 y@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method assembly specialname static bool get_arg@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 get_x@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 get_y@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0005: ret + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: ldc.i4.2 + IL_0002: newobj instance void valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::.ctor(!0, + int32) + IL_0007: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_000c: ldc.i4.2 + IL_000d: ldc.i4.3 + IL_000e: newobj instance void valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::.ctor(!0, + int32) + IL_0013: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0018: ldsflda valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_001d: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + IL_0022: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0027: call instance bool valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1, + class [runtime]System.Collections.IEqualityComparer) + IL_002c: stsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0031: ret + } + + .property bool arg@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get bool assembly/EqualsMicroPerfAndCodeGenerationTests::get_arg@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 + x@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 assembly/EqualsMicroPerfAndCodeGenerationTests::get_x@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 + y@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericStruct`1 assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + } + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: call void assembly/EqualsMicroPerfAndCodeGenerationTests::staticInitialization@() + IL_0005: ret + } + +} + +.class private abstract auto ansi sealed ''.$assembly$fsx + extends [runtime]System.Object +{ + .field static assembly int32 init@ + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public static void main@() cil managed + { + .entrypoint + + .maxstack 8 + IL_0000: call void assembly::staticInitialization@() + IL_0005: ret + } + +} + + + + + + diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals14.fsx b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals14.fsx new file mode 100644 index 00000000000..d17b1857390 --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals14.fsx @@ -0,0 +1,6 @@ +module EqualsMicroPerfAndCodeGenerationTests = + + [] + type SomeGenericUnion<'T> = SomeGenericUnion of 'T * int + + SomeGenericUnion (1, 2) = SomeGenericUnion (2, 3) |> ignore \ No newline at end of file diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals14.fsx.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals14.fsx.il.net472.bsl new file mode 100644 index 00000000000..c41041fd222 --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals14.fsx.il.net472.bsl @@ -0,0 +1,612 @@ + + + + + +.assembly extern runtime { } +.assembly extern FSharp.Core { } +.assembly assembly +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, + int32, + int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + + + + + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.mresource public FSharpSignatureData.assembly +{ + + +} +.mresource public FSharpOptimizationData.assembly +{ + + +} +.module assembly.exe + +.imagebase {value} +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 +.corflags 0x00000001 + + + + + +.class public abstract auto ansi sealed assembly + extends [runtime]System.Object +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class abstract auto ansi sealed nested public EqualsMicroPerfAndCodeGenerationTests + extends [runtime]System.Object + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class sequential autochar serializable sealed nested public beforefieldinit SomeGenericUnion`1 + extends [runtime]System.ValueType + implements class [runtime]System.IEquatable`1>, + [runtime]System.Collections.IStructuralEquatable, + class [runtime]System.IComparable`1>, + [runtime]System.IComparable, + [runtime]System.Collections.IStructuralComparable + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.StructAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerDisplayAttribute::.ctor(string) = ( 01 00 15 7B 5F 5F 44 65 62 75 67 44 69 73 70 6C + 61 79 28 29 2C 6E 71 7D 00 00 ) + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 01 00 00 00 00 00 ) + .field assembly !T item1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .field assembly int32 item2 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 + NewSomeGenericUnion(!T item1, + int32 item2) cil managed + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) + + .maxstack 3 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 V_0) + IL_0000: ldloca.s V_0 + IL_0002: initobj valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 + IL_0008: ldloca.s V_0 + IL_000a: ldarg.0 + IL_000b: stfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item1 + IL_0010: ldloca.s V_0 + IL_0012: ldarg.1 + IL_0013: stfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item2 + IL_0018: ldloc.0 + IL_0019: ret + } + + .method public hidebysig instance !T get_Item1() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item1 + IL_0006: ret + } + + .method public hidebysig instance int32 get_Item2() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item2 + IL_0006: ret + } + + .method public hidebysig instance int32 get_Tag() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: ldc.i4.0 + IL_0003: ret + } + + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldstr "%+0.8A" + IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,string>,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,string>::.ctor(string) + IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString,string>>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_000f: ldarg.0 + IL_0010: ldobj valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 + IL_0015: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,string>::Invoke(!0) + IL_001a: ret + } + + .method public strict virtual instance string ToString() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldstr "%+A" + IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,string>,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1>::.ctor(string) + IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString,string>>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_000f: ldarg.0 + IL_0010: ldobj valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 + IL_0015: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,string>::Invoke(!0) + IL_001a: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (int32 V_0, + class [runtime]System.Collections.IComparer V_1, + !T V_2, + !T V_3, + int32 V_4, + int32 V_5) + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0007: stloc.1 + IL_0008: ldarg.0 + IL_0009: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item1 + IL_000e: stloc.2 + IL_000f: ldarga.s obj + IL_0011: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item1 + IL_0016: stloc.3 + IL_0017: ldloc.1 + IL_0018: ldloc.2 + IL_0019: ldloc.3 + IL_001a: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericComparisonWithComparerIntrinsic(class [runtime]System.Collections.IComparer, + !!0, + !!0) + IL_001f: stloc.0 + IL_0020: ldloc.0 + IL_0021: ldc.i4.0 + IL_0022: bge.s IL_0026 + + IL_0024: ldloc.0 + IL_0025: ret + + IL_0026: ldloc.0 + IL_0027: ldc.i4.0 + IL_0028: ble.s IL_002c + + IL_002a: ldloc.0 + IL_002b: ret + + IL_002c: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0031: stloc.1 + IL_0032: ldarg.0 + IL_0033: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item2 + IL_0038: stloc.s V_4 + IL_003a: ldarga.s obj + IL_003c: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item2 + IL_0041: stloc.s V_5 + IL_0043: ldloc.s V_4 + IL_0045: ldloc.s V_5 + IL_0047: cgt + IL_0049: ldloc.s V_4 + IL_004b: ldloc.s V_5 + IL_004d: clt + IL_004f: sub + IL_0050: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 + IL_0007: call instance int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1) + IL_000c: ret + } + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [runtime]System.Collections.IComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 V_0, + int32 V_1, + !T V_2, + !T V_3, + int32 V_4, + int32 V_5) + IL_0000: ldarg.1 + IL_0001: unbox.any valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: pop + IL_0009: ldarg.0 + IL_000a: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item1 + IL_000f: stloc.2 + IL_0010: ldloca.s V_0 + IL_0012: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item1 + IL_0017: stloc.3 + IL_0018: ldarg.2 + IL_0019: ldloc.2 + IL_001a: ldloc.3 + IL_001b: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericComparisonWithComparerIntrinsic(class [runtime]System.Collections.IComparer, + !!0, + !!0) + IL_0020: stloc.1 + IL_0021: ldloc.1 + IL_0022: ldc.i4.0 + IL_0023: bge.s IL_0027 + + IL_0025: ldloc.1 + IL_0026: ret + + IL_0027: ldloc.1 + IL_0028: ldc.i4.0 + IL_0029: ble.s IL_002d + + IL_002b: ldloc.1 + IL_002c: ret + + IL_002d: ldarg.0 + IL_002e: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item2 + IL_0033: stloc.s V_4 + IL_0035: ldloca.s V_0 + IL_0037: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item2 + IL_003c: stloc.s V_5 + IL_003e: ldloc.s V_4 + IL_0040: ldloc.s V_5 + IL_0042: cgt + IL_0044: ldloc.s V_4 + IL_0046: ldloc.s V_5 + IL_0048: clt + IL_004a: sub + IL_004b: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 7 + .locals init (int32 V_0, + !T V_1) + IL_0000: ldc.i4.0 + IL_0001: stloc.0 + IL_0002: ldarg.0 + IL_0003: pop + IL_0004: ldc.i4.0 + IL_0005: stloc.0 + IL_0006: ldc.i4 0x9e3779b9 + IL_000b: ldarg.0 + IL_000c: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item2 + IL_0011: ldloc.0 + IL_0012: ldc.i4.6 + IL_0013: shl + IL_0014: ldloc.0 + IL_0015: ldc.i4.2 + IL_0016: shr + IL_0017: add + IL_0018: add + IL_0019: add + IL_001a: stloc.0 + IL_001b: ldc.i4 0x9e3779b9 + IL_0020: ldarg.0 + IL_0021: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item1 + IL_0026: stloc.1 + IL_0027: ldarg.1 + IL_0028: ldloc.1 + IL_0029: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericHashWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, + !!0) + IL_002e: ldloc.0 + IL_002f: ldc.i4.6 + IL_0030: shl + IL_0031: ldloc.0 + IL_0032: ldc.i4.2 + IL_0033: shr + IL_0034: add + IL_0035: add + IL_0036: add + IL_0037: stloc.0 + IL_0038: ldloc.0 + IL_0039: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: call instance int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::GetHashCode(class [runtime]System.Collections.IEqualityComparer) + IL_000b: ret + } + + .method public hidebysig instance bool + Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (!T V_0, + !T V_1) + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: ldarg.0 + IL_0003: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item1 + IL_0008: stloc.0 + IL_0009: ldarga.s obj + IL_000b: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item1 + IL_0010: stloc.1 + IL_0011: ldarg.2 + IL_0012: ldloc.0 + IL_0013: ldloc.1 + IL_0014: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, + !!0, + !!0) + IL_0019: brfalse.s IL_002b + + IL_001b: ldarg.0 + IL_001c: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item2 + IL_0021: ldarga.s obj + IL_0023: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item2 + IL_0028: ceq + IL_002a: ret + + IL_002b: ldc.i4.0 + IL_002c: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 V_0) + IL_0000: ldarg.1 + IL_0001: isinst valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 + IL_0006: brfalse.s IL_0018 + + IL_0008: ldarg.1 + IL_0009: unbox.any valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 + IL_000e: stloc.0 + IL_000f: ldarg.0 + IL_0010: ldloc.0 + IL_0011: ldarg.2 + IL_0012: call instance bool valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1, + class [runtime]System.Collections.IEqualityComparer) + IL_0017: ret + + IL_0018: ldc.i4.0 + IL_0019: ret + } + + .method public hidebysig virtual final instance bool Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (!T V_0, + !T V_1) + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: ldarg.0 + IL_0003: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item1 + IL_0008: stloc.0 + IL_0009: ldarga.s obj + IL_000b: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item1 + IL_0010: stloc.1 + IL_0011: ldloc.0 + IL_0012: ldloc.1 + IL_0013: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityERIntrinsic(!!0, + !!0) + IL_0018: brfalse.s IL_002a + + IL_001a: ldarg.0 + IL_001b: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item2 + IL_0020: ldarga.s obj + IL_0022: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item2 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + } + + .method public hidebysig virtual final instance bool Equals(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: isinst valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 + IL_0006: brfalse.s IL_0015 + + IL_0008: ldarg.0 + IL_0009: ldarg.1 + IL_000a: unbox.any valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 + IL_000f: call instance bool valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1) + IL_0014: ret + + IL_0015: ldc.i4.0 + IL_0016: ret + } + + .property instance int32 Tag() + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::get_Tag() + } + .property instance !T Item1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32, + int32) = ( 01 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .get instance !T assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::get_Item1() + } + .property instance int32 Item2() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32, + int32) = ( 01 00 04 00 00 00 00 00 00 00 01 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::get_Item2() + } + } + + .field static assembly bool arg@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 x@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 y@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method assembly specialname static bool get_arg@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 get_x@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 get_y@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0005: ret + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: ldc.i4.2 + IL_0002: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::NewSomeGenericUnion(!0, + int32) + IL_0007: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_000c: ldc.i4.2 + IL_000d: ldc.i4.3 + IL_000e: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::NewSomeGenericUnion(!0, + int32) + IL_0013: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0018: ldsflda valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_001d: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + IL_0022: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0027: call instance bool valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1, + class [runtime]System.Collections.IEqualityComparer) + IL_002c: stsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0031: ret + } + + .property bool arg@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get bool assembly/EqualsMicroPerfAndCodeGenerationTests::get_arg@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 + x@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 assembly/EqualsMicroPerfAndCodeGenerationTests::get_x@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 + y@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + } + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: call void assembly/EqualsMicroPerfAndCodeGenerationTests::staticInitialization@() + IL_0005: ret + } + +} + +.class private abstract auto ansi sealed ''.$assembly$fsx + extends [runtime]System.Object +{ + .field static assembly int32 init@ + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public static void main@() cil managed + { + .entrypoint + + .maxstack 8 + IL_0000: call void assembly::staticInitialization@() + IL_0005: ret + } + +} + + + + + + diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals14.fsx.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals14.fsx.il.netcore.bsl new file mode 100644 index 00000000000..3985dc4c3c0 --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals14.fsx.il.netcore.bsl @@ -0,0 +1,612 @@ + + + + + +.assembly extern runtime { } +.assembly extern FSharp.Core { } +.assembly assembly +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, + int32, + int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + + + + + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.mresource public FSharpSignatureData.assembly +{ + + +} +.mresource public FSharpOptimizationData.assembly +{ + + +} +.module assembly.exe + +.imagebase {value} +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 +.corflags 0x00000001 + + + + + +.class public abstract auto ansi sealed assembly + extends [runtime]System.Object +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class abstract auto ansi sealed nested public EqualsMicroPerfAndCodeGenerationTests + extends [runtime]System.Object + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class sequential autochar serializable sealed nested public beforefieldinit SomeGenericUnion`1 + extends [runtime]System.ValueType + implements class [runtime]System.IEquatable`1>, + [runtime]System.Collections.IStructuralEquatable, + class [runtime]System.IComparable`1>, + [runtime]System.IComparable, + [runtime]System.Collections.IStructuralComparable + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.StructAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerDisplayAttribute::.ctor(string) = ( 01 00 15 7B 5F 5F 44 65 62 75 67 44 69 73 70 6C + 61 79 28 29 2C 6E 71 7D 00 00 ) + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 01 00 00 00 00 00 ) + .field assembly !T item1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .field assembly int32 item2 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 + NewSomeGenericUnion(!T item1, + int32 item2) cil managed + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) + + .maxstack 3 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 V_0) + IL_0000: ldloca.s V_0 + IL_0002: initobj valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 + IL_0008: ldloca.s V_0 + IL_000a: ldarg.0 + IL_000b: stfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item1 + IL_0010: ldloca.s V_0 + IL_0012: ldarg.1 + IL_0013: stfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item2 + IL_0018: ldloc.0 + IL_0019: ret + } + + .method public hidebysig instance !T get_Item1() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item1 + IL_0006: ret + } + + .method public hidebysig instance int32 get_Item2() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item2 + IL_0006: ret + } + + .method public hidebysig instance int32 get_Tag() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: ldc.i4.0 + IL_0003: ret + } + + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldstr "%+0.8A" + IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,string>,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,string>::.ctor(string) + IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString,string>>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_000f: ldarg.0 + IL_0010: ldobj valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 + IL_0015: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,string>::Invoke(!0) + IL_001a: ret + } + + .method public strict virtual instance string ToString() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldstr "%+A" + IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,string>,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1>::.ctor(string) + IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString,string>>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_000f: ldarg.0 + IL_0010: ldobj valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 + IL_0015: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,string>::Invoke(!0) + IL_001a: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (int32 V_0, + class [runtime]System.Collections.IComparer V_1, + !T V_2, + !T V_3, + int32 V_4, + int32 V_5) + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0007: stloc.1 + IL_0008: ldarg.0 + IL_0009: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item1 + IL_000e: stloc.2 + IL_000f: ldarga.s obj + IL_0011: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item1 + IL_0016: stloc.3 + IL_0017: ldloc.1 + IL_0018: ldloc.2 + IL_0019: ldloc.3 + IL_001a: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericComparisonWithComparerIntrinsic(class [runtime]System.Collections.IComparer, + !!0, + !!0) + IL_001f: stloc.0 + IL_0020: ldloc.0 + IL_0021: ldc.i4.0 + IL_0022: bge.s IL_0026 + + IL_0024: ldloc.0 + IL_0025: ret + + IL_0026: ldloc.0 + IL_0027: ldc.i4.0 + IL_0028: ble.s IL_002c + + IL_002a: ldloc.0 + IL_002b: ret + + IL_002c: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0031: stloc.1 + IL_0032: ldarg.0 + IL_0033: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item2 + IL_0038: stloc.s V_4 + IL_003a: ldarga.s obj + IL_003c: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item2 + IL_0041: stloc.s V_5 + IL_0043: ldloc.s V_4 + IL_0045: ldloc.s V_5 + IL_0047: cgt + IL_0049: ldloc.s V_4 + IL_004b: ldloc.s V_5 + IL_004d: clt + IL_004f: sub + IL_0050: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 + IL_0007: call instance int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1) + IL_000c: ret + } + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [runtime]System.Collections.IComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 V_0, + int32 V_1, + !T V_2, + !T V_3, + int32 V_4, + int32 V_5) + IL_0000: ldarg.1 + IL_0001: unbox.any valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: pop + IL_0009: ldarg.0 + IL_000a: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item1 + IL_000f: stloc.2 + IL_0010: ldloca.s V_0 + IL_0012: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item1 + IL_0017: stloc.3 + IL_0018: ldarg.2 + IL_0019: ldloc.2 + IL_001a: ldloc.3 + IL_001b: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericComparisonWithComparerIntrinsic(class [runtime]System.Collections.IComparer, + !!0, + !!0) + IL_0020: stloc.1 + IL_0021: ldloc.1 + IL_0022: ldc.i4.0 + IL_0023: bge.s IL_0027 + + IL_0025: ldloc.1 + IL_0026: ret + + IL_0027: ldloc.1 + IL_0028: ldc.i4.0 + IL_0029: ble.s IL_002d + + IL_002b: ldloc.1 + IL_002c: ret + + IL_002d: ldarg.0 + IL_002e: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item2 + IL_0033: stloc.s V_4 + IL_0035: ldloca.s V_0 + IL_0037: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item2 + IL_003c: stloc.s V_5 + IL_003e: ldloc.s V_4 + IL_0040: ldloc.s V_5 + IL_0042: cgt + IL_0044: ldloc.s V_4 + IL_0046: ldloc.s V_5 + IL_0048: clt + IL_004a: sub + IL_004b: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 7 + .locals init (int32 V_0, + !T V_1) + IL_0000: ldc.i4.0 + IL_0001: stloc.0 + IL_0002: ldarg.0 + IL_0003: pop + IL_0004: ldc.i4.0 + IL_0005: stloc.0 + IL_0006: ldc.i4 0x9e3779b9 + IL_000b: ldarg.0 + IL_000c: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item2 + IL_0011: ldloc.0 + IL_0012: ldc.i4.6 + IL_0013: shl + IL_0014: ldloc.0 + IL_0015: ldc.i4.2 + IL_0016: shr + IL_0017: add + IL_0018: add + IL_0019: add + IL_001a: stloc.0 + IL_001b: ldc.i4 0x9e3779b9 + IL_0020: ldarg.0 + IL_0021: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item1 + IL_0026: stloc.1 + IL_0027: ldarg.1 + IL_0028: ldloc.1 + IL_0029: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericHashWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, + !!0) + IL_002e: ldloc.0 + IL_002f: ldc.i4.6 + IL_0030: shl + IL_0031: ldloc.0 + IL_0032: ldc.i4.2 + IL_0033: shr + IL_0034: add + IL_0035: add + IL_0036: add + IL_0037: stloc.0 + IL_0038: ldloc.0 + IL_0039: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: call instance int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::GetHashCode(class [runtime]System.Collections.IEqualityComparer) + IL_000b: ret + } + + .method public hidebysig instance bool + Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (!T V_0, + !T V_1) + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: ldarg.0 + IL_0003: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item1 + IL_0008: stloc.0 + IL_0009: ldarga.s obj + IL_000b: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item1 + IL_0010: stloc.1 + IL_0011: ldarg.2 + IL_0012: ldloc.0 + IL_0013: ldloc.1 + IL_0014: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, + !!0, + !!0) + IL_0019: brfalse.s IL_002b + + IL_001b: ldarg.0 + IL_001c: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item2 + IL_0021: ldarga.s obj + IL_0023: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item2 + IL_0028: ceq + IL_002a: ret + + IL_002b: ldc.i4.0 + IL_002c: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 V_0) + IL_0000: ldarg.1 + IL_0001: isinst valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 + IL_0006: brfalse.s IL_0018 + + IL_0008: ldarg.1 + IL_0009: unbox.any valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 + IL_000e: stloc.0 + IL_000f: ldarg.0 + IL_0010: ldloc.0 + IL_0011: ldarg.2 + IL_0012: call instance bool valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1, + class [runtime]System.Collections.IEqualityComparer) + IL_0017: ret + + IL_0018: ldc.i4.0 + IL_0019: ret + } + + .method public hidebysig virtual final instance bool Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (!T V_0, + !T V_1) + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: ldarg.0 + IL_0003: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item1 + IL_0008: stloc.0 + IL_0009: ldarga.s obj + IL_000b: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item1 + IL_0010: stloc.1 + IL_0011: ldloc.0 + IL_0012: ldloc.1 + IL_0013: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityERIntrinsic(!!0, + !!0) + IL_0018: brfalse.s IL_002a + + IL_001a: ldarg.0 + IL_001b: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item2 + IL_0020: ldarga.s obj + IL_0022: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::item2 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + } + + .method public hidebysig virtual final instance bool Equals(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: isinst valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 + IL_0006: brfalse.s IL_0015 + + IL_0008: ldarg.0 + IL_0009: ldarg.1 + IL_000a: unbox.any valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 + IL_000f: call instance bool valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1) + IL_0014: ret + + IL_0015: ldc.i4.0 + IL_0016: ret + } + + .property instance int32 Tag() + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::get_Tag() + } + .property instance !T Item1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32, + int32) = ( 01 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .get instance !T assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::get_Item1() + } + .property instance int32 Item2() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32, + int32) = ( 01 00 04 00 00 00 00 00 00 00 01 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::get_Item2() + } + } + + .field static assembly bool arg@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 x@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 y@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method assembly specialname static bool get_arg@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 get_x@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 get_y@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0005: ret + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: ldc.i4.2 + IL_0002: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::NewSomeGenericUnion(!0, + int32) + IL_0007: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_000c: ldc.i4.2 + IL_000d: ldc.i4.3 + IL_000e: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::NewSomeGenericUnion(!0, + int32) + IL_0013: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0018: ldsflda valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_001d: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + IL_0022: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0027: call instance bool valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1, + class [runtime]System.Collections.IEqualityComparer) + IL_002c: stsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0031: ret + } + + .property bool arg@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get bool assembly/EqualsMicroPerfAndCodeGenerationTests::get_arg@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 + x@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 assembly/EqualsMicroPerfAndCodeGenerationTests::get_x@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 + y@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericUnion`1 assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + } + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: call void assembly/EqualsMicroPerfAndCodeGenerationTests::staticInitialization@() + IL_0005: ret + } + +} + +.class private abstract auto ansi sealed ''.$assembly$fsx + extends [runtime]System.Object +{ + .field static assembly int32 init@ + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public static void main@() cil managed + { + .entrypoint + + .maxstack 8 + IL_0000: call void assembly::staticInitialization@() + IL_0005: ret + } + +} + + + + + + diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals15.fsx b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals15.fsx new file mode 100644 index 00000000000..1a10b978eaf --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals15.fsx @@ -0,0 +1,6 @@ +module EqualsMicroPerfAndCodeGenerationTests = + + [] + type SomeGenericRecord<'T> = { V: 'T; U: int } + + { V = 1; U = 2 } = { V = 2; U = 3 } |> ignore \ No newline at end of file diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals15.fsx.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals15.fsx.il.net472.bsl new file mode 100644 index 00000000000..b856c150e82 --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals15.fsx.il.net472.bsl @@ -0,0 +1,650 @@ + + + + + +.assembly extern runtime { } +.assembly extern FSharp.Core { } +.assembly assembly +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, + int32, + int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + + + + + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.mresource public FSharpSignatureData.assembly +{ + + +} +.mresource public FSharpOptimizationData.assembly +{ + + +} +.module assembly.exe + +.imagebase {value} +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 +.corflags 0x00000001 + + + + + +.class public abstract auto ansi sealed assembly + extends [runtime]System.Object +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class abstract auto ansi sealed nested public EqualsMicroPerfAndCodeGenerationTests + extends [runtime]System.Object + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class sequential ansi serializable sealed nested public SomeGenericRecord`1 + extends [runtime]System.ValueType + implements class [runtime]System.IEquatable`1>, + [runtime]System.Collections.IStructuralEquatable, + class [runtime]System.IComparable`1>, + [runtime]System.IComparable, + [runtime]System.Collections.IStructuralComparable + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.StructAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 02 00 00 00 00 00 ) + .field assembly !T V@ + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field assembly int32 U@ + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method public hidebysig specialname instance !T get_V() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.IsReadOnlyAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::V@ + IL_0006: ret + } + + .method public hidebysig specialname instance int32 get_U() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.IsReadOnlyAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::U@ + IL_0006: ret + } + + .method public specialname rtspecialname + instance void .ctor(!T v, + int32 u) cil managed + { + .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, + class [runtime]System.Type) = ( 01 00 60 06 00 00 42 45 71 75 61 6C 73 31 35 2B + 45 71 75 61 6C 73 4D 69 63 72 6F 50 65 72 66 41 + 6E 64 43 6F 64 65 47 65 6E 65 72 61 74 69 6F 6E + 54 65 73 74 73 2B 53 6F 6D 65 47 65 6E 65 72 69 + 63 52 65 63 6F 72 64 60 31 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: stfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::V@ + IL_0007: ldarg.0 + IL_0008: ldarg.2 + IL_0009: stfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::U@ + IL_000e: ret + } + + .method public strict virtual instance string ToString() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldstr "%+A" + IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,string>,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1>::.ctor(string) + IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString,string>>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_000f: ldarg.0 + IL_0010: ldobj valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 + IL_0015: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,string>::Invoke(!0) + IL_001a: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (int32 V_0, + class [runtime]System.Collections.IComparer V_1, + !T V_2, + !T V_3, + int32 V_4, + int32 V_5) + IL_0000: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0005: stloc.1 + IL_0006: ldarg.0 + IL_0007: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::V@ + IL_000c: stloc.2 + IL_000d: ldarga.s obj + IL_000f: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::V@ + IL_0014: stloc.3 + IL_0015: ldloc.1 + IL_0016: ldloc.2 + IL_0017: ldloc.3 + IL_0018: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericComparisonWithComparerIntrinsic(class [runtime]System.Collections.IComparer, + !!0, + !!0) + IL_001d: stloc.0 + IL_001e: ldloc.0 + IL_001f: ldc.i4.0 + IL_0020: bge.s IL_0024 + + IL_0022: ldloc.0 + IL_0023: ret + + IL_0024: ldloc.0 + IL_0025: ldc.i4.0 + IL_0026: ble.s IL_002a + + IL_0028: ldloc.0 + IL_0029: ret + + IL_002a: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_002f: stloc.1 + IL_0030: ldarg.0 + IL_0031: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::U@ + IL_0036: stloc.s V_4 + IL_0038: ldarga.s obj + IL_003a: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::U@ + IL_003f: stloc.s V_5 + IL_0041: ldloc.s V_4 + IL_0043: ldloc.s V_5 + IL_0045: cgt + IL_0047: ldloc.s V_4 + IL_0049: ldloc.s V_5 + IL_004b: clt + IL_004d: sub + IL_004e: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 + IL_0007: call instance int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1) + IL_000c: ret + } + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [runtime]System.Collections.IComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 V_0, + int32 V_1, + !T V_2, + !T V_3, + int32 V_4, + int32 V_5) + IL_0000: ldarg.1 + IL_0001: unbox.any valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::V@ + IL_000d: stloc.2 + IL_000e: ldloca.s V_0 + IL_0010: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::V@ + IL_0015: stloc.3 + IL_0016: ldarg.2 + IL_0017: ldloc.2 + IL_0018: ldloc.3 + IL_0019: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericComparisonWithComparerIntrinsic(class [runtime]System.Collections.IComparer, + !!0, + !!0) + IL_001e: stloc.1 + IL_001f: ldloc.1 + IL_0020: ldc.i4.0 + IL_0021: bge.s IL_0025 + + IL_0023: ldloc.1 + IL_0024: ret + + IL_0025: ldloc.1 + IL_0026: ldc.i4.0 + IL_0027: ble.s IL_002b + + IL_0029: ldloc.1 + IL_002a: ret + + IL_002b: ldarg.0 + IL_002c: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::U@ + IL_0031: stloc.s V_4 + IL_0033: ldloca.s V_0 + IL_0035: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::U@ + IL_003a: stloc.s V_5 + IL_003c: ldloc.s V_4 + IL_003e: ldloc.s V_5 + IL_0040: cgt + IL_0042: ldloc.s V_4 + IL_0044: ldloc.s V_5 + IL_0046: clt + IL_0048: sub + IL_0049: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 7 + .locals init (int32 V_0, + !T V_1) + IL_0000: ldc.i4.0 + IL_0001: stloc.0 + IL_0002: ldc.i4 0x9e3779b9 + IL_0007: ldarg.0 + IL_0008: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::U@ + IL_000d: ldloc.0 + IL_000e: ldc.i4.6 + IL_000f: shl + IL_0010: ldloc.0 + IL_0011: ldc.i4.2 + IL_0012: shr + IL_0013: add + IL_0014: add + IL_0015: add + IL_0016: stloc.0 + IL_0017: ldc.i4 0x9e3779b9 + IL_001c: ldarg.0 + IL_001d: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::V@ + IL_0022: stloc.1 + IL_0023: ldarg.1 + IL_0024: ldloc.1 + IL_0025: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericHashWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, + !!0) + IL_002a: ldloc.0 + IL_002b: ldc.i4.6 + IL_002c: shl + IL_002d: ldloc.0 + IL_002e: ldc.i4.2 + IL_002f: shr + IL_0030: add + IL_0031: add + IL_0032: add + IL_0033: stloc.0 + IL_0034: ldloc.0 + IL_0035: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: call instance int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::GetHashCode(class [runtime]System.Collections.IEqualityComparer) + IL_000b: ret + } + + .method public hidebysig instance bool + Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (!T V_0, + !T V_1) + IL_0000: ldarg.0 + IL_0001: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::V@ + IL_0006: stloc.0 + IL_0007: ldarga.s obj + IL_0009: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::V@ + IL_000e: stloc.1 + IL_000f: ldarg.2 + IL_0010: ldloc.0 + IL_0011: ldloc.1 + IL_0012: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, + !!0, + !!0) + IL_0017: brfalse.s IL_0029 + + IL_0019: ldarg.0 + IL_001a: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::U@ + IL_001f: ldarga.s obj + IL_0021: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::U@ + IL_0026: ceq + IL_0028: ret + + IL_0029: ldc.i4.0 + IL_002a: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 V_0) + IL_0000: ldarg.1 + IL_0001: isinst valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 + IL_0006: brfalse.s IL_0018 + + IL_0008: ldarg.1 + IL_0009: unbox.any valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 + IL_000e: stloc.0 + IL_000f: ldarg.0 + IL_0010: ldloc.0 + IL_0011: ldarg.2 + IL_0012: call instance bool valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1, + class [runtime]System.Collections.IEqualityComparer) + IL_0017: ret + + IL_0018: ldc.i4.0 + IL_0019: ret + } + + .method public hidebysig virtual final instance bool Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (!T V_0, + !T V_1) + IL_0000: ldarg.0 + IL_0001: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::V@ + IL_0006: stloc.0 + IL_0007: ldarga.s obj + IL_0009: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::V@ + IL_000e: stloc.1 + IL_000f: ldloc.0 + IL_0010: ldloc.1 + IL_0011: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityERIntrinsic(!!0, + !!0) + IL_0016: brfalse.s IL_0028 + + IL_0018: ldarg.0 + IL_0019: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::U@ + IL_001e: ldarga.s obj + IL_0020: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::U@ + IL_0025: ceq + IL_0027: ret + + IL_0028: ldc.i4.0 + IL_0029: ret + } + + .method public hidebysig virtual final instance bool Equals(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: isinst valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 + IL_0006: brfalse.s IL_0015 + + IL_0008: ldarg.0 + IL_0009: ldarg.1 + IL_000a: unbox.any valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 + IL_000f: call instance bool valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1) + IL_0014: ret + + IL_0015: ldc.i4.0 + IL_0016: ret + } + + .property instance !T V() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32) = ( 01 00 04 00 00 00 00 00 00 00 00 00 ) + .get instance !T assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::get_V() + } + .property instance int32 U() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32) = ( 01 00 04 00 00 00 01 00 00 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::get_U() + } + } + + .field static assembly bool arg@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 x@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 y@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method assembly specialname static bool get_arg@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 get_x@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 get_y@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0005: ret + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: ldc.i4.2 + IL_0002: newobj instance void valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::.ctor(!0, + int32) + IL_0007: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_000c: ldc.i4.2 + IL_000d: ldc.i4.3 + IL_000e: newobj instance void valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::.ctor(!0, + int32) + IL_0013: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0018: ldsflda valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_001d: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + IL_0022: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0027: call instance bool valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1, + class [runtime]System.Collections.IEqualityComparer) + IL_002c: stsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0031: ret + } + + .property bool arg@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get bool assembly/EqualsMicroPerfAndCodeGenerationTests::get_arg@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 + x@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 assembly/EqualsMicroPerfAndCodeGenerationTests::get_x@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 + y@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + } + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: call void assembly/EqualsMicroPerfAndCodeGenerationTests::staticInitialization@() + IL_0005: ret + } + +} + +.class private abstract auto ansi sealed ''.$assembly$fsx + extends [runtime]System.Object +{ + .field static assembly int32 init@ + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public static void main@() cil managed + { + .entrypoint + + .maxstack 8 + IL_0000: call void assembly::staticInitialization@() + IL_0005: ret + } + +} + +.class private auto ansi serializable sealed System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes + extends [runtime]System.Enum +{ + .custom instance void [runtime]System.FlagsAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .field public specialname rtspecialname int32 value__ + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes All = int32(0xFFFFFFFF) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes None = int32(0x00000000) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes PublicParameterlessConstructor = int32(0x00000001) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes PublicConstructors = int32(0x00000003) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes NonPublicConstructors = int32(0x00000004) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes PublicMethods = int32(0x00000008) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes NonPublicMethods = int32(0x00000010) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes PublicFields = int32(0x00000020) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes NonPublicFields = int32(0x00000040) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes PublicNestedTypes = int32(0x00000080) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes NonPublicNestedTypes = int32(0x00000100) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes PublicProperties = int32(0x00000200) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes NonPublicProperties = int32(0x00000400) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes PublicEvents = int32(0x00000800) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes NonPublicEvents = int32(0x00001000) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes Interfaces = int32(0x00002000) +} + +.class private auto ansi beforefieldinit System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute + extends [runtime]System.Attribute +{ + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .field private valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes MemberType@ + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .field private class [runtime]System.Type Type@ + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public specialname rtspecialname + instance void .ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes MemberType, + class [runtime]System.Type Type) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [runtime]System.Attribute::.ctor() + IL_0006: ldarg.0 + IL_0007: ldarg.1 + IL_0008: stfld valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::MemberType@ + IL_000d: ldarg.0 + IL_000e: ldarg.2 + IL_000f: stfld class [runtime]System.Type System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::Type@ + IL_0014: ret + } + + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld class [runtime]System.Type System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::Type@ + IL_0006: ret + } + + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::MemberType@ + IL_0006: ret + } + + .property instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes + MemberType() + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .get instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::get_MemberType() + } + .property instance class [runtime]System.Type + Type() + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .get instance class [runtime]System.Type System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::get_Type() + } +} + + + + + + diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals15.fsx.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals15.fsx.il.netcore.bsl new file mode 100644 index 00000000000..6b2065dd75c --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals15.fsx.il.netcore.bsl @@ -0,0 +1,558 @@ + + + + + +.assembly extern runtime { } +.assembly extern FSharp.Core { } +.assembly assembly +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, + int32, + int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + + + + + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.mresource public FSharpSignatureData.assembly +{ + + +} +.mresource public FSharpOptimizationData.assembly +{ + + +} +.module assembly.exe + +.imagebase {value} +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 +.corflags 0x00000001 + + + + + +.class public abstract auto ansi sealed assembly + extends [runtime]System.Object +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class abstract auto ansi sealed nested public EqualsMicroPerfAndCodeGenerationTests + extends [runtime]System.Object + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class sequential ansi serializable sealed nested public SomeGenericRecord`1 + extends [runtime]System.ValueType + implements class [runtime]System.IEquatable`1>, + [runtime]System.Collections.IStructuralEquatable, + class [runtime]System.IComparable`1>, + [runtime]System.IComparable, + [runtime]System.Collections.IStructuralComparable + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.StructAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 02 00 00 00 00 00 ) + .field assembly !T V@ + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field assembly int32 U@ + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method public hidebysig specialname instance !T get_V() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.IsReadOnlyAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::V@ + IL_0006: ret + } + + .method public hidebysig specialname instance int32 get_U() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.IsReadOnlyAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::U@ + IL_0006: ret + } + + .method public specialname rtspecialname + instance void .ctor(!T v, + int32 u) cil managed + { + .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, + class [runtime]System.Type) = ( 01 00 60 06 00 00 42 45 71 75 61 6C 73 31 35 2B + 45 71 75 61 6C 73 4D 69 63 72 6F 50 65 72 66 41 + 6E 64 43 6F 64 65 47 65 6E 65 72 61 74 69 6F 6E + 54 65 73 74 73 2B 53 6F 6D 65 47 65 6E 65 72 69 + 63 52 65 63 6F 72 64 60 31 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: stfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::V@ + IL_0007: ldarg.0 + IL_0008: ldarg.2 + IL_0009: stfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::U@ + IL_000e: ret + } + + .method public strict virtual instance string ToString() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldstr "%+A" + IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,string>,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1>::.ctor(string) + IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString,string>>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_000f: ldarg.0 + IL_0010: ldobj valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 + IL_0015: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,string>::Invoke(!0) + IL_001a: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (int32 V_0, + class [runtime]System.Collections.IComparer V_1, + !T V_2, + !T V_3, + int32 V_4, + int32 V_5) + IL_0000: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0005: stloc.1 + IL_0006: ldarg.0 + IL_0007: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::V@ + IL_000c: stloc.2 + IL_000d: ldarga.s obj + IL_000f: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::V@ + IL_0014: stloc.3 + IL_0015: ldloc.1 + IL_0016: ldloc.2 + IL_0017: ldloc.3 + IL_0018: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericComparisonWithComparerIntrinsic(class [runtime]System.Collections.IComparer, + !!0, + !!0) + IL_001d: stloc.0 + IL_001e: ldloc.0 + IL_001f: ldc.i4.0 + IL_0020: bge.s IL_0024 + + IL_0022: ldloc.0 + IL_0023: ret + + IL_0024: ldloc.0 + IL_0025: ldc.i4.0 + IL_0026: ble.s IL_002a + + IL_0028: ldloc.0 + IL_0029: ret + + IL_002a: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_002f: stloc.1 + IL_0030: ldarg.0 + IL_0031: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::U@ + IL_0036: stloc.s V_4 + IL_0038: ldarga.s obj + IL_003a: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::U@ + IL_003f: stloc.s V_5 + IL_0041: ldloc.s V_4 + IL_0043: ldloc.s V_5 + IL_0045: cgt + IL_0047: ldloc.s V_4 + IL_0049: ldloc.s V_5 + IL_004b: clt + IL_004d: sub + IL_004e: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 + IL_0007: call instance int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1) + IL_000c: ret + } + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [runtime]System.Collections.IComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 V_0, + int32 V_1, + !T V_2, + !T V_3, + int32 V_4, + int32 V_5) + IL_0000: ldarg.1 + IL_0001: unbox.any valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::V@ + IL_000d: stloc.2 + IL_000e: ldloca.s V_0 + IL_0010: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::V@ + IL_0015: stloc.3 + IL_0016: ldarg.2 + IL_0017: ldloc.2 + IL_0018: ldloc.3 + IL_0019: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericComparisonWithComparerIntrinsic(class [runtime]System.Collections.IComparer, + !!0, + !!0) + IL_001e: stloc.1 + IL_001f: ldloc.1 + IL_0020: ldc.i4.0 + IL_0021: bge.s IL_0025 + + IL_0023: ldloc.1 + IL_0024: ret + + IL_0025: ldloc.1 + IL_0026: ldc.i4.0 + IL_0027: ble.s IL_002b + + IL_0029: ldloc.1 + IL_002a: ret + + IL_002b: ldarg.0 + IL_002c: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::U@ + IL_0031: stloc.s V_4 + IL_0033: ldloca.s V_0 + IL_0035: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::U@ + IL_003a: stloc.s V_5 + IL_003c: ldloc.s V_4 + IL_003e: ldloc.s V_5 + IL_0040: cgt + IL_0042: ldloc.s V_4 + IL_0044: ldloc.s V_5 + IL_0046: clt + IL_0048: sub + IL_0049: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 7 + .locals init (int32 V_0, + !T V_1) + IL_0000: ldc.i4.0 + IL_0001: stloc.0 + IL_0002: ldc.i4 0x9e3779b9 + IL_0007: ldarg.0 + IL_0008: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::U@ + IL_000d: ldloc.0 + IL_000e: ldc.i4.6 + IL_000f: shl + IL_0010: ldloc.0 + IL_0011: ldc.i4.2 + IL_0012: shr + IL_0013: add + IL_0014: add + IL_0015: add + IL_0016: stloc.0 + IL_0017: ldc.i4 0x9e3779b9 + IL_001c: ldarg.0 + IL_001d: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::V@ + IL_0022: stloc.1 + IL_0023: ldarg.1 + IL_0024: ldloc.1 + IL_0025: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericHashWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, + !!0) + IL_002a: ldloc.0 + IL_002b: ldc.i4.6 + IL_002c: shl + IL_002d: ldloc.0 + IL_002e: ldc.i4.2 + IL_002f: shr + IL_0030: add + IL_0031: add + IL_0032: add + IL_0033: stloc.0 + IL_0034: ldloc.0 + IL_0035: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: call instance int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::GetHashCode(class [runtime]System.Collections.IEqualityComparer) + IL_000b: ret + } + + .method public hidebysig instance bool + Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (!T V_0, + !T V_1) + IL_0000: ldarg.0 + IL_0001: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::V@ + IL_0006: stloc.0 + IL_0007: ldarga.s obj + IL_0009: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::V@ + IL_000e: stloc.1 + IL_000f: ldarg.2 + IL_0010: ldloc.0 + IL_0011: ldloc.1 + IL_0012: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, + !!0, + !!0) + IL_0017: brfalse.s IL_0029 + + IL_0019: ldarg.0 + IL_001a: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::U@ + IL_001f: ldarga.s obj + IL_0021: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::U@ + IL_0026: ceq + IL_0028: ret + + IL_0029: ldc.i4.0 + IL_002a: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 V_0) + IL_0000: ldarg.1 + IL_0001: isinst valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 + IL_0006: brfalse.s IL_0018 + + IL_0008: ldarg.1 + IL_0009: unbox.any valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 + IL_000e: stloc.0 + IL_000f: ldarg.0 + IL_0010: ldloc.0 + IL_0011: ldarg.2 + IL_0012: call instance bool valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1, + class [runtime]System.Collections.IEqualityComparer) + IL_0017: ret + + IL_0018: ldc.i4.0 + IL_0019: ret + } + + .method public hidebysig virtual final instance bool Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (!T V_0, + !T V_1) + IL_0000: ldarg.0 + IL_0001: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::V@ + IL_0006: stloc.0 + IL_0007: ldarga.s obj + IL_0009: ldfld !0 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::V@ + IL_000e: stloc.1 + IL_000f: ldloc.0 + IL_0010: ldloc.1 + IL_0011: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityERIntrinsic(!!0, + !!0) + IL_0016: brfalse.s IL_0028 + + IL_0018: ldarg.0 + IL_0019: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::U@ + IL_001e: ldarga.s obj + IL_0020: ldfld int32 valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::U@ + IL_0025: ceq + IL_0027: ret + + IL_0028: ldc.i4.0 + IL_0029: ret + } + + .method public hidebysig virtual final instance bool Equals(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: isinst valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 + IL_0006: brfalse.s IL_0015 + + IL_0008: ldarg.0 + IL_0009: ldarg.1 + IL_000a: unbox.any valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 + IL_000f: call instance bool valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1) + IL_0014: ret + + IL_0015: ldc.i4.0 + IL_0016: ret + } + + .property instance !T V() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32) = ( 01 00 04 00 00 00 00 00 00 00 00 00 ) + .get instance !T assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::get_V() + } + .property instance int32 U() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32) = ( 01 00 04 00 00 00 01 00 00 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::get_U() + } + } + + .field static assembly bool arg@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 x@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 y@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method assembly specialname static bool get_arg@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 get_x@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 get_y@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0005: ret + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: ldc.i4.2 + IL_0002: newobj instance void valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::.ctor(!0, + int32) + IL_0007: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_000c: ldc.i4.2 + IL_000d: ldc.i4.3 + IL_000e: newobj instance void valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::.ctor(!0, + int32) + IL_0013: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0018: ldsflda valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_001d: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + IL_0022: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0027: call instance bool valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1, + class [runtime]System.Collections.IEqualityComparer) + IL_002c: stsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0031: ret + } + + .property bool arg@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get bool assembly/EqualsMicroPerfAndCodeGenerationTests::get_arg@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 + x@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 assembly/EqualsMicroPerfAndCodeGenerationTests::get_x@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 + y@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeGenericRecord`1 assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + } + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: call void assembly/EqualsMicroPerfAndCodeGenerationTests::staticInitialization@() + IL_0005: ret + } + +} + +.class private abstract auto ansi sealed ''.$assembly$fsx + extends [runtime]System.Object +{ + .field static assembly int32 init@ + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public static void main@() cil managed + { + .entrypoint + + .maxstack 8 + IL_0000: call void assembly::staticInitialization@() + IL_0005: ret + } + +} + + + + + + diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals16.fsx b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals16.fsx new file mode 100644 index 00000000000..f233a9c2995 --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals16.fsx @@ -0,0 +1,9 @@ +module EqualsMicroPerfAndCodeGenerationTests = + + [] + // exact Equals with comparer should be generated internal + type internal SomeStruct(v: int, u: int) = + member _.V = v + member _.U = u + + SomeStruct(1, 2) = SomeStruct(2, 3) |> ignore \ No newline at end of file diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals16.fsx.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals16.fsx.il.net472.bsl new file mode 100644 index 00000000000..be3fd3e5662 --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals16.fsx.il.net472.bsl @@ -0,0 +1,498 @@ + + + + + +.assembly extern runtime { } +.assembly extern FSharp.Core { } +.assembly assembly +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, + int32, + int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + + + + + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.mresource public FSharpSignatureData.assembly +{ + + +} +.mresource public FSharpOptimizationData.assembly +{ + + +} +.module assembly.exe + +.imagebase {value} +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 +.corflags 0x00000001 + + + + + +.class public abstract auto ansi sealed assembly + extends [runtime]System.Object +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class abstract auto ansi sealed nested public EqualsMicroPerfAndCodeGenerationTests + extends [runtime]System.Object + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class sequential ansi serializable sealed nested assembly SomeStruct + extends [runtime]System.ValueType + implements class [runtime]System.IEquatable`1, + [runtime]System.Collections.IStructuralEquatable, + class [runtime]System.IComparable`1, + [runtime]System.IComparable, + [runtime]System.Collections.IStructuralComparable + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.StructAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) + .field assembly int32 v + .field assembly int32 u + .method public hidebysig virtual final instance int32 CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (int32 V_0, + class [runtime]System.Collections.IComparer V_1, + int32 V_2, + int32 V_3) + IL_0000: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0005: stloc.1 + IL_0006: ldarg.0 + IL_0007: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_000c: stloc.2 + IL_000d: ldarga.s obj + IL_000f: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0014: stloc.3 + IL_0015: ldloc.2 + IL_0016: ldloc.3 + IL_0017: cgt + IL_0019: ldloc.2 + IL_001a: ldloc.3 + IL_001b: clt + IL_001d: sub + IL_001e: stloc.0 + IL_001f: ldloc.0 + IL_0020: ldc.i4.0 + IL_0021: bge.s IL_0025 + + IL_0023: ldloc.0 + IL_0024: ret + + IL_0025: ldloc.0 + IL_0026: ldc.i4.0 + IL_0027: ble.s IL_002b + + IL_0029: ldloc.0 + IL_002a: ret + + IL_002b: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0030: stloc.1 + IL_0031: ldarg.0 + IL_0032: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_0037: stloc.2 + IL_0038: ldarga.s obj + IL_003a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_003f: stloc.3 + IL_0040: ldloc.2 + IL_0041: ldloc.3 + IL_0042: cgt + IL_0044: ldloc.2 + IL_0045: ldloc.3 + IL_0046: clt + IL_0048: sub + IL_0049: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_0007: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct) + IL_000c: ret + } + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [runtime]System.Collections.IComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct V_0, + int32 V_1, + int32 V_2, + int32 V_3) + IL_0000: ldarg.1 + IL_0001: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_000d: stloc.2 + IL_000e: ldloca.s V_0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0015: stloc.3 + IL_0016: ldloc.2 + IL_0017: ldloc.3 + IL_0018: cgt + IL_001a: ldloc.2 + IL_001b: ldloc.3 + IL_001c: clt + IL_001e: sub + IL_001f: stloc.1 + IL_0020: ldloc.1 + IL_0021: ldc.i4.0 + IL_0022: bge.s IL_0026 + + IL_0024: ldloc.1 + IL_0025: ret + + IL_0026: ldloc.1 + IL_0027: ldc.i4.0 + IL_0028: ble.s IL_002c + + IL_002a: ldloc.1 + IL_002b: ret + + IL_002c: ldarg.0 + IL_002d: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_0032: stloc.2 + IL_0033: ldloca.s V_0 + IL_0035: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_003a: stloc.3 + IL_003b: ldloc.2 + IL_003c: ldloc.3 + IL_003d: cgt + IL_003f: ldloc.2 + IL_0040: ldloc.3 + IL_0041: clt + IL_0043: sub + IL_0044: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 7 + .locals init (int32 V_0) + IL_0000: ldc.i4.0 + IL_0001: stloc.0 + IL_0002: ldc.i4 0x9e3779b9 + IL_0007: ldarg.0 + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_000d: ldloc.0 + IL_000e: ldc.i4.6 + IL_000f: shl + IL_0010: ldloc.0 + IL_0011: ldc.i4.2 + IL_0012: shr + IL_0013: add + IL_0014: add + IL_0015: add + IL_0016: stloc.0 + IL_0017: ldc.i4 0x9e3779b9 + IL_001c: ldarg.0 + IL_001d: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0022: ldloc.0 + IL_0023: ldc.i4.6 + IL_0024: shl + IL_0025: ldloc.0 + IL_0026: ldc.i4.2 + IL_0027: shr + IL_0028: add + IL_0029: add + IL_002a: add + IL_002b: stloc.0 + IL_002c: ldloc.0 + IL_002d: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::GetHashCode(class [runtime]System.Collections.IEqualityComparer) + IL_000b: ret + } + + .method assembly hidebysig instance bool + Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0006: ldarga.s obj + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_000d: bne.un.s IL_001f + + IL_000f: ldarg.0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_0015: ldarga.s obj + IL_0017: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_0006: brfalse.s IL_0018 + + IL_0008: ldarg.1 + IL_0009: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_000e: stloc.0 + IL_000f: ldarg.0 + IL_0010: ldloc.0 + IL_0011: ldarg.2 + IL_0012: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct, + class [runtime]System.Collections.IEqualityComparer) + IL_0017: ret + + IL_0018: ldc.i4.0 + IL_0019: ret + } + + .method public specialname rtspecialname + instance void .ctor(int32 v, + int32 u) cil managed + { + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: stfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0007: ldarg.0 + IL_0008: ldarg.2 + IL_0009: stfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_000e: ret + } + + .method public hidebysig specialname instance int32 get_V() cil managed + { + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0006: ret + } + + .method public hidebysig specialname instance int32 get_U() cil managed + { + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_0006: ret + } + + .method public hidebysig virtual final instance bool Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0006: ldarga.s obj + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_000d: bne.un.s IL_001f + + IL_000f: ldarg.0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_0015: ldarga.s obj + IL_0017: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + } + + .method public hidebysig virtual final instance bool Equals(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_0006: brfalse.s IL_0015 + + IL_0008: ldarg.0 + IL_0009: ldarg.1 + IL_000a: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_000f: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct) + IL_0014: ret + + IL_0015: ldc.i4.0 + IL_0016: ret + } + + .property instance int32 V() + { + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::get_V() + } + .property instance int32 U() + { + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::get_U() + } + } + + .field static assembly bool arg@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct x@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct y@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method assembly specialname static bool get_arg@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct get_x@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct get_y@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0005: ret + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: ldc.i4.2 + IL_0002: newobj instance void assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::.ctor(int32, + int32) + IL_0007: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_000c: ldc.i4.2 + IL_000d: ldc.i4.3 + IL_000e: newobj instance void assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::.ctor(int32, + int32) + IL_0013: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0018: ldsflda valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_001d: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + IL_0022: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0027: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct, + class [runtime]System.Collections.IEqualityComparer) + IL_002c: stsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0031: ret + } + + .property bool arg@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get bool assembly/EqualsMicroPerfAndCodeGenerationTests::get_arg@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + x@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::get_x@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + y@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + } + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: call void assembly/EqualsMicroPerfAndCodeGenerationTests::staticInitialization@() + IL_0005: ret + } + +} + +.class private abstract auto ansi sealed ''.$assembly$fsx + extends [runtime]System.Object +{ + .field static assembly int32 init@ + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public static void main@() cil managed + { + .entrypoint + + .maxstack 8 + IL_0000: call void assembly::staticInitialization@() + IL_0005: ret + } + +} + + + + + + diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals16.fsx.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals16.fsx.il.netcore.bsl new file mode 100644 index 00000000000..be3fd3e5662 --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals16.fsx.il.netcore.bsl @@ -0,0 +1,498 @@ + + + + + +.assembly extern runtime { } +.assembly extern FSharp.Core { } +.assembly assembly +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, + int32, + int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + + + + + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.mresource public FSharpSignatureData.assembly +{ + + +} +.mresource public FSharpOptimizationData.assembly +{ + + +} +.module assembly.exe + +.imagebase {value} +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 +.corflags 0x00000001 + + + + + +.class public abstract auto ansi sealed assembly + extends [runtime]System.Object +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class abstract auto ansi sealed nested public EqualsMicroPerfAndCodeGenerationTests + extends [runtime]System.Object + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class sequential ansi serializable sealed nested assembly SomeStruct + extends [runtime]System.ValueType + implements class [runtime]System.IEquatable`1, + [runtime]System.Collections.IStructuralEquatable, + class [runtime]System.IComparable`1, + [runtime]System.IComparable, + [runtime]System.Collections.IStructuralComparable + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.StructAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) + .field assembly int32 v + .field assembly int32 u + .method public hidebysig virtual final instance int32 CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (int32 V_0, + class [runtime]System.Collections.IComparer V_1, + int32 V_2, + int32 V_3) + IL_0000: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0005: stloc.1 + IL_0006: ldarg.0 + IL_0007: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_000c: stloc.2 + IL_000d: ldarga.s obj + IL_000f: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0014: stloc.3 + IL_0015: ldloc.2 + IL_0016: ldloc.3 + IL_0017: cgt + IL_0019: ldloc.2 + IL_001a: ldloc.3 + IL_001b: clt + IL_001d: sub + IL_001e: stloc.0 + IL_001f: ldloc.0 + IL_0020: ldc.i4.0 + IL_0021: bge.s IL_0025 + + IL_0023: ldloc.0 + IL_0024: ret + + IL_0025: ldloc.0 + IL_0026: ldc.i4.0 + IL_0027: ble.s IL_002b + + IL_0029: ldloc.0 + IL_002a: ret + + IL_002b: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0030: stloc.1 + IL_0031: ldarg.0 + IL_0032: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_0037: stloc.2 + IL_0038: ldarga.s obj + IL_003a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_003f: stloc.3 + IL_0040: ldloc.2 + IL_0041: ldloc.3 + IL_0042: cgt + IL_0044: ldloc.2 + IL_0045: ldloc.3 + IL_0046: clt + IL_0048: sub + IL_0049: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_0007: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct) + IL_000c: ret + } + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [runtime]System.Collections.IComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct V_0, + int32 V_1, + int32 V_2, + int32 V_3) + IL_0000: ldarg.1 + IL_0001: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_000d: stloc.2 + IL_000e: ldloca.s V_0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0015: stloc.3 + IL_0016: ldloc.2 + IL_0017: ldloc.3 + IL_0018: cgt + IL_001a: ldloc.2 + IL_001b: ldloc.3 + IL_001c: clt + IL_001e: sub + IL_001f: stloc.1 + IL_0020: ldloc.1 + IL_0021: ldc.i4.0 + IL_0022: bge.s IL_0026 + + IL_0024: ldloc.1 + IL_0025: ret + + IL_0026: ldloc.1 + IL_0027: ldc.i4.0 + IL_0028: ble.s IL_002c + + IL_002a: ldloc.1 + IL_002b: ret + + IL_002c: ldarg.0 + IL_002d: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_0032: stloc.2 + IL_0033: ldloca.s V_0 + IL_0035: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_003a: stloc.3 + IL_003b: ldloc.2 + IL_003c: ldloc.3 + IL_003d: cgt + IL_003f: ldloc.2 + IL_0040: ldloc.3 + IL_0041: clt + IL_0043: sub + IL_0044: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 7 + .locals init (int32 V_0) + IL_0000: ldc.i4.0 + IL_0001: stloc.0 + IL_0002: ldc.i4 0x9e3779b9 + IL_0007: ldarg.0 + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_000d: ldloc.0 + IL_000e: ldc.i4.6 + IL_000f: shl + IL_0010: ldloc.0 + IL_0011: ldc.i4.2 + IL_0012: shr + IL_0013: add + IL_0014: add + IL_0015: add + IL_0016: stloc.0 + IL_0017: ldc.i4 0x9e3779b9 + IL_001c: ldarg.0 + IL_001d: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0022: ldloc.0 + IL_0023: ldc.i4.6 + IL_0024: shl + IL_0025: ldloc.0 + IL_0026: ldc.i4.2 + IL_0027: shr + IL_0028: add + IL_0029: add + IL_002a: add + IL_002b: stloc.0 + IL_002c: ldloc.0 + IL_002d: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::GetHashCode(class [runtime]System.Collections.IEqualityComparer) + IL_000b: ret + } + + .method assembly hidebysig instance bool + Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0006: ldarga.s obj + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_000d: bne.un.s IL_001f + + IL_000f: ldarg.0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_0015: ldarga.s obj + IL_0017: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_0006: brfalse.s IL_0018 + + IL_0008: ldarg.1 + IL_0009: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_000e: stloc.0 + IL_000f: ldarg.0 + IL_0010: ldloc.0 + IL_0011: ldarg.2 + IL_0012: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct, + class [runtime]System.Collections.IEqualityComparer) + IL_0017: ret + + IL_0018: ldc.i4.0 + IL_0019: ret + } + + .method public specialname rtspecialname + instance void .ctor(int32 v, + int32 u) cil managed + { + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: stfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0007: ldarg.0 + IL_0008: ldarg.2 + IL_0009: stfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_000e: ret + } + + .method public hidebysig specialname instance int32 get_V() cil managed + { + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0006: ret + } + + .method public hidebysig specialname instance int32 get_U() cil managed + { + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_0006: ret + } + + .method public hidebysig virtual final instance bool Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0006: ldarga.s obj + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_000d: bne.un.s IL_001f + + IL_000f: ldarg.0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_0015: ldarga.s obj + IL_0017: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::u + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + } + + .method public hidebysig virtual final instance bool Equals(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_0006: brfalse.s IL_0015 + + IL_0008: ldarg.0 + IL_0009: ldarg.1 + IL_000a: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_000f: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct) + IL_0014: ret + + IL_0015: ldc.i4.0 + IL_0016: ret + } + + .property instance int32 V() + { + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::get_V() + } + .property instance int32 U() + { + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::get_U() + } + } + + .field static assembly bool arg@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct x@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct y@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method assembly specialname static bool get_arg@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct get_x@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct get_y@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0005: ret + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: ldc.i4.2 + IL_0002: newobj instance void assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::.ctor(int32, + int32) + IL_0007: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_000c: ldc.i4.2 + IL_000d: ldc.i4.3 + IL_000e: newobj instance void assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::.ctor(int32, + int32) + IL_0013: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0018: ldsflda valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_001d: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + IL_0022: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0027: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct, + class [runtime]System.Collections.IEqualityComparer) + IL_002c: stsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0031: ret + } + + .property bool arg@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get bool assembly/EqualsMicroPerfAndCodeGenerationTests::get_arg@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + x@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::get_x@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + y@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + } + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: call void assembly/EqualsMicroPerfAndCodeGenerationTests::staticInitialization@() + IL_0005: ret + } + +} + +.class private abstract auto ansi sealed ''.$assembly$fsx + extends [runtime]System.Object +{ + .field static assembly int32 init@ + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public static void main@() cil managed + { + .entrypoint + + .maxstack 8 + IL_0000: call void assembly::staticInitialization@() + IL_0005: ret + } + +} + + + + + + diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals17.fsx b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals17.fsx new file mode 100644 index 00000000000..8f96402e865 --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals17.fsx @@ -0,0 +1,7 @@ +module EqualsMicroPerfAndCodeGenerationTests = + + [] + // exact Equals with comparer should be generated internal + type internal SomeUnion = SomeUnion of int * int + + SomeUnion (1, 2) = SomeUnion (2, 3) |> ignore \ No newline at end of file diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals17.fsx.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals17.fsx.il.net472.bsl new file mode 100644 index 00000000000..1bfb13e46ab --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals17.fsx.il.net472.bsl @@ -0,0 +1,586 @@ + + + + + +.assembly extern runtime { } +.assembly extern FSharp.Core { } +.assembly assembly +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, + int32, + int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + + + + + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.mresource public FSharpSignatureData.assembly +{ + + +} +.mresource public FSharpOptimizationData.assembly +{ + + +} +.module assembly.exe + +.imagebase {value} +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 +.corflags 0x00000001 + + + + + +.class public abstract auto ansi sealed assembly + extends [runtime]System.Object +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class abstract auto ansi sealed nested public EqualsMicroPerfAndCodeGenerationTests + extends [runtime]System.Object + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class sequential autochar serializable sealed nested assembly beforefieldinit SomeUnion + extends [runtime]System.ValueType + implements class [runtime]System.IEquatable`1, + [runtime]System.Collections.IStructuralEquatable, + class [runtime]System.IComparable`1, + [runtime]System.IComparable, + [runtime]System.Collections.IStructuralComparable + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.StructAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerDisplayAttribute::.ctor(string) = ( 01 00 15 7B 5F 5F 44 65 62 75 67 44 69 73 70 6C + 61 79 28 29 2C 6E 71 7D 00 00 ) + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 21 00 00 00 00 00 ) + .field assembly int32 item1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .field assembly int32 item2 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method assembly static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + NewSomeUnion(int32 item1, + int32 item2) cil managed + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) + + .maxstack 3 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion V_0) + IL_0000: ldloca.s V_0 + IL_0002: initobj assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0008: ldloca.s V_0 + IL_000a: ldarg.0 + IL_000b: stfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_0010: ldloca.s V_0 + IL_0012: ldarg.1 + IL_0013: stfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0018: ldloc.0 + IL_0019: ret + } + + .method assembly hidebysig instance int32 get_Item1() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_0006: ret + } + + .method assembly hidebysig instance int32 get_Item2() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0006: ret + } + + .method assembly hidebysig instance int32 get_Tag() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: ldc.i4.0 + IL_0003: ret + } + + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldstr "%+0.8A" + IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,string>::.ctor(string) + IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_000f: ldarg.0 + IL_0010: ldobj assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0015: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0) + IL_001a: ret + } + + .method public strict virtual instance string ToString() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldstr "%+A" + IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion>::.ctor(string) + IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_000f: ldarg.0 + IL_0010: ldobj assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0015: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0) + IL_001a: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (int32 V_0, + class [runtime]System.Collections.IComparer V_1, + int32 V_2, + int32 V_3) + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0007: stloc.1 + IL_0008: ldarg.0 + IL_0009: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_000e: stloc.2 + IL_000f: ldarga.s obj + IL_0011: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_0016: stloc.3 + IL_0017: ldloc.2 + IL_0018: ldloc.3 + IL_0019: cgt + IL_001b: ldloc.2 + IL_001c: ldloc.3 + IL_001d: clt + IL_001f: sub + IL_0020: stloc.0 + IL_0021: ldloc.0 + IL_0022: ldc.i4.0 + IL_0023: bge.s IL_0027 + + IL_0025: ldloc.0 + IL_0026: ret + + IL_0027: ldloc.0 + IL_0028: ldc.i4.0 + IL_0029: ble.s IL_002d + + IL_002b: ldloc.0 + IL_002c: ret + + IL_002d: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0032: stloc.1 + IL_0033: ldarg.0 + IL_0034: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0039: stloc.2 + IL_003a: ldarga.s obj + IL_003c: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0041: stloc.3 + IL_0042: ldloc.2 + IL_0043: ldloc.3 + IL_0044: cgt + IL_0046: ldloc.2 + IL_0047: ldloc.3 + IL_0048: clt + IL_004a: sub + IL_004b: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0007: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion) + IL_000c: ret + } + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [runtime]System.Collections.IComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion V_0, + int32 V_1, + int32 V_2, + int32 V_3) + IL_0000: ldarg.1 + IL_0001: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: pop + IL_0009: ldarg.0 + IL_000a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_000f: stloc.2 + IL_0010: ldloca.s V_0 + IL_0012: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_0017: stloc.3 + IL_0018: ldloc.2 + IL_0019: ldloc.3 + IL_001a: cgt + IL_001c: ldloc.2 + IL_001d: ldloc.3 + IL_001e: clt + IL_0020: sub + IL_0021: stloc.1 + IL_0022: ldloc.1 + IL_0023: ldc.i4.0 + IL_0024: bge.s IL_0028 + + IL_0026: ldloc.1 + IL_0027: ret + + IL_0028: ldloc.1 + IL_0029: ldc.i4.0 + IL_002a: ble.s IL_002e + + IL_002c: ldloc.1 + IL_002d: ret + + IL_002e: ldarg.0 + IL_002f: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0034: stloc.2 + IL_0035: ldloca.s V_0 + IL_0037: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_003c: stloc.3 + IL_003d: ldloc.2 + IL_003e: ldloc.3 + IL_003f: cgt + IL_0041: ldloc.2 + IL_0042: ldloc.3 + IL_0043: clt + IL_0045: sub + IL_0046: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 7 + .locals init (int32 V_0) + IL_0000: ldc.i4.0 + IL_0001: stloc.0 + IL_0002: ldarg.0 + IL_0003: pop + IL_0004: ldc.i4.0 + IL_0005: stloc.0 + IL_0006: ldc.i4 0x9e3779b9 + IL_000b: ldarg.0 + IL_000c: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0011: ldloc.0 + IL_0012: ldc.i4.6 + IL_0013: shl + IL_0014: ldloc.0 + IL_0015: ldc.i4.2 + IL_0016: shr + IL_0017: add + IL_0018: add + IL_0019: add + IL_001a: stloc.0 + IL_001b: ldc.i4 0x9e3779b9 + IL_0020: ldarg.0 + IL_0021: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_0026: ldloc.0 + IL_0027: ldc.i4.6 + IL_0028: shl + IL_0029: ldloc.0 + IL_002a: ldc.i4.2 + IL_002b: shr + IL_002c: add + IL_002d: add + IL_002e: add + IL_002f: stloc.0 + IL_0030: ldloc.0 + IL_0031: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::GetHashCode(class [runtime]System.Collections.IEqualityComparer) + IL_000b: ret + } + + .method assembly hidebysig instance bool + Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: ldarg.0 + IL_0003: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_0008: ldarga.s obj + IL_000a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_000f: bne.un.s IL_0021 + + IL_0011: ldarg.0 + IL_0012: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0017: ldarga.s obj + IL_0019: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_001e: ceq + IL_0020: ret + + IL_0021: ldc.i4.0 + IL_0022: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0006: brfalse.s IL_0018 + + IL_0008: ldarg.1 + IL_0009: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_000e: stloc.0 + IL_000f: ldarg.0 + IL_0010: ldloc.0 + IL_0011: ldarg.2 + IL_0012: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion, + class [runtime]System.Collections.IEqualityComparer) + IL_0017: ret + + IL_0018: ldc.i4.0 + IL_0019: ret + } + + .method public hidebysig virtual final instance bool Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: ldarg.0 + IL_0003: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_0008: ldarga.s obj + IL_000a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_000f: bne.un.s IL_0021 + + IL_0011: ldarg.0 + IL_0012: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0017: ldarga.s obj + IL_0019: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_001e: ceq + IL_0020: ret + + IL_0021: ldc.i4.0 + IL_0022: ret + } + + .method public hidebysig virtual final instance bool Equals(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0006: brfalse.s IL_0015 + + IL_0008: ldarg.0 + IL_0009: ldarg.1 + IL_000a: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_000f: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion) + IL_0014: ret + + IL_0015: ldc.i4.0 + IL_0016: ret + } + + .property instance int32 Tag() + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::get_Tag() + } + .property instance int32 Item1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32, + int32) = ( 01 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::get_Item1() + } + .property instance int32 Item2() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32, + int32) = ( 01 00 04 00 00 00 00 00 00 00 01 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::get_Item2() + } + } + + .field static assembly bool arg@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion x@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion y@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method assembly specialname static bool get_arg@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion get_x@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion get_y@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0005: ret + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: ldc.i4.2 + IL_0002: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::NewSomeUnion(int32, + int32) + IL_0007: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_000c: ldc.i4.2 + IL_000d: ldc.i4.3 + IL_000e: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::NewSomeUnion(int32, + int32) + IL_0013: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0018: ldsflda valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_001d: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + IL_0022: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0027: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion, + class [runtime]System.Collections.IEqualityComparer) + IL_002c: stsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0031: ret + } + + .property bool arg@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get bool assembly/EqualsMicroPerfAndCodeGenerationTests::get_arg@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + x@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::get_x@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + y@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + } + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: call void assembly/EqualsMicroPerfAndCodeGenerationTests::staticInitialization@() + IL_0005: ret + } + +} + +.class private abstract auto ansi sealed ''.$assembly$fsx + extends [runtime]System.Object +{ + .field static assembly int32 init@ + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public static void main@() cil managed + { + .entrypoint + + .maxstack 8 + IL_0000: call void assembly::staticInitialization@() + IL_0005: ret + } + +} + + + + + + diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals17.fsx.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals17.fsx.il.netcore.bsl new file mode 100644 index 00000000000..4387b3cb60f --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals17.fsx.il.netcore.bsl @@ -0,0 +1,586 @@ + + + + + +.assembly extern runtime { } +.assembly extern FSharp.Core { } +.assembly assembly +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, + int32, + int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + + + + + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.mresource public FSharpSignatureData.assembly +{ + + +} +.mresource public FSharpOptimizationData.assembly +{ + + +} +.module assembly.exe + +.imagebase {value} +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 +.corflags 0x00000001 + + + + + +.class public abstract auto ansi sealed assembly + extends [runtime]System.Object +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class abstract auto ansi sealed nested public EqualsMicroPerfAndCodeGenerationTests + extends [runtime]System.Object + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class sequential autochar serializable sealed nested assembly beforefieldinit SomeUnion + extends [runtime]System.ValueType + implements class [runtime]System.IEquatable`1, + [runtime]System.Collections.IStructuralEquatable, + class [runtime]System.IComparable`1, + [runtime]System.IComparable, + [runtime]System.Collections.IStructuralComparable + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.StructAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerDisplayAttribute::.ctor(string) = ( 01 00 15 7B 5F 5F 44 65 62 75 67 44 69 73 70 6C + 61 79 28 29 2C 6E 71 7D 00 00 ) + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 21 00 00 00 00 00 ) + .field assembly int32 item1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .field assembly int32 item2 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method assembly static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + NewSomeUnion(int32 item1, + int32 item2) cil managed + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) + + .maxstack 3 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion V_0) + IL_0000: ldloca.s V_0 + IL_0002: initobj assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0008: ldloca.s V_0 + IL_000a: ldarg.0 + IL_000b: stfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_0010: ldloca.s V_0 + IL_0012: ldarg.1 + IL_0013: stfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0018: ldloc.0 + IL_0019: ret + } + + .method assembly hidebysig instance int32 get_Item1() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_0006: ret + } + + .method assembly hidebysig instance int32 get_Item2() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0006: ret + } + + .method assembly hidebysig instance int32 get_Tag() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: ldc.i4.0 + IL_0003: ret + } + + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldstr "%+0.8A" + IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,string>::.ctor(string) + IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_000f: ldarg.0 + IL_0010: ldobj assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0015: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0) + IL_001a: ret + } + + .method public strict virtual instance string ToString() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldstr "%+A" + IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion>::.ctor(string) + IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_000f: ldarg.0 + IL_0010: ldobj assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0015: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0) + IL_001a: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (int32 V_0, + class [runtime]System.Collections.IComparer V_1, + int32 V_2, + int32 V_3) + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0007: stloc.1 + IL_0008: ldarg.0 + IL_0009: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_000e: stloc.2 + IL_000f: ldarga.s obj + IL_0011: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_0016: stloc.3 + IL_0017: ldloc.2 + IL_0018: ldloc.3 + IL_0019: cgt + IL_001b: ldloc.2 + IL_001c: ldloc.3 + IL_001d: clt + IL_001f: sub + IL_0020: stloc.0 + IL_0021: ldloc.0 + IL_0022: ldc.i4.0 + IL_0023: bge.s IL_0027 + + IL_0025: ldloc.0 + IL_0026: ret + + IL_0027: ldloc.0 + IL_0028: ldc.i4.0 + IL_0029: ble.s IL_002d + + IL_002b: ldloc.0 + IL_002c: ret + + IL_002d: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0032: stloc.1 + IL_0033: ldarg.0 + IL_0034: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0039: stloc.2 + IL_003a: ldarga.s obj + IL_003c: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0041: stloc.3 + IL_0042: ldloc.2 + IL_0043: ldloc.3 + IL_0044: cgt + IL_0046: ldloc.2 + IL_0047: ldloc.3 + IL_0048: clt + IL_004a: sub + IL_004b: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0007: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion) + IL_000c: ret + } + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [runtime]System.Collections.IComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion V_0, + int32 V_1, + int32 V_2, + int32 V_3) + IL_0000: ldarg.1 + IL_0001: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: pop + IL_0009: ldarg.0 + IL_000a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_000f: stloc.2 + IL_0010: ldloca.s V_0 + IL_0012: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_0017: stloc.3 + IL_0018: ldloc.2 + IL_0019: ldloc.3 + IL_001a: cgt + IL_001c: ldloc.2 + IL_001d: ldloc.3 + IL_001e: clt + IL_0020: sub + IL_0021: stloc.1 + IL_0022: ldloc.1 + IL_0023: ldc.i4.0 + IL_0024: bge.s IL_0028 + + IL_0026: ldloc.1 + IL_0027: ret + + IL_0028: ldloc.1 + IL_0029: ldc.i4.0 + IL_002a: ble.s IL_002e + + IL_002c: ldloc.1 + IL_002d: ret + + IL_002e: ldarg.0 + IL_002f: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0034: stloc.2 + IL_0035: ldloca.s V_0 + IL_0037: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_003c: stloc.3 + IL_003d: ldloc.2 + IL_003e: ldloc.3 + IL_003f: cgt + IL_0041: ldloc.2 + IL_0042: ldloc.3 + IL_0043: clt + IL_0045: sub + IL_0046: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 7 + .locals init (int32 V_0) + IL_0000: ldc.i4.0 + IL_0001: stloc.0 + IL_0002: ldarg.0 + IL_0003: pop + IL_0004: ldc.i4.0 + IL_0005: stloc.0 + IL_0006: ldc.i4 0x9e3779b9 + IL_000b: ldarg.0 + IL_000c: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0011: ldloc.0 + IL_0012: ldc.i4.6 + IL_0013: shl + IL_0014: ldloc.0 + IL_0015: ldc.i4.2 + IL_0016: shr + IL_0017: add + IL_0018: add + IL_0019: add + IL_001a: stloc.0 + IL_001b: ldc.i4 0x9e3779b9 + IL_0020: ldarg.0 + IL_0021: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_0026: ldloc.0 + IL_0027: ldc.i4.6 + IL_0028: shl + IL_0029: ldloc.0 + IL_002a: ldc.i4.2 + IL_002b: shr + IL_002c: add + IL_002d: add + IL_002e: add + IL_002f: stloc.0 + IL_0030: ldloc.0 + IL_0031: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::GetHashCode(class [runtime]System.Collections.IEqualityComparer) + IL_000b: ret + } + + .method assembly hidebysig instance bool + Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: ldarg.0 + IL_0003: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_0008: ldarga.s obj + IL_000a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_000f: bne.un.s IL_0021 + + IL_0011: ldarg.0 + IL_0012: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0017: ldarga.s obj + IL_0019: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_001e: ceq + IL_0020: ret + + IL_0021: ldc.i4.0 + IL_0022: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0006: brfalse.s IL_0018 + + IL_0008: ldarg.1 + IL_0009: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_000e: stloc.0 + IL_000f: ldarg.0 + IL_0010: ldloc.0 + IL_0011: ldarg.2 + IL_0012: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion, + class [runtime]System.Collections.IEqualityComparer) + IL_0017: ret + + IL_0018: ldc.i4.0 + IL_0019: ret + } + + .method public hidebysig virtual final instance bool Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: ldarg.0 + IL_0003: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_0008: ldarga.s obj + IL_000a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item1 + IL_000f: bne.un.s IL_0021 + + IL_0011: ldarg.0 + IL_0012: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_0017: ldarga.s obj + IL_0019: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item2 + IL_001e: ceq + IL_0020: ret + + IL_0021: ldc.i4.0 + IL_0022: ret + } + + .method public hidebysig virtual final instance bool Equals(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0006: brfalse.s IL_0015 + + IL_0008: ldarg.0 + IL_0009: ldarg.1 + IL_000a: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_000f: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion) + IL_0014: ret + + IL_0015: ldc.i4.0 + IL_0016: ret + } + + .property instance int32 Tag() + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::get_Tag() + } + .property instance int32 Item1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32, + int32) = ( 01 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::get_Item1() + } + .property instance int32 Item2() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32, + int32) = ( 01 00 04 00 00 00 00 00 00 00 01 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::get_Item2() + } + } + + .field static assembly bool arg@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion x@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion y@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method assembly specialname static bool get_arg@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion get_x@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion get_y@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0005: ret + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: ldc.i4.2 + IL_0002: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::NewSomeUnion(int32, + int32) + IL_0007: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_000c: ldc.i4.2 + IL_000d: ldc.i4.3 + IL_000e: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::NewSomeUnion(int32, + int32) + IL_0013: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0018: ldsflda valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_001d: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + IL_0022: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0027: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion, + class [runtime]System.Collections.IEqualityComparer) + IL_002c: stsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0031: ret + } + + .property bool arg@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get bool assembly/EqualsMicroPerfAndCodeGenerationTests::get_arg@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + x@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::get_x@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + y@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + } + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: call void assembly/EqualsMicroPerfAndCodeGenerationTests::staticInitialization@() + IL_0005: ret + } + +} + +.class private abstract auto ansi sealed ''.$assembly$fsx + extends [runtime]System.Object +{ + .field static assembly int32 init@ + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public static void main@() cil managed + { + .entrypoint + + .maxstack 8 + IL_0000: call void assembly::staticInitialization@() + IL_0005: ret + } + +} + + + + + + diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals18.fsx b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals18.fsx new file mode 100644 index 00000000000..004b80d17c3 --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals18.fsx @@ -0,0 +1,7 @@ +module EqualsMicroPerfAndCodeGenerationTests = + + [] + // exact Equals with comparer should be generated internal + type internal SomeRecord = { V: int; U: int } + + { V = 1; U = 2 } = { V = 2; U = 3 } |> ignore \ No newline at end of file diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals18.fsx.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals18.fsx.il.net472.bsl new file mode 100644 index 00000000000..26f5a4f110f --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals18.fsx.il.net472.bsl @@ -0,0 +1,624 @@ + + + + + +.assembly extern runtime { } +.assembly extern FSharp.Core { } +.assembly assembly +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, + int32, + int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + + + + + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.mresource public FSharpSignatureData.assembly +{ + + +} +.mresource public FSharpOptimizationData.assembly +{ + + +} +.module assembly.exe + +.imagebase {value} +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 +.corflags 0x00000001 + + + + + +.class public abstract auto ansi sealed assembly + extends [runtime]System.Object +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class abstract auto ansi sealed nested public EqualsMicroPerfAndCodeGenerationTests + extends [runtime]System.Object + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class sequential ansi serializable sealed nested assembly SomeRecord + extends [runtime]System.ValueType + implements class [runtime]System.IEquatable`1, + [runtime]System.Collections.IStructuralEquatable, + class [runtime]System.IComparable`1, + [runtime]System.IComparable, + [runtime]System.Collections.IStructuralComparable + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.StructAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 22 00 00 00 00 00 ) + .field assembly int32 V@ + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field assembly int32 U@ + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method assembly hidebysig specialname instance int32 get_V() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.IsReadOnlyAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0006: ret + } + + .method assembly hidebysig specialname instance int32 get_U() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.IsReadOnlyAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_0006: ret + } + + .method assembly specialname rtspecialname + instance void .ctor(int32 v, + int32 u) cil managed + { + .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, + class [runtime]System.Type) = ( 01 00 60 06 00 00 39 45 71 75 61 6C 73 31 38 2B + 45 71 75 61 6C 73 4D 69 63 72 6F 50 65 72 66 41 + 6E 64 43 6F 64 65 47 65 6E 65 72 61 74 69 6F 6E + 54 65 73 74 73 2B 53 6F 6D 65 52 65 63 6F 72 64 + 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: stfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0007: ldarg.0 + IL_0008: ldarg.2 + IL_0009: stfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_000e: ret + } + + .method public strict virtual instance string ToString() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldstr "%+A" + IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord>::.ctor(string) + IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_000f: ldarg.0 + IL_0010: ldobj assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_0015: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0) + IL_001a: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (int32 V_0, + class [runtime]System.Collections.IComparer V_1, + int32 V_2, + int32 V_3) + IL_0000: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0005: stloc.1 + IL_0006: ldarg.0 + IL_0007: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_000c: stloc.2 + IL_000d: ldarga.s obj + IL_000f: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0014: stloc.3 + IL_0015: ldloc.2 + IL_0016: ldloc.3 + IL_0017: cgt + IL_0019: ldloc.2 + IL_001a: ldloc.3 + IL_001b: clt + IL_001d: sub + IL_001e: stloc.0 + IL_001f: ldloc.0 + IL_0020: ldc.i4.0 + IL_0021: bge.s IL_0025 + + IL_0023: ldloc.0 + IL_0024: ret + + IL_0025: ldloc.0 + IL_0026: ldc.i4.0 + IL_0027: ble.s IL_002b + + IL_0029: ldloc.0 + IL_002a: ret + + IL_002b: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0030: stloc.1 + IL_0031: ldarg.0 + IL_0032: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_0037: stloc.2 + IL_0038: ldarga.s obj + IL_003a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_003f: stloc.3 + IL_0040: ldloc.2 + IL_0041: ldloc.3 + IL_0042: cgt + IL_0044: ldloc.2 + IL_0045: ldloc.3 + IL_0046: clt + IL_0048: sub + IL_0049: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_0007: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord) + IL_000c: ret + } + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [runtime]System.Collections.IComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord V_0, + int32 V_1, + int32 V_2, + int32 V_3) + IL_0000: ldarg.1 + IL_0001: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_000d: stloc.2 + IL_000e: ldloca.s V_0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0015: stloc.3 + IL_0016: ldloc.2 + IL_0017: ldloc.3 + IL_0018: cgt + IL_001a: ldloc.2 + IL_001b: ldloc.3 + IL_001c: clt + IL_001e: sub + IL_001f: stloc.1 + IL_0020: ldloc.1 + IL_0021: ldc.i4.0 + IL_0022: bge.s IL_0026 + + IL_0024: ldloc.1 + IL_0025: ret + + IL_0026: ldloc.1 + IL_0027: ldc.i4.0 + IL_0028: ble.s IL_002c + + IL_002a: ldloc.1 + IL_002b: ret + + IL_002c: ldarg.0 + IL_002d: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_0032: stloc.2 + IL_0033: ldloca.s V_0 + IL_0035: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_003a: stloc.3 + IL_003b: ldloc.2 + IL_003c: ldloc.3 + IL_003d: cgt + IL_003f: ldloc.2 + IL_0040: ldloc.3 + IL_0041: clt + IL_0043: sub + IL_0044: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 7 + .locals init (int32 V_0) + IL_0000: ldc.i4.0 + IL_0001: stloc.0 + IL_0002: ldc.i4 0x9e3779b9 + IL_0007: ldarg.0 + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_000d: ldloc.0 + IL_000e: ldc.i4.6 + IL_000f: shl + IL_0010: ldloc.0 + IL_0011: ldc.i4.2 + IL_0012: shr + IL_0013: add + IL_0014: add + IL_0015: add + IL_0016: stloc.0 + IL_0017: ldc.i4 0x9e3779b9 + IL_001c: ldarg.0 + IL_001d: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0022: ldloc.0 + IL_0023: ldc.i4.6 + IL_0024: shl + IL_0025: ldloc.0 + IL_0026: ldc.i4.2 + IL_0027: shr + IL_0028: add + IL_0029: add + IL_002a: add + IL_002b: stloc.0 + IL_002c: ldloc.0 + IL_002d: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::GetHashCode(class [runtime]System.Collections.IEqualityComparer) + IL_000b: ret + } + + .method assembly hidebysig instance bool + Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0006: ldarga.s obj + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_000d: bne.un.s IL_001f + + IL_000f: ldarg.0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_0015: ldarga.s obj + IL_0017: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_0006: brfalse.s IL_0018 + + IL_0008: ldarg.1 + IL_0009: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_000e: stloc.0 + IL_000f: ldarg.0 + IL_0010: ldloc.0 + IL_0011: ldarg.2 + IL_0012: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord, + class [runtime]System.Collections.IEqualityComparer) + IL_0017: ret + + IL_0018: ldc.i4.0 + IL_0019: ret + } + + .method public hidebysig virtual final instance bool Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0006: ldarga.s obj + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_000d: bne.un.s IL_001f + + IL_000f: ldarg.0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_0015: ldarga.s obj + IL_0017: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + } + + .method public hidebysig virtual final instance bool Equals(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_0006: brfalse.s IL_0015 + + IL_0008: ldarg.0 + IL_0009: ldarg.1 + IL_000a: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_000f: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord) + IL_0014: ret + + IL_0015: ldc.i4.0 + IL_0016: ret + } + + .property instance int32 V() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32) = ( 01 00 04 00 00 00 00 00 00 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::get_V() + } + .property instance int32 U() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32) = ( 01 00 04 00 00 00 01 00 00 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::get_U() + } + } + + .field static assembly bool arg@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord x@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord y@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method assembly specialname static bool get_arg@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord get_x@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord get_y@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0005: ret + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: ldc.i4.2 + IL_0002: newobj instance void assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::.ctor(int32, + int32) + IL_0007: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_000c: ldc.i4.2 + IL_000d: ldc.i4.3 + IL_000e: newobj instance void assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::.ctor(int32, + int32) + IL_0013: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0018: ldsflda valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_001d: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + IL_0022: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0027: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord, + class [runtime]System.Collections.IEqualityComparer) + IL_002c: stsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0031: ret + } + + .property bool arg@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get bool assembly/EqualsMicroPerfAndCodeGenerationTests::get_arg@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + x@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::get_x@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + y@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + } + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: call void assembly/EqualsMicroPerfAndCodeGenerationTests::staticInitialization@() + IL_0005: ret + } + +} + +.class private abstract auto ansi sealed ''.$assembly$fsx + extends [runtime]System.Object +{ + .field static assembly int32 init@ + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public static void main@() cil managed + { + .entrypoint + + .maxstack 8 + IL_0000: call void assembly::staticInitialization@() + IL_0005: ret + } + +} + +.class private auto ansi serializable sealed System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes + extends [runtime]System.Enum +{ + .custom instance void [runtime]System.FlagsAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .field public specialname rtspecialname int32 value__ + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes All = int32(0xFFFFFFFF) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes None = int32(0x00000000) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes PublicParameterlessConstructor = int32(0x00000001) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes PublicConstructors = int32(0x00000003) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes NonPublicConstructors = int32(0x00000004) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes PublicMethods = int32(0x00000008) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes NonPublicMethods = int32(0x00000010) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes PublicFields = int32(0x00000020) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes NonPublicFields = int32(0x00000040) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes PublicNestedTypes = int32(0x00000080) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes NonPublicNestedTypes = int32(0x00000100) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes PublicProperties = int32(0x00000200) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes NonPublicProperties = int32(0x00000400) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes PublicEvents = int32(0x00000800) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes NonPublicEvents = int32(0x00001000) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes Interfaces = int32(0x00002000) +} + +.class private auto ansi beforefieldinit System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute + extends [runtime]System.Attribute +{ + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .field private valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes MemberType@ + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .field private class [runtime]System.Type Type@ + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public specialname rtspecialname + instance void .ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes MemberType, + class [runtime]System.Type Type) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [runtime]System.Attribute::.ctor() + IL_0006: ldarg.0 + IL_0007: ldarg.1 + IL_0008: stfld valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::MemberType@ + IL_000d: ldarg.0 + IL_000e: ldarg.2 + IL_000f: stfld class [runtime]System.Type System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::Type@ + IL_0014: ret + } + + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld class [runtime]System.Type System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::Type@ + IL_0006: ret + } + + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::MemberType@ + IL_0006: ret + } + + .property instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes + MemberType() + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .get instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::get_MemberType() + } + .property instance class [runtime]System.Type + Type() + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .get instance class [runtime]System.Type System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::get_Type() + } +} + + + + + + diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals18.fsx.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals18.fsx.il.netcore.bsl new file mode 100644 index 00000000000..1247f45339f --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals18.fsx.il.netcore.bsl @@ -0,0 +1,532 @@ + + + + + +.assembly extern runtime { } +.assembly extern FSharp.Core { } +.assembly assembly +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, + int32, + int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + + + + + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.mresource public FSharpSignatureData.assembly +{ + + +} +.mresource public FSharpOptimizationData.assembly +{ + + +} +.module assembly.exe + +.imagebase {value} +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 +.corflags 0x00000001 + + + + + +.class public abstract auto ansi sealed assembly + extends [runtime]System.Object +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class abstract auto ansi sealed nested public EqualsMicroPerfAndCodeGenerationTests + extends [runtime]System.Object + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class sequential ansi serializable sealed nested assembly SomeRecord + extends [runtime]System.ValueType + implements class [runtime]System.IEquatable`1, + [runtime]System.Collections.IStructuralEquatable, + class [runtime]System.IComparable`1, + [runtime]System.IComparable, + [runtime]System.Collections.IStructuralComparable + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.StructAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 22 00 00 00 00 00 ) + .field assembly int32 V@ + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field assembly int32 U@ + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method assembly hidebysig specialname instance int32 get_V() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.IsReadOnlyAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0006: ret + } + + .method assembly hidebysig specialname instance int32 get_U() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.IsReadOnlyAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_0006: ret + } + + .method assembly specialname rtspecialname + instance void .ctor(int32 v, + int32 u) cil managed + { + .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, + class [runtime]System.Type) = ( 01 00 60 06 00 00 39 45 71 75 61 6C 73 31 38 2B + 45 71 75 61 6C 73 4D 69 63 72 6F 50 65 72 66 41 + 6E 64 43 6F 64 65 47 65 6E 65 72 61 74 69 6F 6E + 54 65 73 74 73 2B 53 6F 6D 65 52 65 63 6F 72 64 + 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: stfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0007: ldarg.0 + IL_0008: ldarg.2 + IL_0009: stfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_000e: ret + } + + .method public strict virtual instance string ToString() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldstr "%+A" + IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord>::.ctor(string) + IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_000f: ldarg.0 + IL_0010: ldobj assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_0015: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0) + IL_001a: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (int32 V_0, + class [runtime]System.Collections.IComparer V_1, + int32 V_2, + int32 V_3) + IL_0000: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0005: stloc.1 + IL_0006: ldarg.0 + IL_0007: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_000c: stloc.2 + IL_000d: ldarga.s obj + IL_000f: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0014: stloc.3 + IL_0015: ldloc.2 + IL_0016: ldloc.3 + IL_0017: cgt + IL_0019: ldloc.2 + IL_001a: ldloc.3 + IL_001b: clt + IL_001d: sub + IL_001e: stloc.0 + IL_001f: ldloc.0 + IL_0020: ldc.i4.0 + IL_0021: bge.s IL_0025 + + IL_0023: ldloc.0 + IL_0024: ret + + IL_0025: ldloc.0 + IL_0026: ldc.i4.0 + IL_0027: ble.s IL_002b + + IL_0029: ldloc.0 + IL_002a: ret + + IL_002b: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0030: stloc.1 + IL_0031: ldarg.0 + IL_0032: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_0037: stloc.2 + IL_0038: ldarga.s obj + IL_003a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_003f: stloc.3 + IL_0040: ldloc.2 + IL_0041: ldloc.3 + IL_0042: cgt + IL_0044: ldloc.2 + IL_0045: ldloc.3 + IL_0046: clt + IL_0048: sub + IL_0049: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_0007: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord) + IL_000c: ret + } + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [runtime]System.Collections.IComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord V_0, + int32 V_1, + int32 V_2, + int32 V_3) + IL_0000: ldarg.1 + IL_0001: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_000d: stloc.2 + IL_000e: ldloca.s V_0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0015: stloc.3 + IL_0016: ldloc.2 + IL_0017: ldloc.3 + IL_0018: cgt + IL_001a: ldloc.2 + IL_001b: ldloc.3 + IL_001c: clt + IL_001e: sub + IL_001f: stloc.1 + IL_0020: ldloc.1 + IL_0021: ldc.i4.0 + IL_0022: bge.s IL_0026 + + IL_0024: ldloc.1 + IL_0025: ret + + IL_0026: ldloc.1 + IL_0027: ldc.i4.0 + IL_0028: ble.s IL_002c + + IL_002a: ldloc.1 + IL_002b: ret + + IL_002c: ldarg.0 + IL_002d: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_0032: stloc.2 + IL_0033: ldloca.s V_0 + IL_0035: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_003a: stloc.3 + IL_003b: ldloc.2 + IL_003c: ldloc.3 + IL_003d: cgt + IL_003f: ldloc.2 + IL_0040: ldloc.3 + IL_0041: clt + IL_0043: sub + IL_0044: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 7 + .locals init (int32 V_0) + IL_0000: ldc.i4.0 + IL_0001: stloc.0 + IL_0002: ldc.i4 0x9e3779b9 + IL_0007: ldarg.0 + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_000d: ldloc.0 + IL_000e: ldc.i4.6 + IL_000f: shl + IL_0010: ldloc.0 + IL_0011: ldc.i4.2 + IL_0012: shr + IL_0013: add + IL_0014: add + IL_0015: add + IL_0016: stloc.0 + IL_0017: ldc.i4 0x9e3779b9 + IL_001c: ldarg.0 + IL_001d: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0022: ldloc.0 + IL_0023: ldc.i4.6 + IL_0024: shl + IL_0025: ldloc.0 + IL_0026: ldc.i4.2 + IL_0027: shr + IL_0028: add + IL_0029: add + IL_002a: add + IL_002b: stloc.0 + IL_002c: ldloc.0 + IL_002d: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::GetHashCode(class [runtime]System.Collections.IEqualityComparer) + IL_000b: ret + } + + .method assembly hidebysig instance bool + Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0006: ldarga.s obj + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_000d: bne.un.s IL_001f + + IL_000f: ldarg.0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_0015: ldarga.s obj + IL_0017: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_0006: brfalse.s IL_0018 + + IL_0008: ldarg.1 + IL_0009: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_000e: stloc.0 + IL_000f: ldarg.0 + IL_0010: ldloc.0 + IL_0011: ldarg.2 + IL_0012: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord, + class [runtime]System.Collections.IEqualityComparer) + IL_0017: ret + + IL_0018: ldc.i4.0 + IL_0019: ret + } + + .method public hidebysig virtual final instance bool Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0006: ldarga.s obj + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_000d: bne.un.s IL_001f + + IL_000f: ldarg.0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_0015: ldarga.s obj + IL_0017: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::U@ + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + } + + .method public hidebysig virtual final instance bool Equals(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_0006: brfalse.s IL_0015 + + IL_0008: ldarg.0 + IL_0009: ldarg.1 + IL_000a: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_000f: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord) + IL_0014: ret + + IL_0015: ldc.i4.0 + IL_0016: ret + } + + .property instance int32 V() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32) = ( 01 00 04 00 00 00 00 00 00 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::get_V() + } + .property instance int32 U() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32) = ( 01 00 04 00 00 00 01 00 00 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::get_U() + } + } + + .field static assembly bool arg@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord x@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field static assembly valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord y@1 + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method assembly specialname static bool get_arg@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord get_x@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_0005: ret + } + + .method assembly specialname static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord get_y@1() cil managed + { + + .maxstack 8 + IL_0000: ldsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0005: ret + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.1 + IL_0001: ldc.i4.2 + IL_0002: newobj instance void assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::.ctor(int32, + int32) + IL_0007: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_000c: ldc.i4.2 + IL_000d: ldc.i4.3 + IL_000e: newobj instance void assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::.ctor(int32, + int32) + IL_0013: stsfld valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::y@1 + IL_0018: ldsflda valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::x@1 + IL_001d: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + IL_0022: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0027: call instance bool assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord, + class [runtime]System.Collections.IEqualityComparer) + IL_002c: stsfld bool assembly/EqualsMicroPerfAndCodeGenerationTests::arg@1 + IL_0031: ret + } + + .property bool arg@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get bool assembly/EqualsMicroPerfAndCodeGenerationTests::get_arg@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + x@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::get_x@1() + } + .property valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + y@1() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 09 00 00 00 00 00 ) + .get valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord assembly/EqualsMicroPerfAndCodeGenerationTests::get_y@1() + } + } + + .method private specialname rtspecialname static void .cctor() cil managed + { + + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: stsfld int32 ''.$assembly$fsx::init@ + IL_0006: ldsfld int32 ''.$assembly$fsx::init@ + IL_000b: pop + IL_000c: ret + } + + .method assembly specialname static void staticInitialization@() cil managed + { + + .maxstack 8 + IL_0000: call void assembly/EqualsMicroPerfAndCodeGenerationTests::staticInitialization@() + IL_0005: ret + } + +} + +.class private abstract auto ansi sealed ''.$assembly$fsx + extends [runtime]System.Object +{ + .field static assembly int32 init@ + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public static void main@() cil managed + { + .entrypoint + + .maxstack 8 + IL_0000: call void assembly::staticInitialization@() + IL_0005: ret + } + +} + + + + + + diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals19.fsx b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals19.fsx new file mode 100644 index 00000000000..28f38c3301b --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals19.fsx @@ -0,0 +1,8 @@ +module EqualsMicroPerfAndCodeGenerationTests = + + [] + type SomeStruct(v: int) = + member _.V = v + + // the equality test should be a function, otherwise might get inlined + let test x y = SomeStruct x = SomeStruct y \ No newline at end of file diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals19.fsx.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals19.fsx.il.net472.bsl new file mode 100644 index 00000000000..c6b642fadb4 --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals19.fsx.il.net472.bsl @@ -0,0 +1,313 @@ + + + + + +.assembly extern runtime { } +.assembly extern FSharp.Core { } +.assembly assembly +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, + int32, + int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + + + + + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.mresource public FSharpSignatureData.assembly +{ + + +} +.mresource public FSharpOptimizationData.assembly +{ + + +} +.module assembly.exe + +.imagebase {value} +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 +.corflags 0x00000001 + + + + + +.class public abstract auto ansi sealed assembly + extends [runtime]System.Object +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class abstract auto ansi sealed nested public EqualsMicroPerfAndCodeGenerationTests + extends [runtime]System.Object + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class sequential ansi serializable sealed nested public SomeStruct + extends [runtime]System.ValueType + implements class [runtime]System.IEquatable`1, + [runtime]System.Collections.IStructuralEquatable, + class [runtime]System.IComparable`1, + [runtime]System.IComparable, + [runtime]System.Collections.IStructuralComparable + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.StructAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) + .field assembly int32 v + .method public hidebysig virtual final instance int32 CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Collections.IComparer V_0, + int32 V_1, + int32 V_2) + IL_0000: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0005: stloc.0 + IL_0006: ldarg.0 + IL_0007: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_000c: stloc.1 + IL_000d: ldarga.s obj + IL_000f: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0014: stloc.2 + IL_0015: ldloc.1 + IL_0016: ldloc.2 + IL_0017: cgt + IL_0019: ldloc.1 + IL_001a: ldloc.2 + IL_001b: clt + IL_001d: sub + IL_001e: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_0007: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct) + IL_000c: ret + } + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [runtime]System.Collections.IComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct V_0, + int32 V_1, + int32 V_2) + IL_0000: ldarg.1 + IL_0001: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_000d: stloc.1 + IL_000e: ldloca.s V_0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0015: stloc.2 + IL_0016: ldloc.1 + IL_0017: ldloc.2 + IL_0018: cgt + IL_001a: ldloc.1 + IL_001b: ldloc.2 + IL_001c: clt + IL_001e: sub + IL_001f: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 7 + .locals init (int32 V_0) + IL_0000: ldc.i4.0 + IL_0001: stloc.0 + IL_0002: ldc.i4 0x9e3779b9 + IL_0007: ldarg.0 + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_000d: ldloc.0 + IL_000e: ldc.i4.6 + IL_000f: shl + IL_0010: ldloc.0 + IL_0011: ldc.i4.2 + IL_0012: shr + IL_0013: add + IL_0014: add + IL_0015: add + IL_0016: stloc.0 + IL_0017: ldloc.0 + IL_0018: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::GetHashCode(class [runtime]System.Collections.IEqualityComparer) + IL_000b: ret + } + + .method public hidebysig instance bool + Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0006: ldarga.s obj + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_000d: ceq + IL_000f: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_0006: brfalse.s IL_001f + + IL_0008: ldarg.1 + IL_0009: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_000e: stloc.0 + IL_000f: ldarg.0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0015: ldloca.s V_0 + IL_0017: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + } + + .method public specialname rtspecialname instance void .ctor(int32 v) cil managed + { + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: stfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0007: ret + } + + .method public hidebysig specialname instance int32 get_V() cil managed + { + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0006: ret + } + + .method public hidebysig virtual final instance bool Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0006: ldarga.s obj + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_000d: ceq + IL_000f: ret + } + + .method public hidebysig virtual final instance bool Equals(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct V_0, + valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct V_1) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_0006: brfalse.s IL_0021 + + IL_0008: ldarg.1 + IL_0009: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_000e: stloc.0 + IL_000f: ldloc.0 + IL_0010: stloc.1 + IL_0011: ldarg.0 + IL_0012: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0017: ldloca.s V_1 + IL_0019: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_001e: ceq + IL_0020: ret + + IL_0021: ldc.i4.0 + IL_0022: ret + } + + .property instance int32 V() + { + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::get_V() + } + } + + .method public static bool test(int32 x, + int32 y) cil managed + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationArgumentCountsAttribute::.ctor(int32[]) = ( 01 00 02 00 00 00 01 00 00 00 01 00 00 00 00 00 ) + + .maxstack 4 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct V_0, + valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct V_1) + IL_0000: ldarg.0 + IL_0001: newobj instance void assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::.ctor(int32) + IL_0006: stloc.0 + IL_0007: ldarg.1 + IL_0008: newobj instance void assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::.ctor(int32) + IL_000d: stloc.1 + IL_000e: ldloca.s V_0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0015: ldloca.s V_1 + IL_0017: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_001c: ceq + IL_001e: ret + } + + } + +} + +.class private abstract auto ansi sealed ''.$assembly$fsx + extends [runtime]System.Object +{ + .method public static void main@() cil managed + { + .entrypoint + + .maxstack 8 + IL_0000: ret + } + +} + + + + + + diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals19.fsx.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals19.fsx.il.netcore.bsl new file mode 100644 index 00000000000..c6b642fadb4 --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals19.fsx.il.netcore.bsl @@ -0,0 +1,313 @@ + + + + + +.assembly extern runtime { } +.assembly extern FSharp.Core { } +.assembly assembly +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, + int32, + int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + + + + + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.mresource public FSharpSignatureData.assembly +{ + + +} +.mresource public FSharpOptimizationData.assembly +{ + + +} +.module assembly.exe + +.imagebase {value} +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 +.corflags 0x00000001 + + + + + +.class public abstract auto ansi sealed assembly + extends [runtime]System.Object +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class abstract auto ansi sealed nested public EqualsMicroPerfAndCodeGenerationTests + extends [runtime]System.Object + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class sequential ansi serializable sealed nested public SomeStruct + extends [runtime]System.ValueType + implements class [runtime]System.IEquatable`1, + [runtime]System.Collections.IStructuralEquatable, + class [runtime]System.IComparable`1, + [runtime]System.IComparable, + [runtime]System.Collections.IStructuralComparable + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.StructAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) + .field assembly int32 v + .method public hidebysig virtual final instance int32 CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Collections.IComparer V_0, + int32 V_1, + int32 V_2) + IL_0000: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0005: stloc.0 + IL_0006: ldarg.0 + IL_0007: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_000c: stloc.1 + IL_000d: ldarga.s obj + IL_000f: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0014: stloc.2 + IL_0015: ldloc.1 + IL_0016: ldloc.2 + IL_0017: cgt + IL_0019: ldloc.1 + IL_001a: ldloc.2 + IL_001b: clt + IL_001d: sub + IL_001e: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_0007: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct) + IL_000c: ret + } + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [runtime]System.Collections.IComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct V_0, + int32 V_1, + int32 V_2) + IL_0000: ldarg.1 + IL_0001: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_000d: stloc.1 + IL_000e: ldloca.s V_0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0015: stloc.2 + IL_0016: ldloc.1 + IL_0017: ldloc.2 + IL_0018: cgt + IL_001a: ldloc.1 + IL_001b: ldloc.2 + IL_001c: clt + IL_001e: sub + IL_001f: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 7 + .locals init (int32 V_0) + IL_0000: ldc.i4.0 + IL_0001: stloc.0 + IL_0002: ldc.i4 0x9e3779b9 + IL_0007: ldarg.0 + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_000d: ldloc.0 + IL_000e: ldc.i4.6 + IL_000f: shl + IL_0010: ldloc.0 + IL_0011: ldc.i4.2 + IL_0012: shr + IL_0013: add + IL_0014: add + IL_0015: add + IL_0016: stloc.0 + IL_0017: ldloc.0 + IL_0018: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::GetHashCode(class [runtime]System.Collections.IEqualityComparer) + IL_000b: ret + } + + .method public hidebysig instance bool + Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0006: ldarga.s obj + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_000d: ceq + IL_000f: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_0006: brfalse.s IL_001f + + IL_0008: ldarg.1 + IL_0009: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_000e: stloc.0 + IL_000f: ldarg.0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0015: ldloca.s V_0 + IL_0017: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + } + + .method public specialname rtspecialname instance void .ctor(int32 v) cil managed + { + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: stfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0007: ret + } + + .method public hidebysig specialname instance int32 get_V() cil managed + { + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0006: ret + } + + .method public hidebysig virtual final instance bool Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0006: ldarga.s obj + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_000d: ceq + IL_000f: ret + } + + .method public hidebysig virtual final instance bool Equals(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct V_0, + valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct V_1) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_0006: brfalse.s IL_0021 + + IL_0008: ldarg.1 + IL_0009: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct + IL_000e: stloc.0 + IL_000f: ldloc.0 + IL_0010: stloc.1 + IL_0011: ldarg.0 + IL_0012: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0017: ldloca.s V_1 + IL_0019: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_001e: ceq + IL_0020: ret + + IL_0021: ldc.i4.0 + IL_0022: ret + } + + .property instance int32 V() + { + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::get_V() + } + } + + .method public static bool test(int32 x, + int32 y) cil managed + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationArgumentCountsAttribute::.ctor(int32[]) = ( 01 00 02 00 00 00 01 00 00 00 01 00 00 00 00 00 ) + + .maxstack 4 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct V_0, + valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct V_1) + IL_0000: ldarg.0 + IL_0001: newobj instance void assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::.ctor(int32) + IL_0006: stloc.0 + IL_0007: ldarg.1 + IL_0008: newobj instance void assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::.ctor(int32) + IL_000d: stloc.1 + IL_000e: ldloca.s V_0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_0015: ldloca.s V_1 + IL_0017: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeStruct::v + IL_001c: ceq + IL_001e: ret + } + + } + +} + +.class private abstract auto ansi sealed ''.$assembly$fsx + extends [runtime]System.Object +{ + .method public static void main@() cil managed + { + .entrypoint + + .maxstack 8 + IL_0000: ret + } + +} + + + + + + diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals20.fsx b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals20.fsx new file mode 100644 index 00000000000..ce58edc5769 --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals20.fsx @@ -0,0 +1,7 @@ +module EqualsMicroPerfAndCodeGenerationTests = + + [] + type SomeUnion = SomeUnion of int + + // the equality test should be a function, otherwise might get inlined + let test x y = SomeUnion x = SomeUnion y \ No newline at end of file diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals20.fsx.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals20.fsx.il.net472.bsl new file mode 100644 index 00000000000..90cdef2e560 --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals20.fsx.il.net472.bsl @@ -0,0 +1,397 @@ + + + + + +.assembly extern runtime { } +.assembly extern FSharp.Core { } +.assembly assembly +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, + int32, + int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + + + + + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.mresource public FSharpSignatureData.assembly +{ + + +} +.mresource public FSharpOptimizationData.assembly +{ + + +} +.module assembly.exe + +.imagebase {value} +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 +.corflags 0x00000001 + + + + + +.class public abstract auto ansi sealed assembly + extends [runtime]System.Object +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class abstract auto ansi sealed nested public EqualsMicroPerfAndCodeGenerationTests + extends [runtime]System.Object + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class sequential autochar serializable sealed nested public beforefieldinit SomeUnion + extends [runtime]System.ValueType + implements class [runtime]System.IEquatable`1, + [runtime]System.Collections.IStructuralEquatable, + class [runtime]System.IComparable`1, + [runtime]System.IComparable, + [runtime]System.Collections.IStructuralComparable + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.StructAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerDisplayAttribute::.ctor(string) = ( 01 00 15 7B 5F 5F 44 65 62 75 67 44 69 73 70 6C + 61 79 28 29 2C 6E 71 7D 00 00 ) + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 01 00 00 00 00 00 ) + .field assembly int32 item + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion NewSomeUnion(int32 item) cil managed + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) + + .maxstack 2 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion V_0) + IL_0000: ldloca.s V_0 + IL_0002: initobj assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0008: ldloca.s V_0 + IL_000a: ldarg.0 + IL_000b: stfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_0010: ldloc.0 + IL_0011: ret + } + + .method public hidebysig instance int32 get_Item() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_0006: ret + } + + .method public hidebysig instance int32 get_Tag() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: ldc.i4.0 + IL_0003: ret + } + + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldstr "%+0.8A" + IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,string>::.ctor(string) + IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_000f: ldarg.0 + IL_0010: ldobj assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0015: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0) + IL_001a: ret + } + + .method public strict virtual instance string ToString() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldstr "%+A" + IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion>::.ctor(string) + IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_000f: ldarg.0 + IL_0010: ldobj assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0015: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0) + IL_001a: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Collections.IComparer V_0, + int32 V_1, + int32 V_2) + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_000e: stloc.1 + IL_000f: ldarga.s obj + IL_0011: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_0016: stloc.2 + IL_0017: ldloc.1 + IL_0018: ldloc.2 + IL_0019: cgt + IL_001b: ldloc.1 + IL_001c: ldloc.2 + IL_001d: clt + IL_001f: sub + IL_0020: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0007: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion) + IL_000c: ret + } + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [runtime]System.Collections.IComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion V_0, + int32 V_1, + int32 V_2) + IL_0000: ldarg.1 + IL_0001: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: pop + IL_0009: ldarg.0 + IL_000a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_000f: stloc.1 + IL_0010: ldloca.s V_0 + IL_0012: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_0017: stloc.2 + IL_0018: ldloc.1 + IL_0019: ldloc.2 + IL_001a: cgt + IL_001c: ldloc.1 + IL_001d: ldloc.2 + IL_001e: clt + IL_0020: sub + IL_0021: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 7 + .locals init (int32 V_0) + IL_0000: ldc.i4.0 + IL_0001: stloc.0 + IL_0002: ldarg.0 + IL_0003: pop + IL_0004: ldc.i4.0 + IL_0005: stloc.0 + IL_0006: ldc.i4 0x9e3779b9 + IL_000b: ldarg.0 + IL_000c: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_0011: ldloc.0 + IL_0012: ldc.i4.6 + IL_0013: shl + IL_0014: ldloc.0 + IL_0015: ldc.i4.2 + IL_0016: shr + IL_0017: add + IL_0018: add + IL_0019: add + IL_001a: stloc.0 + IL_001b: ldloc.0 + IL_001c: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::GetHashCode(class [runtime]System.Collections.IEqualityComparer) + IL_000b: ret + } + + .method public hidebysig instance bool + Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: ldarg.0 + IL_0003: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_0008: ldarga.s obj + IL_000a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_000f: ceq + IL_0011: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0006: brfalse.s IL_0021 + + IL_0008: ldarg.1 + IL_0009: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_000e: stloc.0 + IL_000f: ldarg.0 + IL_0010: pop + IL_0011: ldarg.0 + IL_0012: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_0017: ldloca.s V_0 + IL_0019: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_001e: ceq + IL_0020: ret + + IL_0021: ldc.i4.0 + IL_0022: ret + } + + .method public hidebysig virtual final instance bool Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: ldarg.0 + IL_0003: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_0008: ldarga.s obj + IL_000a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_000f: ceq + IL_0011: ret + } + + .method public hidebysig virtual final instance bool Equals(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion V_0, + valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion V_1) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0006: brfalse.s IL_0023 + + IL_0008: ldarg.1 + IL_0009: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_000e: stloc.0 + IL_000f: ldloc.0 + IL_0010: stloc.1 + IL_0011: ldarg.0 + IL_0012: pop + IL_0013: ldarg.0 + IL_0014: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_0019: ldloca.s V_1 + IL_001b: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_0020: ceq + IL_0022: ret + + IL_0023: ldc.i4.0 + IL_0024: ret + } + + .property instance int32 Tag() + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::get_Tag() + } + .property instance int32 Item() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32, + int32) = ( 01 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::get_Item() + } + } + + .method public static bool test(int32 x, + int32 y) cil managed + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationArgumentCountsAttribute::.ctor(int32[]) = ( 01 00 02 00 00 00 01 00 00 00 01 00 00 00 00 00 ) + + .maxstack 4 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion V_0, + valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion V_1) + IL_0000: ldarg.0 + IL_0001: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::NewSomeUnion(int32) + IL_0006: stloc.0 + IL_0007: ldarg.1 + IL_0008: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::NewSomeUnion(int32) + IL_000d: stloc.1 + IL_000e: ldloca.s V_0 + IL_0010: pop + IL_0011: ldloca.s V_0 + IL_0013: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_0018: ldloca.s V_1 + IL_001a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_001f: ceq + IL_0021: ret + } + + } + +} + +.class private abstract auto ansi sealed ''.$assembly$fsx + extends [runtime]System.Object +{ + .method public static void main@() cil managed + { + .entrypoint + + .maxstack 8 + IL_0000: ret + } + +} + + + + + + diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals20.fsx.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals20.fsx.il.netcore.bsl new file mode 100644 index 00000000000..b8cf1279638 --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals20.fsx.il.netcore.bsl @@ -0,0 +1,397 @@ + + + + + +.assembly extern runtime { } +.assembly extern FSharp.Core { } +.assembly assembly +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, + int32, + int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + + + + + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.mresource public FSharpSignatureData.assembly +{ + + +} +.mresource public FSharpOptimizationData.assembly +{ + + +} +.module assembly.exe + +.imagebase {value} +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 +.corflags 0x00000001 + + + + + +.class public abstract auto ansi sealed assembly + extends [runtime]System.Object +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class abstract auto ansi sealed nested public EqualsMicroPerfAndCodeGenerationTests + extends [runtime]System.Object + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class sequential autochar serializable sealed nested public beforefieldinit SomeUnion + extends [runtime]System.ValueType + implements class [runtime]System.IEquatable`1, + [runtime]System.Collections.IStructuralEquatable, + class [runtime]System.IComparable`1, + [runtime]System.IComparable, + [runtime]System.Collections.IStructuralComparable + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.StructAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerDisplayAttribute::.ctor(string) = ( 01 00 15 7B 5F 5F 44 65 62 75 67 44 69 73 70 6C + 61 79 28 29 2C 6E 71 7D 00 00 ) + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 01 00 00 00 00 00 ) + .field assembly int32 item + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public static valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion NewSomeUnion(int32 item) cil managed + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) + + .maxstack 2 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion V_0) + IL_0000: ldloca.s V_0 + IL_0002: initobj assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0008: ldloca.s V_0 + IL_000a: ldarg.0 + IL_000b: stfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_0010: ldloc.0 + IL_0011: ret + } + + .method public hidebysig instance int32 get_Item() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_0006: ret + } + + .method public hidebysig instance int32 get_Tag() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: ldc.i4.0 + IL_0003: ret + } + + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldstr "%+0.8A" + IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,string>::.ctor(string) + IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_000f: ldarg.0 + IL_0010: ldobj assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0015: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0) + IL_001a: ret + } + + .method public strict virtual instance string ToString() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldstr "%+A" + IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion>::.ctor(string) + IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_000f: ldarg.0 + IL_0010: ldobj assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0015: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0) + IL_001a: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Collections.IComparer V_0, + int32 V_1, + int32 V_2) + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_000e: stloc.1 + IL_000f: ldarga.s obj + IL_0011: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_0016: stloc.2 + IL_0017: ldloc.1 + IL_0018: ldloc.2 + IL_0019: cgt + IL_001b: ldloc.1 + IL_001c: ldloc.2 + IL_001d: clt + IL_001f: sub + IL_0020: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0007: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion) + IL_000c: ret + } + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [runtime]System.Collections.IComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion V_0, + int32 V_1, + int32 V_2) + IL_0000: ldarg.1 + IL_0001: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: pop + IL_0009: ldarg.0 + IL_000a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_000f: stloc.1 + IL_0010: ldloca.s V_0 + IL_0012: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_0017: stloc.2 + IL_0018: ldloc.1 + IL_0019: ldloc.2 + IL_001a: cgt + IL_001c: ldloc.1 + IL_001d: ldloc.2 + IL_001e: clt + IL_0020: sub + IL_0021: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 7 + .locals init (int32 V_0) + IL_0000: ldc.i4.0 + IL_0001: stloc.0 + IL_0002: ldarg.0 + IL_0003: pop + IL_0004: ldc.i4.0 + IL_0005: stloc.0 + IL_0006: ldc.i4 0x9e3779b9 + IL_000b: ldarg.0 + IL_000c: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_0011: ldloc.0 + IL_0012: ldc.i4.6 + IL_0013: shl + IL_0014: ldloc.0 + IL_0015: ldc.i4.2 + IL_0016: shr + IL_0017: add + IL_0018: add + IL_0019: add + IL_001a: stloc.0 + IL_001b: ldloc.0 + IL_001c: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::GetHashCode(class [runtime]System.Collections.IEqualityComparer) + IL_000b: ret + } + + .method public hidebysig instance bool + Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: ldarg.0 + IL_0003: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_0008: ldarga.s obj + IL_000a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_000f: ceq + IL_0011: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0006: brfalse.s IL_0021 + + IL_0008: ldarg.1 + IL_0009: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_000e: stloc.0 + IL_000f: ldarg.0 + IL_0010: pop + IL_0011: ldarg.0 + IL_0012: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_0017: ldloca.s V_0 + IL_0019: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_001e: ceq + IL_0020: ret + + IL_0021: ldc.i4.0 + IL_0022: ret + } + + .method public hidebysig virtual final instance bool Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: ldarg.0 + IL_0003: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_0008: ldarga.s obj + IL_000a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_000f: ceq + IL_0011: ret + } + + .method public hidebysig virtual final instance bool Equals(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion V_0, + valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion V_1) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_0006: brfalse.s IL_0023 + + IL_0008: ldarg.1 + IL_0009: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion + IL_000e: stloc.0 + IL_000f: ldloc.0 + IL_0010: stloc.1 + IL_0011: ldarg.0 + IL_0012: pop + IL_0013: ldarg.0 + IL_0014: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_0019: ldloca.s V_1 + IL_001b: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_0020: ceq + IL_0022: ret + + IL_0023: ldc.i4.0 + IL_0024: ret + } + + .property instance int32 Tag() + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::get_Tag() + } + .property instance int32 Item() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32, + int32) = ( 01 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::get_Item() + } + } + + .method public static bool test(int32 x, + int32 y) cil managed + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationArgumentCountsAttribute::.ctor(int32[]) = ( 01 00 02 00 00 00 01 00 00 00 01 00 00 00 00 00 ) + + .maxstack 4 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion V_0, + valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion V_1) + IL_0000: ldarg.0 + IL_0001: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::NewSomeUnion(int32) + IL_0006: stloc.0 + IL_0007: ldarg.1 + IL_0008: call valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::NewSomeUnion(int32) + IL_000d: stloc.1 + IL_000e: ldloca.s V_0 + IL_0010: pop + IL_0011: ldloca.s V_0 + IL_0013: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_0018: ldloca.s V_1 + IL_001a: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeUnion::item + IL_001f: ceq + IL_0021: ret + } + + } + +} + +.class private abstract auto ansi sealed ''.$assembly$fsx + extends [runtime]System.Object +{ + .method public static void main@() cil managed + { + .entrypoint + + .maxstack 8 + IL_0000: ret + } + +} + + + + + + diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals21.fsx b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals21.fsx new file mode 100644 index 00000000000..d734115877c --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals21.fsx @@ -0,0 +1,7 @@ +module EqualsMicroPerfAndCodeGenerationTests = + + [] + type SomeRecord = { V: int } + + // the equality test should be a function, otherwise might get inlined + let test x y = { V = x } = { V = y } \ No newline at end of file diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals21.fsx.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals21.fsx.il.net472.bsl new file mode 100644 index 00000000000..f3e0d0a102c --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals21.fsx.il.net472.bsl @@ -0,0 +1,432 @@ + + + + + +.assembly extern runtime { } +.assembly extern FSharp.Core { } +.assembly assembly +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, + int32, + int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + + + + + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.mresource public FSharpSignatureData.assembly +{ + + +} +.mresource public FSharpOptimizationData.assembly +{ + + +} +.module assembly.exe + +.imagebase {value} +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 +.corflags 0x00000001 + + + + + +.class public abstract auto ansi sealed assembly + extends [runtime]System.Object +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class abstract auto ansi sealed nested public EqualsMicroPerfAndCodeGenerationTests + extends [runtime]System.Object + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class sequential ansi serializable sealed nested public SomeRecord + extends [runtime]System.ValueType + implements class [runtime]System.IEquatable`1, + [runtime]System.Collections.IStructuralEquatable, + class [runtime]System.IComparable`1, + [runtime]System.IComparable, + [runtime]System.Collections.IStructuralComparable + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.StructAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 02 00 00 00 00 00 ) + .field assembly int32 V@ + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method public hidebysig specialname instance int32 get_V() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.IsReadOnlyAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0006: ret + } + + .method public specialname rtspecialname instance void .ctor(int32 v) cil managed + { + .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, + class [runtime]System.Type) = ( 01 00 60 06 00 00 39 45 71 75 61 6C 73 32 31 2B + 45 71 75 61 6C 73 4D 69 63 72 6F 50 65 72 66 41 + 6E 64 43 6F 64 65 47 65 6E 65 72 61 74 69 6F 6E + 54 65 73 74 73 2B 53 6F 6D 65 52 65 63 6F 72 64 + 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: stfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0007: ret + } + + .method public strict virtual instance string ToString() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldstr "%+A" + IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord>::.ctor(string) + IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_000f: ldarg.0 + IL_0010: ldobj assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_0015: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0) + IL_001a: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Collections.IComparer V_0, + int32 V_1, + int32 V_2) + IL_0000: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0005: stloc.0 + IL_0006: ldarg.0 + IL_0007: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_000c: stloc.1 + IL_000d: ldarga.s obj + IL_000f: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0014: stloc.2 + IL_0015: ldloc.1 + IL_0016: ldloc.2 + IL_0017: cgt + IL_0019: ldloc.1 + IL_001a: ldloc.2 + IL_001b: clt + IL_001d: sub + IL_001e: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_0007: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord) + IL_000c: ret + } + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [runtime]System.Collections.IComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord V_0, + int32 V_1, + int32 V_2) + IL_0000: ldarg.1 + IL_0001: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_000d: stloc.1 + IL_000e: ldloca.s V_0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0015: stloc.2 + IL_0016: ldloc.1 + IL_0017: ldloc.2 + IL_0018: cgt + IL_001a: ldloc.1 + IL_001b: ldloc.2 + IL_001c: clt + IL_001e: sub + IL_001f: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 7 + .locals init (int32 V_0) + IL_0000: ldc.i4.0 + IL_0001: stloc.0 + IL_0002: ldc.i4 0x9e3779b9 + IL_0007: ldarg.0 + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_000d: ldloc.0 + IL_000e: ldc.i4.6 + IL_000f: shl + IL_0010: ldloc.0 + IL_0011: ldc.i4.2 + IL_0012: shr + IL_0013: add + IL_0014: add + IL_0015: add + IL_0016: stloc.0 + IL_0017: ldloc.0 + IL_0018: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::GetHashCode(class [runtime]System.Collections.IEqualityComparer) + IL_000b: ret + } + + .method public hidebysig instance bool + Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0006: ldarga.s obj + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_000d: ceq + IL_000f: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_0006: brfalse.s IL_001f + + IL_0008: ldarg.1 + IL_0009: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_000e: stloc.0 + IL_000f: ldarg.0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0015: ldloca.s V_0 + IL_0017: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + } + + .method public hidebysig virtual final instance bool Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0006: ldarga.s obj + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_000d: ceq + IL_000f: ret + } + + .method public hidebysig virtual final instance bool Equals(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord V_0, + valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord V_1) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_0006: brfalse.s IL_0021 + + IL_0008: ldarg.1 + IL_0009: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_000e: stloc.0 + IL_000f: ldloc.0 + IL_0010: stloc.1 + IL_0011: ldarg.0 + IL_0012: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0017: ldloca.s V_1 + IL_0019: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_001e: ceq + IL_0020: ret + + IL_0021: ldc.i4.0 + IL_0022: ret + } + + .property instance int32 V() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32) = ( 01 00 04 00 00 00 00 00 00 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::get_V() + } + } + + .method public static bool test(int32 x, + int32 y) cil managed + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationArgumentCountsAttribute::.ctor(int32[]) = ( 01 00 02 00 00 00 01 00 00 00 01 00 00 00 00 00 ) + + .maxstack 4 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord V_0, + valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord V_1) + IL_0000: ldarg.0 + IL_0001: newobj instance void assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::.ctor(int32) + IL_0006: stloc.0 + IL_0007: ldarg.1 + IL_0008: newobj instance void assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::.ctor(int32) + IL_000d: stloc.1 + IL_000e: ldloca.s V_0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0015: ldloca.s V_1 + IL_0017: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_001c: ceq + IL_001e: ret + } + + } + +} + +.class private abstract auto ansi sealed ''.$assembly$fsx + extends [runtime]System.Object +{ + .method public static void main@() cil managed + { + .entrypoint + + .maxstack 8 + IL_0000: ret + } + +} + +.class private auto ansi serializable sealed System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes + extends [runtime]System.Enum +{ + .custom instance void [runtime]System.FlagsAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .field public specialname rtspecialname int32 value__ + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes All = int32(0xFFFFFFFF) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes None = int32(0x00000000) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes PublicParameterlessConstructor = int32(0x00000001) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes PublicConstructors = int32(0x00000003) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes NonPublicConstructors = int32(0x00000004) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes PublicMethods = int32(0x00000008) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes NonPublicMethods = int32(0x00000010) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes PublicFields = int32(0x00000020) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes NonPublicFields = int32(0x00000040) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes PublicNestedTypes = int32(0x00000080) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes NonPublicNestedTypes = int32(0x00000100) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes PublicProperties = int32(0x00000200) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes NonPublicProperties = int32(0x00000400) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes PublicEvents = int32(0x00000800) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes NonPublicEvents = int32(0x00001000) + .field public static literal valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes Interfaces = int32(0x00002000) +} + +.class private auto ansi beforefieldinit System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute + extends [runtime]System.Attribute +{ + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .field private valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes MemberType@ + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .field private class [runtime]System.Type Type@ + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public specialname rtspecialname + instance void .ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes MemberType, + class [runtime]System.Type Type) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [runtime]System.Attribute::.ctor() + IL_0006: ldarg.0 + IL_0007: ldarg.1 + IL_0008: stfld valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::MemberType@ + IL_000d: ldarg.0 + IL_000e: ldarg.2 + IL_000f: stfld class [runtime]System.Type System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::Type@ + IL_0014: ret + } + + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld class [runtime]System.Type System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::Type@ + IL_0006: ret + } + + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::MemberType@ + IL_0006: ret + } + + .property instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes + MemberType() + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .get instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::get_MemberType() + } + .property instance class [runtime]System.Type + Type() + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .get instance class [runtime]System.Type System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::get_Type() + } +} + + + + + + diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals21.fsx.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals21.fsx.il.netcore.bsl new file mode 100644 index 00000000000..9a77fbca0db --- /dev/null +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Equals21.fsx.il.netcore.bsl @@ -0,0 +1,340 @@ + + + + + +.assembly extern runtime { } +.assembly extern FSharp.Core { } +.assembly assembly +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, + int32, + int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + + + + + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.mresource public FSharpSignatureData.assembly +{ + + +} +.mresource public FSharpOptimizationData.assembly +{ + + +} +.module assembly.exe + +.imagebase {value} +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 +.corflags 0x00000001 + + + + + +.class public abstract auto ansi sealed assembly + extends [runtime]System.Object +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class abstract auto ansi sealed nested public EqualsMicroPerfAndCodeGenerationTests + extends [runtime]System.Object + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class sequential ansi serializable sealed nested public SomeRecord + extends [runtime]System.ValueType + implements class [runtime]System.IEquatable`1, + [runtime]System.Collections.IStructuralEquatable, + class [runtime]System.IComparable`1, + [runtime]System.IComparable, + [runtime]System.Collections.IStructuralComparable + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.StructAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 02 00 00 00 00 00 ) + .field assembly int32 V@ + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method public hidebysig specialname instance int32 get_V() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.IsReadOnlyAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0006: ret + } + + .method public specialname rtspecialname instance void .ctor(int32 v) cil managed + { + .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, + class [runtime]System.Type) = ( 01 00 60 06 00 00 39 45 71 75 61 6C 73 32 31 2B + 45 71 75 61 6C 73 4D 69 63 72 6F 50 65 72 66 41 + 6E 64 43 6F 64 65 47 65 6E 65 72 61 74 69 6F 6E + 54 65 73 74 73 2B 53 6F 6D 65 52 65 63 6F 72 64 + 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: stfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0007: ret + } + + .method public strict virtual instance string ToString() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldstr "%+A" + IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord>::.ctor(string) + IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_000f: ldarg.0 + IL_0010: ldobj assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_0015: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0) + IL_001a: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Collections.IComparer V_0, + int32 V_1, + int32 V_2) + IL_0000: call class [runtime]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0005: stloc.0 + IL_0006: ldarg.0 + IL_0007: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_000c: stloc.1 + IL_000d: ldarga.s obj + IL_000f: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0014: stloc.2 + IL_0015: ldloc.1 + IL_0016: ldloc.2 + IL_0017: cgt + IL_0019: ldloc.1 + IL_001a: ldloc.2 + IL_001b: clt + IL_001d: sub + IL_001e: ret + } + + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_0007: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::CompareTo(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord) + IL_000c: ret + } + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [runtime]System.Collections.IComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord V_0, + int32 V_1, + int32 V_2) + IL_0000: ldarg.1 + IL_0001: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_000d: stloc.1 + IL_000e: ldloca.s V_0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0015: stloc.2 + IL_0016: ldloc.1 + IL_0017: ldloc.2 + IL_0018: cgt + IL_001a: ldloc.1 + IL_001b: ldloc.2 + IL_001c: clt + IL_001e: sub + IL_001f: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 7 + .locals init (int32 V_0) + IL_0000: ldc.i4.0 + IL_0001: stloc.0 + IL_0002: ldc.i4 0x9e3779b9 + IL_0007: ldarg.0 + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_000d: ldloc.0 + IL_000e: ldc.i4.6 + IL_000f: shl + IL_0010: ldloc.0 + IL_0011: ldc.i4.2 + IL_0012: shr + IL_0013: add + IL_0014: add + IL_0015: add + IL_0016: stloc.0 + IL_0017: ldloc.0 + IL_0018: ret + } + + .method public hidebysig virtual final instance int32 GetHashCode() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: call instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::GetHashCode(class [runtime]System.Collections.IEqualityComparer) + IL_000b: ret + } + + .method public hidebysig instance bool + Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0006: ldarga.s obj + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_000d: ceq + IL_000f: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_0006: brfalse.s IL_001f + + IL_0008: ldarg.1 + IL_0009: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_000e: stloc.0 + IL_000f: ldarg.0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0015: ldloca.s V_0 + IL_0017: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + } + + .method public hidebysig virtual final instance bool Equals(valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0006: ldarga.s obj + IL_0008: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_000d: ceq + IL_000f: ret + } + + .method public hidebysig virtual final instance bool Equals(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord V_0, + valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord V_1) + IL_0000: ldarg.1 + IL_0001: isinst assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_0006: brfalse.s IL_0021 + + IL_0008: ldarg.1 + IL_0009: unbox.any assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord + IL_000e: stloc.0 + IL_000f: ldloc.0 + IL_0010: stloc.1 + IL_0011: ldarg.0 + IL_0012: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0017: ldloca.s V_1 + IL_0019: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_001e: ceq + IL_0020: ret + + IL_0021: ldc.i4.0 + IL_0022: ret + } + + .property instance int32 V() + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32) = ( 01 00 04 00 00 00 00 00 00 00 00 00 ) + .get instance int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::get_V() + } + } + + .method public static bool test(int32 x, + int32 y) cil managed + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationArgumentCountsAttribute::.ctor(int32[]) = ( 01 00 02 00 00 00 01 00 00 00 01 00 00 00 00 00 ) + + .maxstack 4 + .locals init (valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord V_0, + valuetype assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord V_1) + IL_0000: ldarg.0 + IL_0001: newobj instance void assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::.ctor(int32) + IL_0006: stloc.0 + IL_0007: ldarg.1 + IL_0008: newobj instance void assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::.ctor(int32) + IL_000d: stloc.1 + IL_000e: ldloca.s V_0 + IL_0010: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_0015: ldloca.s V_1 + IL_0017: ldfld int32 assembly/EqualsMicroPerfAndCodeGenerationTests/SomeRecord::V@ + IL_001c: ceq + IL_001e: ret + } + + } + +} + +.class private abstract auto ansi sealed ''.$assembly$fsx + extends [runtime]System.Object +{ + .method public static void main@() cil managed + { + .entrypoint + + .maxstack 8 + IL_0000: ret + } + +} + + + + + + diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/GenericComparison.fs b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/GenericComparison.fs index 57d287f2c42..2fd53e46b56 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/GenericComparison.fs +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/GenericComparison.fs @@ -217,6 +217,78 @@ module GenericComparison = compilation |> verifyCompilation + // SOURCE=Equals10.fsx SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Equals10.dll" # Equals10.fs - + [] + let ``Equals10_fsx`` compilation = + compilation + |> verifyCompilation + + // SOURCE=Equals11.fsx SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Equals11.dll" # Equals11.fs - + [] + let ``Equals11_fsx`` compilation = + compilation + |> verifyCompilation + + // SOURCE=Equals12.fsx SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Equals12.dll" # Equals12.fs - + [] + let ``Equals12_fsx`` compilation = + compilation + |> verifyCompilation + + // SOURCE=Equals13.fsx SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Equals13.dll" # Equals13.fs - + [] + let ``Equals13_fsx`` compilation = + compilation + |> verifyCompilation + + // SOURCE=Equals14.fsx SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Equals14.dll" # Equals14.fs - + [] + let ``Equals14_fsx`` compilation = + compilation + |> verifyCompilation + + // SOURCE=Equals15.fsx SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Equals15.dll" # Equals15.fs - + [] + let ``Equals15_fsx`` compilation = + compilation + |> verifyCompilation + + // SOURCE=Equals16.fsx SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Equals16.dll" # Equals16.fs - + [] + let ``Equals16_fsx`` compilation = + compilation + |> verifyCompilation + + // SOURCE=Equals17.fsx SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Equals17.dll" # Equals17.fs - + [] + let ``Equals17_fsx`` compilation = + compilation + |> verifyCompilation + + // SOURCE=Equals18.fsx SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Equals18.dll" # Equals18.fs - + [] + let ``Equals18_fsx`` compilation = + compilation + |> verifyCompilation + + // SOURCE=Equals19.fsx SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Equals19.dll" # Equals19.fs - + [] + let ``Equals19_fsx`` compilation = + compilation + |> verifyCompilation + + // SOURCE=Equals20.fsx SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Equals20.dll" # Equals20.fs - + [] + let ``Equals20_fsx`` compilation = + compilation + |> verifyCompilation + + // SOURCE=Equals21.fsx SCFLAGS="-a -g --optimize+" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd Equals21.dll" # Equals21.fs - + [] + let ``Equals21_fsx`` compilation = + compilation + |> verifyCompilation + [] let ``NativeIntComparison_fs`` compilation = compilation diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash05.fsx.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash05.fsx.il.net472.bsl index 2f776bf1ea5..9048754efb6 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash05.fsx.il.net472.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash05.fsx.il.net472.bsl @@ -105,8 +105,7 @@ IL_0014: ret } - .method public hidebysig instance int32 - get_Item1() cil managed + .method public hidebysig instance int32 get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -117,8 +116,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Item2() cil managed + .method public hidebysig instance int32 get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -129,8 +127,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -142,8 +139,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -157,8 +153,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -171,8 +166,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/HashMicroPerfAndCodeGenerationTests/Key obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/HashMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -255,8 +249,7 @@ IL_0068: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -354,8 +347,7 @@ IL_006d: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -406,8 +398,7 @@ IL_0038: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -418,60 +409,80 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/HashMicroPerfAndCodeGenerationTests/Key obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/HashMicroPerfAndCodeGenerationTests/Key V_0, - class assembly/HashMicroPerfAndCodeGenerationTests/Key V_1, - class assembly/HashMicroPerfAndCodeGenerationTests/Key V_2) + class assembly/HashMicroPerfAndCodeGenerationTests/Key V_1) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0034 + IL_0001: brfalse.s IL_002d IL_0003: ldarg.1 - IL_0004: isinst assembly/HashMicroPerfAndCodeGenerationTests/Key + IL_0004: brfalse.s IL_002b + + IL_0006: ldarg.0 + IL_0007: pop + IL_0008: ldarg.0 IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0032 + IL_000a: ldarg.1 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_0012: ldloc.1 + IL_0013: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_0018: bne.un.s IL_0029 - IL_000d: ldarg.0 - IL_000e: pop - IL_000f: ldarg.0 - IL_0010: stloc.1 - IL_0011: ldloc.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_0019: ldloc.2 - IL_001a: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_001f: bne.un.s IL_0030 - - IL_0021: ldloc.1 - IL_0022: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_0027: ldloc.2 - IL_0028: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_002d: ceq - IL_002f: ret - - IL_0030: ldc.i4.0 - IL_0031: ret - - IL_0032: ldc.i4.0 - IL_0033: ret - - IL_0034: ldarg.1 - IL_0035: ldnull - IL_0036: cgt.un - IL_0038: ldc.i4.0 - IL_0039: ceq - IL_003b: ret + IL_001a: ldloc.0 + IL_001b: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_0020: ldloc.1 + IL_0021: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_0026: ceq + IL_0028: ret + + IL_0029: ldc.i4.0 + IL_002a: ret + + IL_002b: ldc.i4.0 + IL_002c: ret + + IL_002d: ldarg.1 + IL_002e: ldnull + IL_002f: cgt.un + IL_0031: ldc.i4.0 + IL_0032: ceq + IL_0034: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/HashMicroPerfAndCodeGenerationTests/Key obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/HashMicroPerfAndCodeGenerationTests/Key V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/HashMicroPerfAndCodeGenerationTests/Key + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/HashMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/HashMicroPerfAndCodeGenerationTests/Key, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/HashMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -517,8 +528,7 @@ IL_0034: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -666,8 +676,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -678,8 +687,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash05.fsx.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash05.fsx.il.netcore.bsl index 7e575a37c53..48ddbd835a0 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash05.fsx.il.netcore.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash05.fsx.il.netcore.bsl @@ -105,8 +105,7 @@ IL_0014: ret } - .method public hidebysig instance int32 - get_Item1() cil managed + .method public hidebysig instance int32 get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -117,8 +116,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Item2() cil managed + .method public hidebysig instance int32 get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -129,8 +127,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -142,8 +139,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -157,8 +153,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -171,8 +166,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/HashMicroPerfAndCodeGenerationTests/Key obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/HashMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -255,8 +249,7 @@ IL_0068: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -354,8 +347,7 @@ IL_006d: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -406,8 +398,7 @@ IL_0038: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -418,60 +409,80 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/HashMicroPerfAndCodeGenerationTests/Key obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/HashMicroPerfAndCodeGenerationTests/Key V_0, - class assembly/HashMicroPerfAndCodeGenerationTests/Key V_1, - class assembly/HashMicroPerfAndCodeGenerationTests/Key V_2) + class assembly/HashMicroPerfAndCodeGenerationTests/Key V_1) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0034 + IL_0001: brfalse.s IL_002d IL_0003: ldarg.1 - IL_0004: isinst assembly/HashMicroPerfAndCodeGenerationTests/Key + IL_0004: brfalse.s IL_002b + + IL_0006: ldarg.0 + IL_0007: pop + IL_0008: ldarg.0 IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0032 + IL_000a: ldarg.1 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_0012: ldloc.1 + IL_0013: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_0018: bne.un.s IL_0029 - IL_000d: ldarg.0 - IL_000e: pop - IL_000f: ldarg.0 - IL_0010: stloc.1 - IL_0011: ldloc.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_0019: ldloc.2 - IL_001a: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_001f: bne.un.s IL_0030 - - IL_0021: ldloc.1 - IL_0022: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_0027: ldloc.2 - IL_0028: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_002d: ceq - IL_002f: ret - - IL_0030: ldc.i4.0 - IL_0031: ret - - IL_0032: ldc.i4.0 - IL_0033: ret - - IL_0034: ldarg.1 - IL_0035: ldnull - IL_0036: cgt.un - IL_0038: ldc.i4.0 - IL_0039: ceq - IL_003b: ret + IL_001a: ldloc.0 + IL_001b: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_0020: ldloc.1 + IL_0021: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_0026: ceq + IL_0028: ret + + IL_0029: ldc.i4.0 + IL_002a: ret + + IL_002b: ldc.i4.0 + IL_002c: ret + + IL_002d: ldarg.1 + IL_002e: ldnull + IL_002f: cgt.un + IL_0031: ldc.i4.0 + IL_0032: ceq + IL_0034: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/HashMicroPerfAndCodeGenerationTests/Key obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/HashMicroPerfAndCodeGenerationTests/Key V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/HashMicroPerfAndCodeGenerationTests/Key + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/HashMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/HashMicroPerfAndCodeGenerationTests/Key, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/HashMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -517,8 +528,7 @@ IL_0034: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash06.fsx.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash06.fsx.il.net472.bsl index 17cba300caf..7f34d3acc25 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash06.fsx.il.net472.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash06.fsx.il.net472.bsl @@ -105,8 +105,7 @@ IL_0014: ret } - .method public hidebysig instance int32 - get_Item1() cil managed + .method public hidebysig instance int32 get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -117,8 +116,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Item2() cil managed + .method public hidebysig instance int32 get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -129,8 +127,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -142,8 +139,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -157,8 +153,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -171,8 +166,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/HashMicroPerfAndCodeGenerationTests/Key obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/HashMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -255,8 +249,7 @@ IL_0068: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -354,8 +347,7 @@ IL_006d: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -406,8 +398,7 @@ IL_0038: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -418,60 +409,80 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/HashMicroPerfAndCodeGenerationTests/Key obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/HashMicroPerfAndCodeGenerationTests/Key V_0, - class assembly/HashMicroPerfAndCodeGenerationTests/Key V_1, - class assembly/HashMicroPerfAndCodeGenerationTests/Key V_2) + class assembly/HashMicroPerfAndCodeGenerationTests/Key V_1) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0034 + IL_0001: brfalse.s IL_002d IL_0003: ldarg.1 - IL_0004: isinst assembly/HashMicroPerfAndCodeGenerationTests/Key + IL_0004: brfalse.s IL_002b + + IL_0006: ldarg.0 + IL_0007: pop + IL_0008: ldarg.0 IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0032 + IL_000a: ldarg.1 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_0012: ldloc.1 + IL_0013: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_0018: bne.un.s IL_0029 - IL_000d: ldarg.0 - IL_000e: pop - IL_000f: ldarg.0 - IL_0010: stloc.1 - IL_0011: ldloc.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_0019: ldloc.2 - IL_001a: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_001f: bne.un.s IL_0030 - - IL_0021: ldloc.1 - IL_0022: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_0027: ldloc.2 - IL_0028: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_002d: ceq - IL_002f: ret - - IL_0030: ldc.i4.0 - IL_0031: ret - - IL_0032: ldc.i4.0 - IL_0033: ret - - IL_0034: ldarg.1 - IL_0035: ldnull - IL_0036: cgt.un - IL_0038: ldc.i4.0 - IL_0039: ceq - IL_003b: ret + IL_001a: ldloc.0 + IL_001b: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_0020: ldloc.1 + IL_0021: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_0026: ceq + IL_0028: ret + + IL_0029: ldc.i4.0 + IL_002a: ret + + IL_002b: ldc.i4.0 + IL_002c: ret + + IL_002d: ldarg.1 + IL_002e: ldnull + IL_002f: cgt.un + IL_0031: ldc.i4.0 + IL_0032: ceq + IL_0034: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/HashMicroPerfAndCodeGenerationTests/Key obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/HashMicroPerfAndCodeGenerationTests/Key V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/HashMicroPerfAndCodeGenerationTests/Key + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/HashMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/HashMicroPerfAndCodeGenerationTests/Key, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/HashMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -517,8 +528,7 @@ IL_0034: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -665,8 +675,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -677,8 +686,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash06.fsx.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash06.fsx.il.netcore.bsl index a021a552a55..d418c4eb8b9 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash06.fsx.il.netcore.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash06.fsx.il.netcore.bsl @@ -105,8 +105,7 @@ IL_0014: ret } - .method public hidebysig instance int32 - get_Item1() cil managed + .method public hidebysig instance int32 get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -117,8 +116,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Item2() cil managed + .method public hidebysig instance int32 get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -129,8 +127,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -142,8 +139,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -157,8 +153,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -171,8 +166,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/HashMicroPerfAndCodeGenerationTests/Key obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/HashMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -255,8 +249,7 @@ IL_0068: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -354,8 +347,7 @@ IL_006d: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -406,8 +398,7 @@ IL_0038: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -418,60 +409,80 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/HashMicroPerfAndCodeGenerationTests/Key obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/HashMicroPerfAndCodeGenerationTests/Key V_0, - class assembly/HashMicroPerfAndCodeGenerationTests/Key V_1, - class assembly/HashMicroPerfAndCodeGenerationTests/Key V_2) + class assembly/HashMicroPerfAndCodeGenerationTests/Key V_1) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0034 + IL_0001: brfalse.s IL_002d IL_0003: ldarg.1 - IL_0004: isinst assembly/HashMicroPerfAndCodeGenerationTests/Key + IL_0004: brfalse.s IL_002b + + IL_0006: ldarg.0 + IL_0007: pop + IL_0008: ldarg.0 IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0032 + IL_000a: ldarg.1 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_0012: ldloc.1 + IL_0013: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_0018: bne.un.s IL_0029 - IL_000d: ldarg.0 - IL_000e: pop - IL_000f: ldarg.0 - IL_0010: stloc.1 - IL_0011: ldloc.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_0019: ldloc.2 - IL_001a: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_001f: bne.un.s IL_0030 - - IL_0021: ldloc.1 - IL_0022: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_0027: ldloc.2 - IL_0028: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_002d: ceq - IL_002f: ret - - IL_0030: ldc.i4.0 - IL_0031: ret - - IL_0032: ldc.i4.0 - IL_0033: ret - - IL_0034: ldarg.1 - IL_0035: ldnull - IL_0036: cgt.un - IL_0038: ldc.i4.0 - IL_0039: ceq - IL_003b: ret + IL_001a: ldloc.0 + IL_001b: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_0020: ldloc.1 + IL_0021: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_0026: ceq + IL_0028: ret + + IL_0029: ldc.i4.0 + IL_002a: ret + + IL_002b: ldc.i4.0 + IL_002c: ret + + IL_002d: ldarg.1 + IL_002e: ldnull + IL_002f: cgt.un + IL_0031: ldc.i4.0 + IL_0032: ceq + IL_0034: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/HashMicroPerfAndCodeGenerationTests/Key obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/HashMicroPerfAndCodeGenerationTests/Key V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/HashMicroPerfAndCodeGenerationTests/Key + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/HashMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/HashMicroPerfAndCodeGenerationTests/Key, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/HashMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -517,8 +528,7 @@ IL_0034: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash08.fsx.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash08.fsx.il.net472.bsl index 112a12a5ce5..35f4388456c 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash08.fsx.il.net472.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash08.fsx.il.net472.bsl @@ -62,8 +62,7 @@ .field assembly int32 key2@ .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .method public hidebysig specialname - instance int32 get_key1() cil managed + .method public hidebysig specialname instance int32 get_key1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -74,8 +73,7 @@ IL_0006: ret } - .method public hidebysig specialname - instance int32 get_key2() cil managed + .method public hidebysig specialname instance int32 get_key2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -108,8 +106,7 @@ IL_0014: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -122,8 +119,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/HashMicroPerfAndCodeGenerationTests/KeyR obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/HashMicroPerfAndCodeGenerationTests/KeyR obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -198,8 +194,7 @@ IL_0056: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -289,8 +284,7 @@ IL_005b: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -334,8 +328,7 @@ IL_0032: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -346,52 +339,72 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/HashMicroPerfAndCodeGenerationTests/KeyR obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 - .locals init (class assembly/HashMicroPerfAndCodeGenerationTests/KeyR V_0) + .maxstack 8 IL_0000: ldarg.0 - IL_0001: brfalse.s IL_002e + IL_0001: brfalse.s IL_0027 IL_0003: ldarg.1 - IL_0004: isinst assembly/HashMicroPerfAndCodeGenerationTests/KeyR - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_002c + IL_0004: brfalse.s IL_0025 - IL_000d: ldarg.0 - IL_000e: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_0013: ldloc.0 - IL_0014: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_0019: bne.un.s IL_002a + IL_0006: ldarg.0 + IL_0007: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_000c: ldarg.1 + IL_000d: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_0012: bne.un.s IL_0023 - IL_001b: ldarg.0 - IL_001c: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_0021: ldloc.0 - IL_0022: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_0027: ceq - IL_0029: ret + IL_0014: ldarg.0 + IL_0015: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_001a: ldarg.1 + IL_001b: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_0020: ceq + IL_0022: ret - IL_002a: ldc.i4.0 - IL_002b: ret + IL_0023: ldc.i4.0 + IL_0024: ret - IL_002c: ldc.i4.0 - IL_002d: ret + IL_0025: ldc.i4.0 + IL_0026: ret - IL_002e: ldarg.1 - IL_002f: ldnull - IL_0030: cgt.un - IL_0032: ldc.i4.0 - IL_0033: ceq - IL_0035: ret + IL_0027: ldarg.1 + IL_0028: ldnull + IL_0029: cgt.un + IL_002b: ldc.i4.0 + IL_002c: ceq + IL_002e: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/HashMicroPerfAndCodeGenerationTests/KeyR obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/HashMicroPerfAndCodeGenerationTests/KeyR V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/HashMicroPerfAndCodeGenerationTests/KeyR + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/HashMicroPerfAndCodeGenerationTests/KeyR::Equals(class assembly/HashMicroPerfAndCodeGenerationTests/KeyR, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/HashMicroPerfAndCodeGenerationTests/KeyR obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -429,8 +442,7 @@ IL_002e: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -565,8 +577,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -577,8 +588,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash08.fsx.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash08.fsx.il.netcore.bsl index 1762a694211..69b5eb439e3 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash08.fsx.il.netcore.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash08.fsx.il.netcore.bsl @@ -62,8 +62,7 @@ .field assembly int32 key2@ .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .method public hidebysig specialname - instance int32 get_key1() cil managed + .method public hidebysig specialname instance int32 get_key1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -74,8 +73,7 @@ IL_0006: ret } - .method public hidebysig specialname - instance int32 get_key2() cil managed + .method public hidebysig specialname instance int32 get_key2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -108,8 +106,7 @@ IL_0014: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -122,8 +119,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/HashMicroPerfAndCodeGenerationTests/KeyR obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/HashMicroPerfAndCodeGenerationTests/KeyR obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -198,8 +194,7 @@ IL_0056: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -289,8 +284,7 @@ IL_005b: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -334,8 +328,7 @@ IL_0032: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -346,52 +339,72 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/HashMicroPerfAndCodeGenerationTests/KeyR obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 - .locals init (class assembly/HashMicroPerfAndCodeGenerationTests/KeyR V_0) + .maxstack 8 IL_0000: ldarg.0 - IL_0001: brfalse.s IL_002e + IL_0001: brfalse.s IL_0027 IL_0003: ldarg.1 - IL_0004: isinst assembly/HashMicroPerfAndCodeGenerationTests/KeyR - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_002c + IL_0004: brfalse.s IL_0025 - IL_000d: ldarg.0 - IL_000e: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_0013: ldloc.0 - IL_0014: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_0019: bne.un.s IL_002a + IL_0006: ldarg.0 + IL_0007: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_000c: ldarg.1 + IL_000d: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_0012: bne.un.s IL_0023 - IL_001b: ldarg.0 - IL_001c: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_0021: ldloc.0 - IL_0022: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_0027: ceq - IL_0029: ret + IL_0014: ldarg.0 + IL_0015: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_001a: ldarg.1 + IL_001b: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_0020: ceq + IL_0022: ret - IL_002a: ldc.i4.0 - IL_002b: ret + IL_0023: ldc.i4.0 + IL_0024: ret - IL_002c: ldc.i4.0 - IL_002d: ret + IL_0025: ldc.i4.0 + IL_0026: ret - IL_002e: ldarg.1 - IL_002f: ldnull - IL_0030: cgt.un - IL_0032: ldc.i4.0 - IL_0033: ceq - IL_0035: ret + IL_0027: ldarg.1 + IL_0028: ldnull + IL_0029: cgt.un + IL_002b: ldc.i4.0 + IL_002c: ceq + IL_002e: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/HashMicroPerfAndCodeGenerationTests/KeyR obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/HashMicroPerfAndCodeGenerationTests/KeyR V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/HashMicroPerfAndCodeGenerationTests/KeyR + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/HashMicroPerfAndCodeGenerationTests/KeyR::Equals(class assembly/HashMicroPerfAndCodeGenerationTests/KeyR, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/HashMicroPerfAndCodeGenerationTests/KeyR obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -429,8 +442,7 @@ IL_002e: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash09.fsx.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash09.fsx.il.net472.bsl index cb835008068..c528cc22265 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash09.fsx.il.net472.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash09.fsx.il.net472.bsl @@ -105,8 +105,7 @@ IL_0014: ret } - .method public hidebysig instance !a - get_Item1() cil managed + .method public hidebysig instance !a get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -117,8 +116,7 @@ IL_0006: ret } - .method public hidebysig instance !a - get_Item2() cil managed + .method public hidebysig instance !a get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -129,8 +127,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -142,8 +139,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -157,8 +153,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -171,8 +166,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1 obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1 obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -254,8 +248,7 @@ IL_0064: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -353,8 +346,7 @@ IL_0069: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -416,8 +408,7 @@ IL_0048: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -428,78 +419,99 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1 obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 5 .locals init (class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1 V_0, class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1 V_1, - class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1 V_2, - !a V_3, - !a V_4) + !a V_2, + !a V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_004c + IL_0001: brfalse.s IL_0041 IL_0003: ldarg.1 - IL_0004: isinst class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1 - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_004a + IL_0004: brfalse.s IL_003f - IL_000d: ldarg.0 - IL_000e: pop - IL_000f: ldarg.0 - IL_0010: stloc.1 - IL_0011: ldloc.0 + IL_0006: ldarg.0 + IL_0007: pop + IL_0008: ldarg.0 + IL_0009: stloc.0 + IL_000a: ldarg.1 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: ldfld !0 class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item1 IL_0012: stloc.2 IL_0013: ldloc.1 IL_0014: ldfld !0 class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item1 IL_0019: stloc.3 - IL_001a: ldloc.2 - IL_001b: ldfld !0 class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item1 - IL_0020: stloc.s V_4 - IL_0022: ldarg.2 - IL_0023: ldloc.3 - IL_0024: ldloc.s V_4 - IL_0026: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, + IL_001a: ldarg.2 + IL_001b: ldloc.2 + IL_001c: ldloc.3 + IL_001d: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, !!0, !!0) - IL_002b: brfalse.s IL_0048 - - IL_002d: ldloc.1 - IL_002e: ldfld !0 class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_0033: stloc.3 - IL_0034: ldloc.2 - IL_0035: ldfld !0 class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_003a: stloc.s V_4 - IL_003c: ldarg.2 - IL_003d: ldloc.3 - IL_003e: ldloc.s V_4 - IL_0040: tail. - IL_0042: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, + IL_0022: brfalse.s IL_003d + + IL_0024: ldloc.0 + IL_0025: ldfld !0 class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_002a: stloc.2 + IL_002b: ldloc.1 + IL_002c: ldfld !0 class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_0031: stloc.3 + IL_0032: ldarg.2 + IL_0033: ldloc.2 + IL_0034: ldloc.3 + IL_0035: tail. + IL_0037: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, !!0, !!0) - IL_0047: ret + IL_003c: ret - IL_0048: ldc.i4.0 - IL_0049: ret + IL_003d: ldc.i4.0 + IL_003e: ret - IL_004a: ldc.i4.0 - IL_004b: ret + IL_003f: ldc.i4.0 + IL_0040: ret - IL_004c: ldarg.1 - IL_004d: ldnull - IL_004e: cgt.un - IL_0050: ldc.i4.0 - IL_0051: ceq - IL_0053: ret + IL_0041: ldarg.1 + IL_0042: ldnull + IL_0043: cgt.un + IL_0045: ldc.i4.0 + IL_0046: ceq + IL_0048: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1 obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1 V_0) + IL_0000: ldarg.1 + IL_0001: isinst class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1 + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0015 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: tail. + IL_000f: callvirt instance bool class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1::Equals(class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1, + class [runtime]System.Collections.IEqualityComparer) + IL_0014: ret + + IL_0015: ldc.i4.0 + IL_0016: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1 obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -559,8 +571,7 @@ IL_0046: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -709,8 +720,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -721,8 +731,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash09.fsx.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash09.fsx.il.netcore.bsl index 1b63d8a3311..87f99b0aadb 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash09.fsx.il.netcore.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash09.fsx.il.netcore.bsl @@ -105,8 +105,7 @@ IL_0014: ret } - .method public hidebysig instance !a - get_Item1() cil managed + .method public hidebysig instance !a get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -117,8 +116,7 @@ IL_0006: ret } - .method public hidebysig instance !a - get_Item2() cil managed + .method public hidebysig instance !a get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -129,8 +127,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -142,8 +139,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -157,8 +153,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -171,8 +166,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1 obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1 obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -254,8 +248,7 @@ IL_0064: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -353,8 +346,7 @@ IL_0069: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -416,8 +408,7 @@ IL_0048: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -428,78 +419,99 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1 obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 5 .locals init (class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1 V_0, class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1 V_1, - class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1 V_2, - !a V_3, - !a V_4) + !a V_2, + !a V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_004c + IL_0001: brfalse.s IL_0041 IL_0003: ldarg.1 - IL_0004: isinst class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1 - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_004a + IL_0004: brfalse.s IL_003f - IL_000d: ldarg.0 - IL_000e: pop - IL_000f: ldarg.0 - IL_0010: stloc.1 - IL_0011: ldloc.0 + IL_0006: ldarg.0 + IL_0007: pop + IL_0008: ldarg.0 + IL_0009: stloc.0 + IL_000a: ldarg.1 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: ldfld !0 class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item1 IL_0012: stloc.2 IL_0013: ldloc.1 IL_0014: ldfld !0 class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item1 IL_0019: stloc.3 - IL_001a: ldloc.2 - IL_001b: ldfld !0 class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item1 - IL_0020: stloc.s V_4 - IL_0022: ldarg.2 - IL_0023: ldloc.3 - IL_0024: ldloc.s V_4 - IL_0026: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, + IL_001a: ldarg.2 + IL_001b: ldloc.2 + IL_001c: ldloc.3 + IL_001d: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, !!0, !!0) - IL_002b: brfalse.s IL_0048 - - IL_002d: ldloc.1 - IL_002e: ldfld !0 class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_0033: stloc.3 - IL_0034: ldloc.2 - IL_0035: ldfld !0 class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_003a: stloc.s V_4 - IL_003c: ldarg.2 - IL_003d: ldloc.3 - IL_003e: ldloc.s V_4 - IL_0040: tail. - IL_0042: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, + IL_0022: brfalse.s IL_003d + + IL_0024: ldloc.0 + IL_0025: ldfld !0 class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_002a: stloc.2 + IL_002b: ldloc.1 + IL_002c: ldfld !0 class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_0031: stloc.3 + IL_0032: ldarg.2 + IL_0033: ldloc.2 + IL_0034: ldloc.3 + IL_0035: tail. + IL_0037: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [runtime]System.Collections.IEqualityComparer, !!0, !!0) - IL_0047: ret + IL_003c: ret - IL_0048: ldc.i4.0 - IL_0049: ret + IL_003d: ldc.i4.0 + IL_003e: ret - IL_004a: ldc.i4.0 - IL_004b: ret + IL_003f: ldc.i4.0 + IL_0040: ret - IL_004c: ldarg.1 - IL_004d: ldnull - IL_004e: cgt.un - IL_0050: ldc.i4.0 - IL_0051: ceq - IL_0053: ret + IL_0041: ldarg.1 + IL_0042: ldnull + IL_0043: cgt.un + IL_0045: ldc.i4.0 + IL_0046: ceq + IL_0048: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1 obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1 V_0) + IL_0000: ldarg.1 + IL_0001: isinst class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1 + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0015 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: tail. + IL_000f: callvirt instance bool class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1::Equals(class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1, + class [runtime]System.Collections.IEqualityComparer) + IL_0014: ret + + IL_0015: ldc.i4.0 + IL_0016: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/HashMicroPerfAndCodeGenerationTests/GenericKey`1 obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -559,8 +571,7 @@ IL_0046: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash12.fsx.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash12.fsx.il.net472.bsl index e631641ad71..2261ab4a99b 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash12.fsx.il.net472.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash12.fsx.il.net472.bsl @@ -105,8 +105,7 @@ IL_0014: ret } - .method public hidebysig instance int32 - get_Item1() cil managed + .method public hidebysig instance int32 get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -117,8 +116,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Item2() cil managed + .method public hidebysig instance int32 get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -129,8 +127,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -142,8 +139,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -157,8 +153,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -171,8 +166,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/HashMicroPerfAndCodeGenerationTests/Key obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/HashMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -255,8 +249,7 @@ IL_0068: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -354,8 +347,7 @@ IL_006d: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -406,8 +398,7 @@ IL_0038: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -418,60 +409,80 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/HashMicroPerfAndCodeGenerationTests/Key obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/HashMicroPerfAndCodeGenerationTests/Key V_0, - class assembly/HashMicroPerfAndCodeGenerationTests/Key V_1, - class assembly/HashMicroPerfAndCodeGenerationTests/Key V_2) + class assembly/HashMicroPerfAndCodeGenerationTests/Key V_1) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0034 + IL_0001: brfalse.s IL_002d IL_0003: ldarg.1 - IL_0004: isinst assembly/HashMicroPerfAndCodeGenerationTests/Key + IL_0004: brfalse.s IL_002b + + IL_0006: ldarg.0 + IL_0007: pop + IL_0008: ldarg.0 IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0032 + IL_000a: ldarg.1 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_0012: ldloc.1 + IL_0013: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_0018: bne.un.s IL_0029 - IL_000d: ldarg.0 - IL_000e: pop - IL_000f: ldarg.0 - IL_0010: stloc.1 - IL_0011: ldloc.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_0019: ldloc.2 - IL_001a: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_001f: bne.un.s IL_0030 - - IL_0021: ldloc.1 - IL_0022: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_0027: ldloc.2 - IL_0028: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_002d: ceq - IL_002f: ret - - IL_0030: ldc.i4.0 - IL_0031: ret - - IL_0032: ldc.i4.0 - IL_0033: ret - - IL_0034: ldarg.1 - IL_0035: ldnull - IL_0036: cgt.un - IL_0038: ldc.i4.0 - IL_0039: ceq - IL_003b: ret + IL_001a: ldloc.0 + IL_001b: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_0020: ldloc.1 + IL_0021: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_0026: ceq + IL_0028: ret + + IL_0029: ldc.i4.0 + IL_002a: ret + + IL_002b: ldc.i4.0 + IL_002c: ret + + IL_002d: ldarg.1 + IL_002e: ldnull + IL_002f: cgt.un + IL_0031: ldc.i4.0 + IL_0032: ceq + IL_0034: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/HashMicroPerfAndCodeGenerationTests/Key obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/HashMicroPerfAndCodeGenerationTests/Key V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/HashMicroPerfAndCodeGenerationTests/Key + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/HashMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/HashMicroPerfAndCodeGenerationTests/Key, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/HashMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -517,8 +528,7 @@ IL_0034: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -625,8 +635,7 @@ IL_0014: ret } - .method public hidebysig instance class assembly/HashMicroPerfAndCodeGenerationTests/Key - get_Item1() cil managed + .method public hidebysig instance class assembly/HashMicroPerfAndCodeGenerationTests/Key get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -637,8 +646,7 @@ IL_0006: ret } - .method public hidebysig instance class [runtime]System.Tuple`2 - get_Item2() cil managed + .method public hidebysig instance class [runtime]System.Tuple`2 get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -649,8 +657,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -662,8 +669,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -677,8 +683,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -691,8 +696,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -800,8 +804,7 @@ IL_009f: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -924,8 +927,7 @@ IL_00a4: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1002,8 +1004,7 @@ IL_0067: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1014,101 +1015,121 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 5 .locals init (class assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_0, class assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_1, - class assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_2, + class assembly/HashMicroPerfAndCodeGenerationTests/Key V_2, class assembly/HashMicroPerfAndCodeGenerationTests/Key V_3, - class assembly/HashMicroPerfAndCodeGenerationTests/Key V_4, + class [runtime]System.Tuple`2 V_4, class [runtime]System.Tuple`2 V_5, - class [runtime]System.Tuple`2 V_6, - class assembly/HashMicroPerfAndCodeGenerationTests/Key V_7, - class assembly/HashMicroPerfAndCodeGenerationTests/Key V_8) + class assembly/HashMicroPerfAndCodeGenerationTests/Key V_6, + class assembly/HashMicroPerfAndCodeGenerationTests/Key V_7) IL_0000: ldarg.0 - IL_0001: brfalse IL_007f + IL_0001: brfalse.s IL_0071 - IL_0006: ldarg.1 - IL_0007: isinst assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_007d + IL_0003: ldarg.1 + IL_0004: brfalse.s IL_006f - IL_0010: ldarg.0 - IL_0011: pop - IL_0012: ldarg.0 - IL_0013: stloc.1 - IL_0014: ldloc.0 - IL_0015: stloc.2 - IL_0016: ldloc.1 - IL_0017: ldfld class assembly/HashMicroPerfAndCodeGenerationTests/Key assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_001c: stloc.3 - IL_001d: ldloc.2 - IL_001e: ldfld class assembly/HashMicroPerfAndCodeGenerationTests/Key assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_0023: stloc.s V_4 - IL_0025: ldloc.3 - IL_0026: ldloc.s V_4 - IL_0028: ldarg.2 - IL_0029: callvirt instance bool assembly/HashMicroPerfAndCodeGenerationTests/Key::Equals(object, + IL_0006: ldarg.0 + IL_0007: pop + IL_0008: ldarg.0 + IL_0009: stloc.0 + IL_000a: ldarg.1 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: ldfld class assembly/HashMicroPerfAndCodeGenerationTests/Key assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_0012: stloc.2 + IL_0013: ldloc.1 + IL_0014: ldfld class assembly/HashMicroPerfAndCodeGenerationTests/Key assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_0019: stloc.3 + IL_001a: ldloc.2 + IL_001b: ldloc.3 + IL_001c: ldarg.2 + IL_001d: callvirt instance bool assembly/HashMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/HashMicroPerfAndCodeGenerationTests/Key, class [runtime]System.Collections.IEqualityComparer) - IL_002e: brfalse.s IL_007b - - IL_0030: ldloc.1 - IL_0031: ldfld class [runtime]System.Tuple`2 assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_0036: stloc.s V_5 - IL_0038: ldloc.2 - IL_0039: ldfld class [runtime]System.Tuple`2 assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_003e: stloc.s V_6 - IL_0040: ldloc.s V_5 - IL_0042: call instance !0 class [runtime]System.Tuple`2::get_Item1() - IL_0047: stloc.3 - IL_0048: ldloc.s V_5 - IL_004a: call instance !1 class [runtime]System.Tuple`2::get_Item2() - IL_004f: stloc.s V_4 - IL_0051: ldloc.s V_6 - IL_0053: call instance !0 class [runtime]System.Tuple`2::get_Item1() - IL_0058: stloc.s V_7 - IL_005a: ldloc.s V_6 - IL_005c: call instance !1 class [runtime]System.Tuple`2::get_Item2() - IL_0061: stloc.s V_8 - IL_0063: ldloc.3 - IL_0064: ldloc.s V_7 - IL_0066: ldarg.2 - IL_0067: callvirt instance bool assembly/HashMicroPerfAndCodeGenerationTests/Key::Equals(object, + IL_0022: brfalse.s IL_006d + + IL_0024: ldloc.0 + IL_0025: ldfld class [runtime]System.Tuple`2 assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_002a: stloc.s V_4 + IL_002c: ldloc.1 + IL_002d: ldfld class [runtime]System.Tuple`2 assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_0032: stloc.s V_5 + IL_0034: ldloc.s V_4 + IL_0036: call instance !0 class [runtime]System.Tuple`2::get_Item1() + IL_003b: stloc.2 + IL_003c: ldloc.s V_4 + IL_003e: call instance !1 class [runtime]System.Tuple`2::get_Item2() + IL_0043: stloc.3 + IL_0044: ldloc.s V_5 + IL_0046: call instance !0 class [runtime]System.Tuple`2::get_Item1() + IL_004b: stloc.s V_6 + IL_004d: ldloc.s V_5 + IL_004f: call instance !1 class [runtime]System.Tuple`2::get_Item2() + IL_0054: stloc.s V_7 + IL_0056: ldloc.2 + IL_0057: ldloc.s V_6 + IL_0059: ldarg.2 + IL_005a: callvirt instance bool assembly/HashMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/HashMicroPerfAndCodeGenerationTests/Key, class [runtime]System.Collections.IEqualityComparer) - IL_006c: brfalse.s IL_0079 + IL_005f: brfalse.s IL_006b - IL_006e: ldloc.s V_4 - IL_0070: ldloc.s V_8 - IL_0072: ldarg.2 - IL_0073: callvirt instance bool assembly/HashMicroPerfAndCodeGenerationTests/Key::Equals(object, + IL_0061: ldloc.3 + IL_0062: ldloc.s V_7 + IL_0064: ldarg.2 + IL_0065: callvirt instance bool assembly/HashMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/HashMicroPerfAndCodeGenerationTests/Key, class [runtime]System.Collections.IEqualityComparer) - IL_0078: ret + IL_006a: ret - IL_0079: ldc.i4.0 - IL_007a: ret + IL_006b: ldc.i4.0 + IL_006c: ret - IL_007b: ldc.i4.0 - IL_007c: ret + IL_006d: ldc.i4.0 + IL_006e: ret - IL_007d: ldc.i4.0 - IL_007e: ret + IL_006f: ldc.i4.0 + IL_0070: ret - IL_007f: ldarg.1 - IL_0080: ldnull - IL_0081: cgt.un - IL_0083: ldc.i4.0 - IL_0084: ceq - IL_0086: ret + IL_0071: ldarg.1 + IL_0072: ldnull + IL_0073: cgt.un + IL_0075: ldc.i4.0 + IL_0076: ceq + IL_0078: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::Equals(class assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1157,8 +1178,7 @@ IL_003e: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1324,8 +1344,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1336,8 +1355,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash12.fsx.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash12.fsx.il.netcore.bsl index 563226757ff..22b90a91f66 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash12.fsx.il.netcore.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/GenericComparison/Hash12.fsx.il.netcore.bsl @@ -105,8 +105,7 @@ IL_0014: ret } - .method public hidebysig instance int32 - get_Item1() cil managed + .method public hidebysig instance int32 get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -117,8 +116,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Item2() cil managed + .method public hidebysig instance int32 get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -129,8 +127,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -142,8 +139,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -157,8 +153,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -171,8 +166,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/HashMicroPerfAndCodeGenerationTests/Key obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/HashMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -255,8 +249,7 @@ IL_0068: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -354,8 +347,7 @@ IL_006d: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -406,8 +398,7 @@ IL_0038: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -418,60 +409,80 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/HashMicroPerfAndCodeGenerationTests/Key obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/HashMicroPerfAndCodeGenerationTests/Key V_0, - class assembly/HashMicroPerfAndCodeGenerationTests/Key V_1, - class assembly/HashMicroPerfAndCodeGenerationTests/Key V_2) + class assembly/HashMicroPerfAndCodeGenerationTests/Key V_1) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0034 + IL_0001: brfalse.s IL_002d IL_0003: ldarg.1 - IL_0004: isinst assembly/HashMicroPerfAndCodeGenerationTests/Key + IL_0004: brfalse.s IL_002b + + IL_0006: ldarg.0 + IL_0007: pop + IL_0008: ldarg.0 IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0032 + IL_000a: ldarg.1 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_0012: ldloc.1 + IL_0013: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_0018: bne.un.s IL_0029 - IL_000d: ldarg.0 - IL_000e: pop - IL_000f: ldarg.0 - IL_0010: stloc.1 - IL_0011: ldloc.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_0019: ldloc.2 - IL_001a: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_001f: bne.un.s IL_0030 - - IL_0021: ldloc.1 - IL_0022: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_0027: ldloc.2 - IL_0028: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_002d: ceq - IL_002f: ret - - IL_0030: ldc.i4.0 - IL_0031: ret - - IL_0032: ldc.i4.0 - IL_0033: ret - - IL_0034: ldarg.1 - IL_0035: ldnull - IL_0036: cgt.un - IL_0038: ldc.i4.0 - IL_0039: ceq - IL_003b: ret + IL_001a: ldloc.0 + IL_001b: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_0020: ldloc.1 + IL_0021: ldfld int32 assembly/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_0026: ceq + IL_0028: ret + + IL_0029: ldc.i4.0 + IL_002a: ret + + IL_002b: ldc.i4.0 + IL_002c: ret + + IL_002d: ldarg.1 + IL_002e: ldnull + IL_002f: cgt.un + IL_0031: ldc.i4.0 + IL_0032: ceq + IL_0034: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/HashMicroPerfAndCodeGenerationTests/Key obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/HashMicroPerfAndCodeGenerationTests/Key V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/HashMicroPerfAndCodeGenerationTests/Key + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/HashMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/HashMicroPerfAndCodeGenerationTests/Key, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/HashMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -517,8 +528,7 @@ IL_0034: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -625,8 +635,7 @@ IL_0014: ret } - .method public hidebysig instance class assembly/HashMicroPerfAndCodeGenerationTests/Key - get_Item1() cil managed + .method public hidebysig instance class assembly/HashMicroPerfAndCodeGenerationTests/Key get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -637,8 +646,7 @@ IL_0006: ret } - .method public hidebysig instance class [runtime]System.Tuple`2 - get_Item2() cil managed + .method public hidebysig instance class [runtime]System.Tuple`2 get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -649,8 +657,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -662,8 +669,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -677,8 +683,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -691,8 +696,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -800,8 +804,7 @@ IL_009f: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -924,8 +927,7 @@ IL_00a4: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1002,8 +1004,7 @@ IL_0067: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1014,101 +1015,121 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 5 .locals init (class assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_0, class assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_1, - class assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_2, + class assembly/HashMicroPerfAndCodeGenerationTests/Key V_2, class assembly/HashMicroPerfAndCodeGenerationTests/Key V_3, - class assembly/HashMicroPerfAndCodeGenerationTests/Key V_4, + class [runtime]System.Tuple`2 V_4, class [runtime]System.Tuple`2 V_5, - class [runtime]System.Tuple`2 V_6, - class assembly/HashMicroPerfAndCodeGenerationTests/Key V_7, - class assembly/HashMicroPerfAndCodeGenerationTests/Key V_8) + class assembly/HashMicroPerfAndCodeGenerationTests/Key V_6, + class assembly/HashMicroPerfAndCodeGenerationTests/Key V_7) IL_0000: ldarg.0 - IL_0001: brfalse IL_007f + IL_0001: brfalse.s IL_0071 - IL_0006: ldarg.1 - IL_0007: isinst assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_007d + IL_0003: ldarg.1 + IL_0004: brfalse.s IL_006f - IL_0010: ldarg.0 - IL_0011: pop - IL_0012: ldarg.0 - IL_0013: stloc.1 - IL_0014: ldloc.0 - IL_0015: stloc.2 - IL_0016: ldloc.1 - IL_0017: ldfld class assembly/HashMicroPerfAndCodeGenerationTests/Key assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_001c: stloc.3 - IL_001d: ldloc.2 - IL_001e: ldfld class assembly/HashMicroPerfAndCodeGenerationTests/Key assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_0023: stloc.s V_4 - IL_0025: ldloc.3 - IL_0026: ldloc.s V_4 - IL_0028: ldarg.2 - IL_0029: callvirt instance bool assembly/HashMicroPerfAndCodeGenerationTests/Key::Equals(object, + IL_0006: ldarg.0 + IL_0007: pop + IL_0008: ldarg.0 + IL_0009: stloc.0 + IL_000a: ldarg.1 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: ldfld class assembly/HashMicroPerfAndCodeGenerationTests/Key assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_0012: stloc.2 + IL_0013: ldloc.1 + IL_0014: ldfld class assembly/HashMicroPerfAndCodeGenerationTests/Key assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_0019: stloc.3 + IL_001a: ldloc.2 + IL_001b: ldloc.3 + IL_001c: ldarg.2 + IL_001d: callvirt instance bool assembly/HashMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/HashMicroPerfAndCodeGenerationTests/Key, class [runtime]System.Collections.IEqualityComparer) - IL_002e: brfalse.s IL_007b - - IL_0030: ldloc.1 - IL_0031: ldfld class [runtime]System.Tuple`2 assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_0036: stloc.s V_5 - IL_0038: ldloc.2 - IL_0039: ldfld class [runtime]System.Tuple`2 assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_003e: stloc.s V_6 - IL_0040: ldloc.s V_5 - IL_0042: call instance !0 class [runtime]System.Tuple`2::get_Item1() - IL_0047: stloc.3 - IL_0048: ldloc.s V_5 - IL_004a: call instance !1 class [runtime]System.Tuple`2::get_Item2() - IL_004f: stloc.s V_4 - IL_0051: ldloc.s V_6 - IL_0053: call instance !0 class [runtime]System.Tuple`2::get_Item1() - IL_0058: stloc.s V_7 - IL_005a: ldloc.s V_6 - IL_005c: call instance !1 class [runtime]System.Tuple`2::get_Item2() - IL_0061: stloc.s V_8 - IL_0063: ldloc.3 - IL_0064: ldloc.s V_7 - IL_0066: ldarg.2 - IL_0067: callvirt instance bool assembly/HashMicroPerfAndCodeGenerationTests/Key::Equals(object, + IL_0022: brfalse.s IL_006d + + IL_0024: ldloc.0 + IL_0025: ldfld class [runtime]System.Tuple`2 assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_002a: stloc.s V_4 + IL_002c: ldloc.1 + IL_002d: ldfld class [runtime]System.Tuple`2 assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_0032: stloc.s V_5 + IL_0034: ldloc.s V_4 + IL_0036: call instance !0 class [runtime]System.Tuple`2::get_Item1() + IL_003b: stloc.2 + IL_003c: ldloc.s V_4 + IL_003e: call instance !1 class [runtime]System.Tuple`2::get_Item2() + IL_0043: stloc.3 + IL_0044: ldloc.s V_5 + IL_0046: call instance !0 class [runtime]System.Tuple`2::get_Item1() + IL_004b: stloc.s V_6 + IL_004d: ldloc.s V_5 + IL_004f: call instance !1 class [runtime]System.Tuple`2::get_Item2() + IL_0054: stloc.s V_7 + IL_0056: ldloc.2 + IL_0057: ldloc.s V_6 + IL_0059: ldarg.2 + IL_005a: callvirt instance bool assembly/HashMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/HashMicroPerfAndCodeGenerationTests/Key, class [runtime]System.Collections.IEqualityComparer) - IL_006c: brfalse.s IL_0079 + IL_005f: brfalse.s IL_006b - IL_006e: ldloc.s V_4 - IL_0070: ldloc.s V_8 - IL_0072: ldarg.2 - IL_0073: callvirt instance bool assembly/HashMicroPerfAndCodeGenerationTests/Key::Equals(object, + IL_0061: ldloc.3 + IL_0062: ldloc.s V_7 + IL_0064: ldarg.2 + IL_0065: callvirt instance bool assembly/HashMicroPerfAndCodeGenerationTests/Key::Equals(class assembly/HashMicroPerfAndCodeGenerationTests/Key, class [runtime]System.Collections.IEqualityComparer) - IL_0078: ret + IL_006a: ret - IL_0079: ldc.i4.0 - IL_007a: ret + IL_006b: ldc.i4.0 + IL_006c: ret - IL_007b: ldc.i4.0 - IL_007c: ret + IL_006d: ldc.i4.0 + IL_006e: ret - IL_007d: ldc.i4.0 - IL_007e: ret + IL_006f: ldc.i4.0 + IL_0070: ret - IL_007f: ldarg.1 - IL_0080: ldnull - IL_0081: cgt.un - IL_0083: ldc.i4.0 - IL_0084: ceq - IL_0086: ret + IL_0071: ldarg.1 + IL_0072: ldnull + IL_0073: cgt.un + IL_0075: ldc.i4.0 + IL_0076: ceq + IL_0078: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::Equals(class assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1157,8 +1178,7 @@ IL_003e: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOff.fs.il.net472.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOff.fs.il.net472.debug.bsl index 5e771165fc5..4290182d0b2 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOff.fs.il.net472.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOff.fs.il.net472.debug.bsl @@ -819,114 +819,135 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class Match01/Test1 obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 - .locals init (class Match01/Test1 V_0, + .locals init (int32 V_0, int32 V_1, - int32 V_2, + class Match01/Test1/X11 V_2, class Match01/Test1/X11 V_3, - class Match01/Test1/X11 V_4, + class Match01/Test1/X12 V_4, class Match01/Test1/X12 V_5, - class Match01/Test1/X12 V_6, + class Match01/Test1/X13 V_6, class Match01/Test1/X13 V_7, - class Match01/Test1/X13 V_8, - class Match01/Test1/X14 V_9, - class Match01/Test1/X14 V_10) + class Match01/Test1/X14 V_8, + class Match01/Test1/X14 V_9) IL_0000: ldarg.0 - IL_0001: brfalse IL_00c9 + IL_0001: brfalse IL_00c0 IL_0006: ldarg.1 - IL_0007: isinst Match01/Test1 - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse IL_00c7 + IL_0007: brfalse IL_00be - IL_0013: ldarg.0 + IL_000c: ldarg.0 + IL_000d: ldfld int32 Match01/Test1::_tag + IL_0012: stloc.0 + IL_0013: ldarg.1 IL_0014: ldfld int32 Match01/Test1::_tag IL_0019: stloc.1 IL_001a: ldloc.0 - IL_001b: ldfld int32 Match01/Test1::_tag - IL_0020: stloc.2 - IL_0021: ldloc.1 - IL_0022: ldloc.2 - IL_0023: bne.un IL_00c5 - - IL_0028: ldarg.0 - IL_0029: call instance int32 Match01/Test1::get_Tag() - IL_002e: switch ( - IL_0043, - IL_0062, - IL_0083, - IL_00a4) - IL_0043: ldarg.0 + IL_001b: ldloc.1 + IL_001c: bne.un IL_00bc + + IL_0021: ldarg.0 + IL_0022: call instance int32 Match01/Test1::get_Tag() + IL_0027: switch ( + IL_003c, + IL_0059, + IL_007a, + IL_009b) + IL_003c: ldarg.0 + IL_003d: castclass Match01/Test1/X11 + IL_0042: stloc.2 + IL_0043: ldarg.1 IL_0044: castclass Match01/Test1/X11 IL_0049: stloc.3 - IL_004a: ldloc.0 - IL_004b: castclass Match01/Test1/X11 - IL_0050: stloc.s V_4 - IL_0052: ldloc.3 - IL_0053: ldfld int32 Match01/Test1/X11::item - IL_0058: ldloc.s V_4 - IL_005a: ldfld int32 Match01/Test1/X11::item - IL_005f: ceq - IL_0061: ret - - IL_0062: ldarg.0 - IL_0063: castclass Match01/Test1/X12 - IL_0068: stloc.s V_5 - IL_006a: ldloc.0 - IL_006b: castclass Match01/Test1/X12 - IL_0070: stloc.s V_6 - IL_0072: ldloc.s V_5 - IL_0074: ldfld int32 Match01/Test1/X12::item - IL_0079: ldloc.s V_6 - IL_007b: ldfld int32 Match01/Test1/X12::item - IL_0080: ceq - IL_0082: ret + IL_004a: ldloc.2 + IL_004b: ldfld int32 Match01/Test1/X11::item + IL_0050: ldloc.3 + IL_0051: ldfld int32 Match01/Test1/X11::item + IL_0056: ceq + IL_0058: ret - IL_0083: ldarg.0 - IL_0084: castclass Match01/Test1/X13 - IL_0089: stloc.s V_7 - IL_008b: ldloc.0 - IL_008c: castclass Match01/Test1/X13 - IL_0091: stloc.s V_8 - IL_0093: ldloc.s V_7 - IL_0095: ldfld int32 Match01/Test1/X13::item - IL_009a: ldloc.s V_8 - IL_009c: ldfld int32 Match01/Test1/X13::item - IL_00a1: ceq - IL_00a3: ret - - IL_00a4: ldarg.0 - IL_00a5: castclass Match01/Test1/X14 - IL_00aa: stloc.s V_9 - IL_00ac: ldloc.0 - IL_00ad: castclass Match01/Test1/X14 - IL_00b2: stloc.s V_10 - IL_00b4: ldloc.s V_9 - IL_00b6: ldfld int32 Match01/Test1/X14::item - IL_00bb: ldloc.s V_10 - IL_00bd: ldfld int32 Match01/Test1/X14::item - IL_00c2: ceq - IL_00c4: ret - - IL_00c5: ldc.i4.0 - IL_00c6: ret - - IL_00c7: ldc.i4.0 - IL_00c8: ret - - IL_00c9: ldarg.1 - IL_00ca: ldnull - IL_00cb: cgt.un - IL_00cd: ldc.i4.0 - IL_00ce: ceq - IL_00d0: ret + IL_0059: ldarg.0 + IL_005a: castclass Match01/Test1/X12 + IL_005f: stloc.s V_4 + IL_0061: ldarg.1 + IL_0062: castclass Match01/Test1/X12 + IL_0067: stloc.s V_5 + IL_0069: ldloc.s V_4 + IL_006b: ldfld int32 Match01/Test1/X12::item + IL_0070: ldloc.s V_5 + IL_0072: ldfld int32 Match01/Test1/X12::item + IL_0077: ceq + IL_0079: ret + + IL_007a: ldarg.0 + IL_007b: castclass Match01/Test1/X13 + IL_0080: stloc.s V_6 + IL_0082: ldarg.1 + IL_0083: castclass Match01/Test1/X13 + IL_0088: stloc.s V_7 + IL_008a: ldloc.s V_6 + IL_008c: ldfld int32 Match01/Test1/X13::item + IL_0091: ldloc.s V_7 + IL_0093: ldfld int32 Match01/Test1/X13::item + IL_0098: ceq + IL_009a: ret + + IL_009b: ldarg.0 + IL_009c: castclass Match01/Test1/X14 + IL_00a1: stloc.s V_8 + IL_00a3: ldarg.1 + IL_00a4: castclass Match01/Test1/X14 + IL_00a9: stloc.s V_9 + IL_00ab: ldloc.s V_8 + IL_00ad: ldfld int32 Match01/Test1/X14::item + IL_00b2: ldloc.s V_9 + IL_00b4: ldfld int32 Match01/Test1/X14::item + IL_00b9: ceq + IL_00bb: ret + + IL_00bc: ldc.i4.0 + IL_00bd: ret + + IL_00be: ldc.i4.0 + IL_00bf: ret + + IL_00c0: ldarg.1 + IL_00c1: ldnull + IL_00c2: cgt.un + IL_00c4: ldc.i4.0 + IL_00c5: ceq + IL_00c7: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class Match01/Test1 V_0) + IL_0000: ldarg.1 + IL_0001: isinst Match01/Test1 + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool Match01/Test1::Equals(class Match01/Test1, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class Match01/Test1 obj) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOff.fs.il.net472.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOff.fs.il.net472.release.bsl index f1f842db266..b27892bf2cc 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOff.fs.il.net472.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOff.fs.il.net472.release.bsl @@ -814,114 +814,135 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class Match01/Test1 obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 - .locals init (class Match01/Test1 V_0, + .locals init (int32 V_0, int32 V_1, - int32 V_2, + class Match01/Test1/X11 V_2, class Match01/Test1/X11 V_3, - class Match01/Test1/X11 V_4, + class Match01/Test1/X12 V_4, class Match01/Test1/X12 V_5, - class Match01/Test1/X12 V_6, + class Match01/Test1/X13 V_6, class Match01/Test1/X13 V_7, - class Match01/Test1/X13 V_8, - class Match01/Test1/X14 V_9, - class Match01/Test1/X14 V_10) + class Match01/Test1/X14 V_8, + class Match01/Test1/X14 V_9) IL_0000: ldarg.0 - IL_0001: brfalse IL_00c9 + IL_0001: brfalse IL_00c0 IL_0006: ldarg.1 - IL_0007: isinst Match01/Test1 - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse IL_00c7 + IL_0007: brfalse IL_00be - IL_0013: ldarg.0 + IL_000c: ldarg.0 + IL_000d: ldfld int32 Match01/Test1::_tag + IL_0012: stloc.0 + IL_0013: ldarg.1 IL_0014: ldfld int32 Match01/Test1::_tag IL_0019: stloc.1 IL_001a: ldloc.0 - IL_001b: ldfld int32 Match01/Test1::_tag - IL_0020: stloc.2 - IL_0021: ldloc.1 - IL_0022: ldloc.2 - IL_0023: bne.un IL_00c5 - - IL_0028: ldarg.0 - IL_0029: call instance int32 Match01/Test1::get_Tag() - IL_002e: switch ( - IL_0043, - IL_0062, - IL_0083, - IL_00a4) - IL_0043: ldarg.0 + IL_001b: ldloc.1 + IL_001c: bne.un IL_00bc + + IL_0021: ldarg.0 + IL_0022: call instance int32 Match01/Test1::get_Tag() + IL_0027: switch ( + IL_003c, + IL_0059, + IL_007a, + IL_009b) + IL_003c: ldarg.0 + IL_003d: castclass Match01/Test1/X11 + IL_0042: stloc.2 + IL_0043: ldarg.1 IL_0044: castclass Match01/Test1/X11 IL_0049: stloc.3 - IL_004a: ldloc.0 - IL_004b: castclass Match01/Test1/X11 - IL_0050: stloc.s V_4 - IL_0052: ldloc.3 - IL_0053: ldfld int32 Match01/Test1/X11::item - IL_0058: ldloc.s V_4 - IL_005a: ldfld int32 Match01/Test1/X11::item - IL_005f: ceq - IL_0061: ret - - IL_0062: ldarg.0 - IL_0063: castclass Match01/Test1/X12 - IL_0068: stloc.s V_5 - IL_006a: ldloc.0 - IL_006b: castclass Match01/Test1/X12 - IL_0070: stloc.s V_6 - IL_0072: ldloc.s V_5 - IL_0074: ldfld int32 Match01/Test1/X12::item - IL_0079: ldloc.s V_6 - IL_007b: ldfld int32 Match01/Test1/X12::item - IL_0080: ceq - IL_0082: ret + IL_004a: ldloc.2 + IL_004b: ldfld int32 Match01/Test1/X11::item + IL_0050: ldloc.3 + IL_0051: ldfld int32 Match01/Test1/X11::item + IL_0056: ceq + IL_0058: ret - IL_0083: ldarg.0 - IL_0084: castclass Match01/Test1/X13 - IL_0089: stloc.s V_7 - IL_008b: ldloc.0 - IL_008c: castclass Match01/Test1/X13 - IL_0091: stloc.s V_8 - IL_0093: ldloc.s V_7 - IL_0095: ldfld int32 Match01/Test1/X13::item - IL_009a: ldloc.s V_8 - IL_009c: ldfld int32 Match01/Test1/X13::item - IL_00a1: ceq - IL_00a3: ret - - IL_00a4: ldarg.0 - IL_00a5: castclass Match01/Test1/X14 - IL_00aa: stloc.s V_9 - IL_00ac: ldloc.0 - IL_00ad: castclass Match01/Test1/X14 - IL_00b2: stloc.s V_10 - IL_00b4: ldloc.s V_9 - IL_00b6: ldfld int32 Match01/Test1/X14::item - IL_00bb: ldloc.s V_10 - IL_00bd: ldfld int32 Match01/Test1/X14::item - IL_00c2: ceq - IL_00c4: ret - - IL_00c5: ldc.i4.0 - IL_00c6: ret - - IL_00c7: ldc.i4.0 - IL_00c8: ret - - IL_00c9: ldarg.1 - IL_00ca: ldnull - IL_00cb: cgt.un - IL_00cd: ldc.i4.0 - IL_00ce: ceq - IL_00d0: ret + IL_0059: ldarg.0 + IL_005a: castclass Match01/Test1/X12 + IL_005f: stloc.s V_4 + IL_0061: ldarg.1 + IL_0062: castclass Match01/Test1/X12 + IL_0067: stloc.s V_5 + IL_0069: ldloc.s V_4 + IL_006b: ldfld int32 Match01/Test1/X12::item + IL_0070: ldloc.s V_5 + IL_0072: ldfld int32 Match01/Test1/X12::item + IL_0077: ceq + IL_0079: ret + + IL_007a: ldarg.0 + IL_007b: castclass Match01/Test1/X13 + IL_0080: stloc.s V_6 + IL_0082: ldarg.1 + IL_0083: castclass Match01/Test1/X13 + IL_0088: stloc.s V_7 + IL_008a: ldloc.s V_6 + IL_008c: ldfld int32 Match01/Test1/X13::item + IL_0091: ldloc.s V_7 + IL_0093: ldfld int32 Match01/Test1/X13::item + IL_0098: ceq + IL_009a: ret + + IL_009b: ldarg.0 + IL_009c: castclass Match01/Test1/X14 + IL_00a1: stloc.s V_8 + IL_00a3: ldarg.1 + IL_00a4: castclass Match01/Test1/X14 + IL_00a9: stloc.s V_9 + IL_00ab: ldloc.s V_8 + IL_00ad: ldfld int32 Match01/Test1/X14::item + IL_00b2: ldloc.s V_9 + IL_00b4: ldfld int32 Match01/Test1/X14::item + IL_00b9: ceq + IL_00bb: ret + + IL_00bc: ldc.i4.0 + IL_00bd: ret + + IL_00be: ldc.i4.0 + IL_00bf: ret + + IL_00c0: ldarg.1 + IL_00c1: ldnull + IL_00c2: cgt.un + IL_00c4: ldc.i4.0 + IL_00c5: ceq + IL_00c7: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class Match01/Test1 V_0) + IL_0000: ldarg.1 + IL_0001: isinst Match01/Test1 + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool Match01/Test1::Equals(class Match01/Test1, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class Match01/Test1 obj) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOff.fs.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOff.fs.il.netcore.debug.bsl index c40defd36ee..63132d87f56 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOff.fs.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOff.fs.il.netcore.debug.bsl @@ -819,114 +819,135 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class Match01/Test1 obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 - .locals init (class Match01/Test1 V_0, + .locals init (int32 V_0, int32 V_1, - int32 V_2, + class Match01/Test1/X11 V_2, class Match01/Test1/X11 V_3, - class Match01/Test1/X11 V_4, + class Match01/Test1/X12 V_4, class Match01/Test1/X12 V_5, - class Match01/Test1/X12 V_6, + class Match01/Test1/X13 V_6, class Match01/Test1/X13 V_7, - class Match01/Test1/X13 V_8, - class Match01/Test1/X14 V_9, - class Match01/Test1/X14 V_10) + class Match01/Test1/X14 V_8, + class Match01/Test1/X14 V_9) IL_0000: ldarg.0 - IL_0001: brfalse IL_00c9 + IL_0001: brfalse IL_00c0 IL_0006: ldarg.1 - IL_0007: isinst Match01/Test1 - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse IL_00c7 + IL_0007: brfalse IL_00be - IL_0013: ldarg.0 + IL_000c: ldarg.0 + IL_000d: ldfld int32 Match01/Test1::_tag + IL_0012: stloc.0 + IL_0013: ldarg.1 IL_0014: ldfld int32 Match01/Test1::_tag IL_0019: stloc.1 IL_001a: ldloc.0 - IL_001b: ldfld int32 Match01/Test1::_tag - IL_0020: stloc.2 - IL_0021: ldloc.1 - IL_0022: ldloc.2 - IL_0023: bne.un IL_00c5 - - IL_0028: ldarg.0 - IL_0029: call instance int32 Match01/Test1::get_Tag() - IL_002e: switch ( - IL_0043, - IL_0062, - IL_0083, - IL_00a4) - IL_0043: ldarg.0 + IL_001b: ldloc.1 + IL_001c: bne.un IL_00bc + + IL_0021: ldarg.0 + IL_0022: call instance int32 Match01/Test1::get_Tag() + IL_0027: switch ( + IL_003c, + IL_0059, + IL_007a, + IL_009b) + IL_003c: ldarg.0 + IL_003d: castclass Match01/Test1/X11 + IL_0042: stloc.2 + IL_0043: ldarg.1 IL_0044: castclass Match01/Test1/X11 IL_0049: stloc.3 - IL_004a: ldloc.0 - IL_004b: castclass Match01/Test1/X11 - IL_0050: stloc.s V_4 - IL_0052: ldloc.3 - IL_0053: ldfld int32 Match01/Test1/X11::item - IL_0058: ldloc.s V_4 - IL_005a: ldfld int32 Match01/Test1/X11::item - IL_005f: ceq - IL_0061: ret - - IL_0062: ldarg.0 - IL_0063: castclass Match01/Test1/X12 - IL_0068: stloc.s V_5 - IL_006a: ldloc.0 - IL_006b: castclass Match01/Test1/X12 - IL_0070: stloc.s V_6 - IL_0072: ldloc.s V_5 - IL_0074: ldfld int32 Match01/Test1/X12::item - IL_0079: ldloc.s V_6 - IL_007b: ldfld int32 Match01/Test1/X12::item - IL_0080: ceq - IL_0082: ret + IL_004a: ldloc.2 + IL_004b: ldfld int32 Match01/Test1/X11::item + IL_0050: ldloc.3 + IL_0051: ldfld int32 Match01/Test1/X11::item + IL_0056: ceq + IL_0058: ret - IL_0083: ldarg.0 - IL_0084: castclass Match01/Test1/X13 - IL_0089: stloc.s V_7 - IL_008b: ldloc.0 - IL_008c: castclass Match01/Test1/X13 - IL_0091: stloc.s V_8 - IL_0093: ldloc.s V_7 - IL_0095: ldfld int32 Match01/Test1/X13::item - IL_009a: ldloc.s V_8 - IL_009c: ldfld int32 Match01/Test1/X13::item - IL_00a1: ceq - IL_00a3: ret - - IL_00a4: ldarg.0 - IL_00a5: castclass Match01/Test1/X14 - IL_00aa: stloc.s V_9 - IL_00ac: ldloc.0 - IL_00ad: castclass Match01/Test1/X14 - IL_00b2: stloc.s V_10 - IL_00b4: ldloc.s V_9 - IL_00b6: ldfld int32 Match01/Test1/X14::item - IL_00bb: ldloc.s V_10 - IL_00bd: ldfld int32 Match01/Test1/X14::item - IL_00c2: ceq - IL_00c4: ret - - IL_00c5: ldc.i4.0 - IL_00c6: ret - - IL_00c7: ldc.i4.0 - IL_00c8: ret - - IL_00c9: ldarg.1 - IL_00ca: ldnull - IL_00cb: cgt.un - IL_00cd: ldc.i4.0 - IL_00ce: ceq - IL_00d0: ret + IL_0059: ldarg.0 + IL_005a: castclass Match01/Test1/X12 + IL_005f: stloc.s V_4 + IL_0061: ldarg.1 + IL_0062: castclass Match01/Test1/X12 + IL_0067: stloc.s V_5 + IL_0069: ldloc.s V_4 + IL_006b: ldfld int32 Match01/Test1/X12::item + IL_0070: ldloc.s V_5 + IL_0072: ldfld int32 Match01/Test1/X12::item + IL_0077: ceq + IL_0079: ret + + IL_007a: ldarg.0 + IL_007b: castclass Match01/Test1/X13 + IL_0080: stloc.s V_6 + IL_0082: ldarg.1 + IL_0083: castclass Match01/Test1/X13 + IL_0088: stloc.s V_7 + IL_008a: ldloc.s V_6 + IL_008c: ldfld int32 Match01/Test1/X13::item + IL_0091: ldloc.s V_7 + IL_0093: ldfld int32 Match01/Test1/X13::item + IL_0098: ceq + IL_009a: ret + + IL_009b: ldarg.0 + IL_009c: castclass Match01/Test1/X14 + IL_00a1: stloc.s V_8 + IL_00a3: ldarg.1 + IL_00a4: castclass Match01/Test1/X14 + IL_00a9: stloc.s V_9 + IL_00ab: ldloc.s V_8 + IL_00ad: ldfld int32 Match01/Test1/X14::item + IL_00b2: ldloc.s V_9 + IL_00b4: ldfld int32 Match01/Test1/X14::item + IL_00b9: ceq + IL_00bb: ret + + IL_00bc: ldc.i4.0 + IL_00bd: ret + + IL_00be: ldc.i4.0 + IL_00bf: ret + + IL_00c0: ldarg.1 + IL_00c1: ldnull + IL_00c2: cgt.un + IL_00c4: ldc.i4.0 + IL_00c5: ceq + IL_00c7: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class Match01/Test1 V_0) + IL_0000: ldarg.1 + IL_0001: isinst Match01/Test1 + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool Match01/Test1::Equals(class Match01/Test1, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class Match01/Test1 obj) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOff.fs.il.netcore.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOff.fs.il.netcore.release.bsl index 65aba2a52ca..0aa8981d0d2 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOff.fs.il.netcore.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOff.fs.il.netcore.release.bsl @@ -814,114 +814,135 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class Match01/Test1 obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 - .locals init (class Match01/Test1 V_0, + .locals init (int32 V_0, int32 V_1, - int32 V_2, + class Match01/Test1/X11 V_2, class Match01/Test1/X11 V_3, - class Match01/Test1/X11 V_4, + class Match01/Test1/X12 V_4, class Match01/Test1/X12 V_5, - class Match01/Test1/X12 V_6, + class Match01/Test1/X13 V_6, class Match01/Test1/X13 V_7, - class Match01/Test1/X13 V_8, - class Match01/Test1/X14 V_9, - class Match01/Test1/X14 V_10) + class Match01/Test1/X14 V_8, + class Match01/Test1/X14 V_9) IL_0000: ldarg.0 - IL_0001: brfalse IL_00c9 + IL_0001: brfalse IL_00c0 IL_0006: ldarg.1 - IL_0007: isinst Match01/Test1 - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse IL_00c7 + IL_0007: brfalse IL_00be - IL_0013: ldarg.0 + IL_000c: ldarg.0 + IL_000d: ldfld int32 Match01/Test1::_tag + IL_0012: stloc.0 + IL_0013: ldarg.1 IL_0014: ldfld int32 Match01/Test1::_tag IL_0019: stloc.1 IL_001a: ldloc.0 - IL_001b: ldfld int32 Match01/Test1::_tag - IL_0020: stloc.2 - IL_0021: ldloc.1 - IL_0022: ldloc.2 - IL_0023: bne.un IL_00c5 - - IL_0028: ldarg.0 - IL_0029: call instance int32 Match01/Test1::get_Tag() - IL_002e: switch ( - IL_0043, - IL_0062, - IL_0083, - IL_00a4) - IL_0043: ldarg.0 + IL_001b: ldloc.1 + IL_001c: bne.un IL_00bc + + IL_0021: ldarg.0 + IL_0022: call instance int32 Match01/Test1::get_Tag() + IL_0027: switch ( + IL_003c, + IL_0059, + IL_007a, + IL_009b) + IL_003c: ldarg.0 + IL_003d: castclass Match01/Test1/X11 + IL_0042: stloc.2 + IL_0043: ldarg.1 IL_0044: castclass Match01/Test1/X11 IL_0049: stloc.3 - IL_004a: ldloc.0 - IL_004b: castclass Match01/Test1/X11 - IL_0050: stloc.s V_4 - IL_0052: ldloc.3 - IL_0053: ldfld int32 Match01/Test1/X11::item - IL_0058: ldloc.s V_4 - IL_005a: ldfld int32 Match01/Test1/X11::item - IL_005f: ceq - IL_0061: ret - - IL_0062: ldarg.0 - IL_0063: castclass Match01/Test1/X12 - IL_0068: stloc.s V_5 - IL_006a: ldloc.0 - IL_006b: castclass Match01/Test1/X12 - IL_0070: stloc.s V_6 - IL_0072: ldloc.s V_5 - IL_0074: ldfld int32 Match01/Test1/X12::item - IL_0079: ldloc.s V_6 - IL_007b: ldfld int32 Match01/Test1/X12::item - IL_0080: ceq - IL_0082: ret + IL_004a: ldloc.2 + IL_004b: ldfld int32 Match01/Test1/X11::item + IL_0050: ldloc.3 + IL_0051: ldfld int32 Match01/Test1/X11::item + IL_0056: ceq + IL_0058: ret - IL_0083: ldarg.0 - IL_0084: castclass Match01/Test1/X13 - IL_0089: stloc.s V_7 - IL_008b: ldloc.0 - IL_008c: castclass Match01/Test1/X13 - IL_0091: stloc.s V_8 - IL_0093: ldloc.s V_7 - IL_0095: ldfld int32 Match01/Test1/X13::item - IL_009a: ldloc.s V_8 - IL_009c: ldfld int32 Match01/Test1/X13::item - IL_00a1: ceq - IL_00a3: ret - - IL_00a4: ldarg.0 - IL_00a5: castclass Match01/Test1/X14 - IL_00aa: stloc.s V_9 - IL_00ac: ldloc.0 - IL_00ad: castclass Match01/Test1/X14 - IL_00b2: stloc.s V_10 - IL_00b4: ldloc.s V_9 - IL_00b6: ldfld int32 Match01/Test1/X14::item - IL_00bb: ldloc.s V_10 - IL_00bd: ldfld int32 Match01/Test1/X14::item - IL_00c2: ceq - IL_00c4: ret - - IL_00c5: ldc.i4.0 - IL_00c6: ret - - IL_00c7: ldc.i4.0 - IL_00c8: ret - - IL_00c9: ldarg.1 - IL_00ca: ldnull - IL_00cb: cgt.un - IL_00cd: ldc.i4.0 - IL_00ce: ceq - IL_00d0: ret + IL_0059: ldarg.0 + IL_005a: castclass Match01/Test1/X12 + IL_005f: stloc.s V_4 + IL_0061: ldarg.1 + IL_0062: castclass Match01/Test1/X12 + IL_0067: stloc.s V_5 + IL_0069: ldloc.s V_4 + IL_006b: ldfld int32 Match01/Test1/X12::item + IL_0070: ldloc.s V_5 + IL_0072: ldfld int32 Match01/Test1/X12::item + IL_0077: ceq + IL_0079: ret + + IL_007a: ldarg.0 + IL_007b: castclass Match01/Test1/X13 + IL_0080: stloc.s V_6 + IL_0082: ldarg.1 + IL_0083: castclass Match01/Test1/X13 + IL_0088: stloc.s V_7 + IL_008a: ldloc.s V_6 + IL_008c: ldfld int32 Match01/Test1/X13::item + IL_0091: ldloc.s V_7 + IL_0093: ldfld int32 Match01/Test1/X13::item + IL_0098: ceq + IL_009a: ret + + IL_009b: ldarg.0 + IL_009c: castclass Match01/Test1/X14 + IL_00a1: stloc.s V_8 + IL_00a3: ldarg.1 + IL_00a4: castclass Match01/Test1/X14 + IL_00a9: stloc.s V_9 + IL_00ab: ldloc.s V_8 + IL_00ad: ldfld int32 Match01/Test1/X14::item + IL_00b2: ldloc.s V_9 + IL_00b4: ldfld int32 Match01/Test1/X14::item + IL_00b9: ceq + IL_00bb: ret + + IL_00bc: ldc.i4.0 + IL_00bd: ret + + IL_00be: ldc.i4.0 + IL_00bf: ret + + IL_00c0: ldarg.1 + IL_00c1: ldnull + IL_00c2: cgt.un + IL_00c4: ldc.i4.0 + IL_00c5: ceq + IL_00c7: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class Match01/Test1 V_0) + IL_0000: ldarg.1 + IL_0001: isinst Match01/Test1 + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool Match01/Test1::Equals(class Match01/Test1, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class Match01/Test1 obj) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOn.fs.il.net472.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOn.fs.il.net472.debug.bsl index 3e70be9b6f3..71cdaa19ccd 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOn.fs.il.net472.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOn.fs.il.net472.debug.bsl @@ -1168,114 +1168,135 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class Match01/Test1 obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 - .locals init (class Match01/Test1 V_0, + .locals init (int32 V_0, int32 V_1, - int32 V_2, + class Match01/Test1/X11 V_2, class Match01/Test1/X11 V_3, - class Match01/Test1/X11 V_4, + class Match01/Test1/X12 V_4, class Match01/Test1/X12 V_5, - class Match01/Test1/X12 V_6, + class Match01/Test1/X13 V_6, class Match01/Test1/X13 V_7, - class Match01/Test1/X13 V_8, - class Match01/Test1/X14 V_9, - class Match01/Test1/X14 V_10) + class Match01/Test1/X14 V_8, + class Match01/Test1/X14 V_9) IL_0000: ldarg.0 - IL_0001: brfalse IL_00c9 + IL_0001: brfalse IL_00c0 IL_0006: ldarg.1 - IL_0007: isinst Match01/Test1 - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse IL_00c7 + IL_0007: brfalse IL_00be - IL_0013: ldarg.0 + IL_000c: ldarg.0 + IL_000d: ldfld int32 Match01/Test1::_tag + IL_0012: stloc.0 + IL_0013: ldarg.1 IL_0014: ldfld int32 Match01/Test1::_tag IL_0019: stloc.1 IL_001a: ldloc.0 - IL_001b: ldfld int32 Match01/Test1::_tag - IL_0020: stloc.2 - IL_0021: ldloc.1 - IL_0022: ldloc.2 - IL_0023: bne.un IL_00c5 - - IL_0028: ldarg.0 - IL_0029: call instance int32 Match01/Test1::get_Tag() - IL_002e: switch ( - IL_0043, - IL_0062, - IL_0083, - IL_00a4) - IL_0043: ldarg.0 + IL_001b: ldloc.1 + IL_001c: bne.un IL_00bc + + IL_0021: ldarg.0 + IL_0022: call instance int32 Match01/Test1::get_Tag() + IL_0027: switch ( + IL_003c, + IL_0059, + IL_007a, + IL_009b) + IL_003c: ldarg.0 + IL_003d: castclass Match01/Test1/X11 + IL_0042: stloc.2 + IL_0043: ldarg.1 IL_0044: castclass Match01/Test1/X11 IL_0049: stloc.3 - IL_004a: ldloc.0 - IL_004b: castclass Match01/Test1/X11 - IL_0050: stloc.s V_4 - IL_0052: ldloc.3 - IL_0053: ldfld int32 Match01/Test1/X11::item - IL_0058: ldloc.s V_4 - IL_005a: ldfld int32 Match01/Test1/X11::item - IL_005f: ceq - IL_0061: ret - - IL_0062: ldarg.0 - IL_0063: castclass Match01/Test1/X12 - IL_0068: stloc.s V_5 - IL_006a: ldloc.0 - IL_006b: castclass Match01/Test1/X12 - IL_0070: stloc.s V_6 - IL_0072: ldloc.s V_5 - IL_0074: ldfld int32 Match01/Test1/X12::item - IL_0079: ldloc.s V_6 - IL_007b: ldfld int32 Match01/Test1/X12::item - IL_0080: ceq - IL_0082: ret + IL_004a: ldloc.2 + IL_004b: ldfld int32 Match01/Test1/X11::item + IL_0050: ldloc.3 + IL_0051: ldfld int32 Match01/Test1/X11::item + IL_0056: ceq + IL_0058: ret - IL_0083: ldarg.0 - IL_0084: castclass Match01/Test1/X13 - IL_0089: stloc.s V_7 - IL_008b: ldloc.0 - IL_008c: castclass Match01/Test1/X13 - IL_0091: stloc.s V_8 - IL_0093: ldloc.s V_7 - IL_0095: ldfld int32 Match01/Test1/X13::item - IL_009a: ldloc.s V_8 - IL_009c: ldfld int32 Match01/Test1/X13::item - IL_00a1: ceq - IL_00a3: ret - - IL_00a4: ldarg.0 - IL_00a5: castclass Match01/Test1/X14 - IL_00aa: stloc.s V_9 - IL_00ac: ldloc.0 - IL_00ad: castclass Match01/Test1/X14 - IL_00b2: stloc.s V_10 - IL_00b4: ldloc.s V_9 - IL_00b6: ldfld int32 Match01/Test1/X14::item - IL_00bb: ldloc.s V_10 - IL_00bd: ldfld int32 Match01/Test1/X14::item - IL_00c2: ceq - IL_00c4: ret - - IL_00c5: ldc.i4.0 - IL_00c6: ret - - IL_00c7: ldc.i4.0 - IL_00c8: ret - - IL_00c9: ldarg.1 - IL_00ca: ldnull - IL_00cb: cgt.un - IL_00cd: ldc.i4.0 - IL_00ce: ceq - IL_00d0: ret + IL_0059: ldarg.0 + IL_005a: castclass Match01/Test1/X12 + IL_005f: stloc.s V_4 + IL_0061: ldarg.1 + IL_0062: castclass Match01/Test1/X12 + IL_0067: stloc.s V_5 + IL_0069: ldloc.s V_4 + IL_006b: ldfld int32 Match01/Test1/X12::item + IL_0070: ldloc.s V_5 + IL_0072: ldfld int32 Match01/Test1/X12::item + IL_0077: ceq + IL_0079: ret + + IL_007a: ldarg.0 + IL_007b: castclass Match01/Test1/X13 + IL_0080: stloc.s V_6 + IL_0082: ldarg.1 + IL_0083: castclass Match01/Test1/X13 + IL_0088: stloc.s V_7 + IL_008a: ldloc.s V_6 + IL_008c: ldfld int32 Match01/Test1/X13::item + IL_0091: ldloc.s V_7 + IL_0093: ldfld int32 Match01/Test1/X13::item + IL_0098: ceq + IL_009a: ret + + IL_009b: ldarg.0 + IL_009c: castclass Match01/Test1/X14 + IL_00a1: stloc.s V_8 + IL_00a3: ldarg.1 + IL_00a4: castclass Match01/Test1/X14 + IL_00a9: stloc.s V_9 + IL_00ab: ldloc.s V_8 + IL_00ad: ldfld int32 Match01/Test1/X14::item + IL_00b2: ldloc.s V_9 + IL_00b4: ldfld int32 Match01/Test1/X14::item + IL_00b9: ceq + IL_00bb: ret + + IL_00bc: ldc.i4.0 + IL_00bd: ret + + IL_00be: ldc.i4.0 + IL_00bf: ret + + IL_00c0: ldarg.1 + IL_00c1: ldnull + IL_00c2: cgt.un + IL_00c4: ldc.i4.0 + IL_00c5: ceq + IL_00c7: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class Match01/Test1 V_0) + IL_0000: ldarg.1 + IL_0001: isinst Match01/Test1 + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool Match01/Test1::Equals(class Match01/Test1, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class Match01/Test1 obj) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOn.fs.il.net472.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOn.fs.il.net472.release.bsl index 8d01ee81962..d4e0866201a 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOn.fs.il.net472.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOn.fs.il.net472.release.bsl @@ -1179,114 +1179,135 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class Match01/Test1 obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 - .locals init (class Match01/Test1 V_0, + .locals init (int32 V_0, int32 V_1, - int32 V_2, + class Match01/Test1/X11 V_2, class Match01/Test1/X11 V_3, - class Match01/Test1/X11 V_4, + class Match01/Test1/X12 V_4, class Match01/Test1/X12 V_5, - class Match01/Test1/X12 V_6, + class Match01/Test1/X13 V_6, class Match01/Test1/X13 V_7, - class Match01/Test1/X13 V_8, - class Match01/Test1/X14 V_9, - class Match01/Test1/X14 V_10) + class Match01/Test1/X14 V_8, + class Match01/Test1/X14 V_9) IL_0000: ldarg.0 - IL_0001: brfalse IL_00c9 + IL_0001: brfalse IL_00c0 IL_0006: ldarg.1 - IL_0007: isinst Match01/Test1 - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse IL_00c7 + IL_0007: brfalse IL_00be - IL_0013: ldarg.0 + IL_000c: ldarg.0 + IL_000d: ldfld int32 Match01/Test1::_tag + IL_0012: stloc.0 + IL_0013: ldarg.1 IL_0014: ldfld int32 Match01/Test1::_tag IL_0019: stloc.1 IL_001a: ldloc.0 - IL_001b: ldfld int32 Match01/Test1::_tag - IL_0020: stloc.2 - IL_0021: ldloc.1 - IL_0022: ldloc.2 - IL_0023: bne.un IL_00c5 - - IL_0028: ldarg.0 - IL_0029: call instance int32 Match01/Test1::get_Tag() - IL_002e: switch ( - IL_0043, - IL_0062, - IL_0083, - IL_00a4) - IL_0043: ldarg.0 + IL_001b: ldloc.1 + IL_001c: bne.un IL_00bc + + IL_0021: ldarg.0 + IL_0022: call instance int32 Match01/Test1::get_Tag() + IL_0027: switch ( + IL_003c, + IL_0059, + IL_007a, + IL_009b) + IL_003c: ldarg.0 + IL_003d: castclass Match01/Test1/X11 + IL_0042: stloc.2 + IL_0043: ldarg.1 IL_0044: castclass Match01/Test1/X11 IL_0049: stloc.3 - IL_004a: ldloc.0 - IL_004b: castclass Match01/Test1/X11 - IL_0050: stloc.s V_4 - IL_0052: ldloc.3 - IL_0053: ldfld int32 Match01/Test1/X11::item - IL_0058: ldloc.s V_4 - IL_005a: ldfld int32 Match01/Test1/X11::item - IL_005f: ceq - IL_0061: ret - - IL_0062: ldarg.0 - IL_0063: castclass Match01/Test1/X12 - IL_0068: stloc.s V_5 - IL_006a: ldloc.0 - IL_006b: castclass Match01/Test1/X12 - IL_0070: stloc.s V_6 - IL_0072: ldloc.s V_5 - IL_0074: ldfld int32 Match01/Test1/X12::item - IL_0079: ldloc.s V_6 - IL_007b: ldfld int32 Match01/Test1/X12::item - IL_0080: ceq - IL_0082: ret + IL_004a: ldloc.2 + IL_004b: ldfld int32 Match01/Test1/X11::item + IL_0050: ldloc.3 + IL_0051: ldfld int32 Match01/Test1/X11::item + IL_0056: ceq + IL_0058: ret - IL_0083: ldarg.0 - IL_0084: castclass Match01/Test1/X13 - IL_0089: stloc.s V_7 - IL_008b: ldloc.0 - IL_008c: castclass Match01/Test1/X13 - IL_0091: stloc.s V_8 - IL_0093: ldloc.s V_7 - IL_0095: ldfld int32 Match01/Test1/X13::item - IL_009a: ldloc.s V_8 - IL_009c: ldfld int32 Match01/Test1/X13::item - IL_00a1: ceq - IL_00a3: ret - - IL_00a4: ldarg.0 - IL_00a5: castclass Match01/Test1/X14 - IL_00aa: stloc.s V_9 - IL_00ac: ldloc.0 - IL_00ad: castclass Match01/Test1/X14 - IL_00b2: stloc.s V_10 - IL_00b4: ldloc.s V_9 - IL_00b6: ldfld int32 Match01/Test1/X14::item - IL_00bb: ldloc.s V_10 - IL_00bd: ldfld int32 Match01/Test1/X14::item - IL_00c2: ceq - IL_00c4: ret - - IL_00c5: ldc.i4.0 - IL_00c6: ret - - IL_00c7: ldc.i4.0 - IL_00c8: ret - - IL_00c9: ldarg.1 - IL_00ca: ldnull - IL_00cb: cgt.un - IL_00cd: ldc.i4.0 - IL_00ce: ceq - IL_00d0: ret + IL_0059: ldarg.0 + IL_005a: castclass Match01/Test1/X12 + IL_005f: stloc.s V_4 + IL_0061: ldarg.1 + IL_0062: castclass Match01/Test1/X12 + IL_0067: stloc.s V_5 + IL_0069: ldloc.s V_4 + IL_006b: ldfld int32 Match01/Test1/X12::item + IL_0070: ldloc.s V_5 + IL_0072: ldfld int32 Match01/Test1/X12::item + IL_0077: ceq + IL_0079: ret + + IL_007a: ldarg.0 + IL_007b: castclass Match01/Test1/X13 + IL_0080: stloc.s V_6 + IL_0082: ldarg.1 + IL_0083: castclass Match01/Test1/X13 + IL_0088: stloc.s V_7 + IL_008a: ldloc.s V_6 + IL_008c: ldfld int32 Match01/Test1/X13::item + IL_0091: ldloc.s V_7 + IL_0093: ldfld int32 Match01/Test1/X13::item + IL_0098: ceq + IL_009a: ret + + IL_009b: ldarg.0 + IL_009c: castclass Match01/Test1/X14 + IL_00a1: stloc.s V_8 + IL_00a3: ldarg.1 + IL_00a4: castclass Match01/Test1/X14 + IL_00a9: stloc.s V_9 + IL_00ab: ldloc.s V_8 + IL_00ad: ldfld int32 Match01/Test1/X14::item + IL_00b2: ldloc.s V_9 + IL_00b4: ldfld int32 Match01/Test1/X14::item + IL_00b9: ceq + IL_00bb: ret + + IL_00bc: ldc.i4.0 + IL_00bd: ret + + IL_00be: ldc.i4.0 + IL_00bf: ret + + IL_00c0: ldarg.1 + IL_00c1: ldnull + IL_00c2: cgt.un + IL_00c4: ldc.i4.0 + IL_00c5: ceq + IL_00c7: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class Match01/Test1 V_0) + IL_0000: ldarg.1 + IL_0001: isinst Match01/Test1 + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool Match01/Test1::Equals(class Match01/Test1, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class Match01/Test1 obj) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOn.fs.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOn.fs.il.netcore.debug.bsl index 466324f3310..0aeed02c185 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOn.fs.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOn.fs.il.netcore.debug.bsl @@ -1168,114 +1168,135 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class Match01/Test1 obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 - .locals init (class Match01/Test1 V_0, + .locals init (int32 V_0, int32 V_1, - int32 V_2, + class Match01/Test1/X11 V_2, class Match01/Test1/X11 V_3, - class Match01/Test1/X11 V_4, + class Match01/Test1/X12 V_4, class Match01/Test1/X12 V_5, - class Match01/Test1/X12 V_6, + class Match01/Test1/X13 V_6, class Match01/Test1/X13 V_7, - class Match01/Test1/X13 V_8, - class Match01/Test1/X14 V_9, - class Match01/Test1/X14 V_10) + class Match01/Test1/X14 V_8, + class Match01/Test1/X14 V_9) IL_0000: ldarg.0 - IL_0001: brfalse IL_00c9 + IL_0001: brfalse IL_00c0 IL_0006: ldarg.1 - IL_0007: isinst Match01/Test1 - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse IL_00c7 + IL_0007: brfalse IL_00be - IL_0013: ldarg.0 + IL_000c: ldarg.0 + IL_000d: ldfld int32 Match01/Test1::_tag + IL_0012: stloc.0 + IL_0013: ldarg.1 IL_0014: ldfld int32 Match01/Test1::_tag IL_0019: stloc.1 IL_001a: ldloc.0 - IL_001b: ldfld int32 Match01/Test1::_tag - IL_0020: stloc.2 - IL_0021: ldloc.1 - IL_0022: ldloc.2 - IL_0023: bne.un IL_00c5 - - IL_0028: ldarg.0 - IL_0029: call instance int32 Match01/Test1::get_Tag() - IL_002e: switch ( - IL_0043, - IL_0062, - IL_0083, - IL_00a4) - IL_0043: ldarg.0 + IL_001b: ldloc.1 + IL_001c: bne.un IL_00bc + + IL_0021: ldarg.0 + IL_0022: call instance int32 Match01/Test1::get_Tag() + IL_0027: switch ( + IL_003c, + IL_0059, + IL_007a, + IL_009b) + IL_003c: ldarg.0 + IL_003d: castclass Match01/Test1/X11 + IL_0042: stloc.2 + IL_0043: ldarg.1 IL_0044: castclass Match01/Test1/X11 IL_0049: stloc.3 - IL_004a: ldloc.0 - IL_004b: castclass Match01/Test1/X11 - IL_0050: stloc.s V_4 - IL_0052: ldloc.3 - IL_0053: ldfld int32 Match01/Test1/X11::item - IL_0058: ldloc.s V_4 - IL_005a: ldfld int32 Match01/Test1/X11::item - IL_005f: ceq - IL_0061: ret - - IL_0062: ldarg.0 - IL_0063: castclass Match01/Test1/X12 - IL_0068: stloc.s V_5 - IL_006a: ldloc.0 - IL_006b: castclass Match01/Test1/X12 - IL_0070: stloc.s V_6 - IL_0072: ldloc.s V_5 - IL_0074: ldfld int32 Match01/Test1/X12::item - IL_0079: ldloc.s V_6 - IL_007b: ldfld int32 Match01/Test1/X12::item - IL_0080: ceq - IL_0082: ret + IL_004a: ldloc.2 + IL_004b: ldfld int32 Match01/Test1/X11::item + IL_0050: ldloc.3 + IL_0051: ldfld int32 Match01/Test1/X11::item + IL_0056: ceq + IL_0058: ret - IL_0083: ldarg.0 - IL_0084: castclass Match01/Test1/X13 - IL_0089: stloc.s V_7 - IL_008b: ldloc.0 - IL_008c: castclass Match01/Test1/X13 - IL_0091: stloc.s V_8 - IL_0093: ldloc.s V_7 - IL_0095: ldfld int32 Match01/Test1/X13::item - IL_009a: ldloc.s V_8 - IL_009c: ldfld int32 Match01/Test1/X13::item - IL_00a1: ceq - IL_00a3: ret - - IL_00a4: ldarg.0 - IL_00a5: castclass Match01/Test1/X14 - IL_00aa: stloc.s V_9 - IL_00ac: ldloc.0 - IL_00ad: castclass Match01/Test1/X14 - IL_00b2: stloc.s V_10 - IL_00b4: ldloc.s V_9 - IL_00b6: ldfld int32 Match01/Test1/X14::item - IL_00bb: ldloc.s V_10 - IL_00bd: ldfld int32 Match01/Test1/X14::item - IL_00c2: ceq - IL_00c4: ret - - IL_00c5: ldc.i4.0 - IL_00c6: ret - - IL_00c7: ldc.i4.0 - IL_00c8: ret - - IL_00c9: ldarg.1 - IL_00ca: ldnull - IL_00cb: cgt.un - IL_00cd: ldc.i4.0 - IL_00ce: ceq - IL_00d0: ret + IL_0059: ldarg.0 + IL_005a: castclass Match01/Test1/X12 + IL_005f: stloc.s V_4 + IL_0061: ldarg.1 + IL_0062: castclass Match01/Test1/X12 + IL_0067: stloc.s V_5 + IL_0069: ldloc.s V_4 + IL_006b: ldfld int32 Match01/Test1/X12::item + IL_0070: ldloc.s V_5 + IL_0072: ldfld int32 Match01/Test1/X12::item + IL_0077: ceq + IL_0079: ret + + IL_007a: ldarg.0 + IL_007b: castclass Match01/Test1/X13 + IL_0080: stloc.s V_6 + IL_0082: ldarg.1 + IL_0083: castclass Match01/Test1/X13 + IL_0088: stloc.s V_7 + IL_008a: ldloc.s V_6 + IL_008c: ldfld int32 Match01/Test1/X13::item + IL_0091: ldloc.s V_7 + IL_0093: ldfld int32 Match01/Test1/X13::item + IL_0098: ceq + IL_009a: ret + + IL_009b: ldarg.0 + IL_009c: castclass Match01/Test1/X14 + IL_00a1: stloc.s V_8 + IL_00a3: ldarg.1 + IL_00a4: castclass Match01/Test1/X14 + IL_00a9: stloc.s V_9 + IL_00ab: ldloc.s V_8 + IL_00ad: ldfld int32 Match01/Test1/X14::item + IL_00b2: ldloc.s V_9 + IL_00b4: ldfld int32 Match01/Test1/X14::item + IL_00b9: ceq + IL_00bb: ret + + IL_00bc: ldc.i4.0 + IL_00bd: ret + + IL_00be: ldc.i4.0 + IL_00bf: ret + + IL_00c0: ldarg.1 + IL_00c1: ldnull + IL_00c2: cgt.un + IL_00c4: ldc.i4.0 + IL_00c5: ceq + IL_00c7: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class Match01/Test1 V_0) + IL_0000: ldarg.1 + IL_0001: isinst Match01/Test1 + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool Match01/Test1::Equals(class Match01/Test1, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class Match01/Test1 obj) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOn.fs.il.netcore.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOn.fs.il.netcore.release.bsl index 0674871e93e..7fa8bb17c28 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOn.fs.il.netcore.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/Match01_RealInternalSignatureOn.fs.il.netcore.release.bsl @@ -1179,114 +1179,135 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class Match01/Test1 obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 - .locals init (class Match01/Test1 V_0, + .locals init (int32 V_0, int32 V_1, - int32 V_2, + class Match01/Test1/X11 V_2, class Match01/Test1/X11 V_3, - class Match01/Test1/X11 V_4, + class Match01/Test1/X12 V_4, class Match01/Test1/X12 V_5, - class Match01/Test1/X12 V_6, + class Match01/Test1/X13 V_6, class Match01/Test1/X13 V_7, - class Match01/Test1/X13 V_8, - class Match01/Test1/X14 V_9, - class Match01/Test1/X14 V_10) + class Match01/Test1/X14 V_8, + class Match01/Test1/X14 V_9) IL_0000: ldarg.0 - IL_0001: brfalse IL_00c9 + IL_0001: brfalse IL_00c0 IL_0006: ldarg.1 - IL_0007: isinst Match01/Test1 - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse IL_00c7 + IL_0007: brfalse IL_00be - IL_0013: ldarg.0 + IL_000c: ldarg.0 + IL_000d: ldfld int32 Match01/Test1::_tag + IL_0012: stloc.0 + IL_0013: ldarg.1 IL_0014: ldfld int32 Match01/Test1::_tag IL_0019: stloc.1 IL_001a: ldloc.0 - IL_001b: ldfld int32 Match01/Test1::_tag - IL_0020: stloc.2 - IL_0021: ldloc.1 - IL_0022: ldloc.2 - IL_0023: bne.un IL_00c5 - - IL_0028: ldarg.0 - IL_0029: call instance int32 Match01/Test1::get_Tag() - IL_002e: switch ( - IL_0043, - IL_0062, - IL_0083, - IL_00a4) - IL_0043: ldarg.0 + IL_001b: ldloc.1 + IL_001c: bne.un IL_00bc + + IL_0021: ldarg.0 + IL_0022: call instance int32 Match01/Test1::get_Tag() + IL_0027: switch ( + IL_003c, + IL_0059, + IL_007a, + IL_009b) + IL_003c: ldarg.0 + IL_003d: castclass Match01/Test1/X11 + IL_0042: stloc.2 + IL_0043: ldarg.1 IL_0044: castclass Match01/Test1/X11 IL_0049: stloc.3 - IL_004a: ldloc.0 - IL_004b: castclass Match01/Test1/X11 - IL_0050: stloc.s V_4 - IL_0052: ldloc.3 - IL_0053: ldfld int32 Match01/Test1/X11::item - IL_0058: ldloc.s V_4 - IL_005a: ldfld int32 Match01/Test1/X11::item - IL_005f: ceq - IL_0061: ret - - IL_0062: ldarg.0 - IL_0063: castclass Match01/Test1/X12 - IL_0068: stloc.s V_5 - IL_006a: ldloc.0 - IL_006b: castclass Match01/Test1/X12 - IL_0070: stloc.s V_6 - IL_0072: ldloc.s V_5 - IL_0074: ldfld int32 Match01/Test1/X12::item - IL_0079: ldloc.s V_6 - IL_007b: ldfld int32 Match01/Test1/X12::item - IL_0080: ceq - IL_0082: ret + IL_004a: ldloc.2 + IL_004b: ldfld int32 Match01/Test1/X11::item + IL_0050: ldloc.3 + IL_0051: ldfld int32 Match01/Test1/X11::item + IL_0056: ceq + IL_0058: ret - IL_0083: ldarg.0 - IL_0084: castclass Match01/Test1/X13 - IL_0089: stloc.s V_7 - IL_008b: ldloc.0 - IL_008c: castclass Match01/Test1/X13 - IL_0091: stloc.s V_8 - IL_0093: ldloc.s V_7 - IL_0095: ldfld int32 Match01/Test1/X13::item - IL_009a: ldloc.s V_8 - IL_009c: ldfld int32 Match01/Test1/X13::item - IL_00a1: ceq - IL_00a3: ret - - IL_00a4: ldarg.0 - IL_00a5: castclass Match01/Test1/X14 - IL_00aa: stloc.s V_9 - IL_00ac: ldloc.0 - IL_00ad: castclass Match01/Test1/X14 - IL_00b2: stloc.s V_10 - IL_00b4: ldloc.s V_9 - IL_00b6: ldfld int32 Match01/Test1/X14::item - IL_00bb: ldloc.s V_10 - IL_00bd: ldfld int32 Match01/Test1/X14::item - IL_00c2: ceq - IL_00c4: ret - - IL_00c5: ldc.i4.0 - IL_00c6: ret - - IL_00c7: ldc.i4.0 - IL_00c8: ret - - IL_00c9: ldarg.1 - IL_00ca: ldnull - IL_00cb: cgt.un - IL_00cd: ldc.i4.0 - IL_00ce: ceq - IL_00d0: ret + IL_0059: ldarg.0 + IL_005a: castclass Match01/Test1/X12 + IL_005f: stloc.s V_4 + IL_0061: ldarg.1 + IL_0062: castclass Match01/Test1/X12 + IL_0067: stloc.s V_5 + IL_0069: ldloc.s V_4 + IL_006b: ldfld int32 Match01/Test1/X12::item + IL_0070: ldloc.s V_5 + IL_0072: ldfld int32 Match01/Test1/X12::item + IL_0077: ceq + IL_0079: ret + + IL_007a: ldarg.0 + IL_007b: castclass Match01/Test1/X13 + IL_0080: stloc.s V_6 + IL_0082: ldarg.1 + IL_0083: castclass Match01/Test1/X13 + IL_0088: stloc.s V_7 + IL_008a: ldloc.s V_6 + IL_008c: ldfld int32 Match01/Test1/X13::item + IL_0091: ldloc.s V_7 + IL_0093: ldfld int32 Match01/Test1/X13::item + IL_0098: ceq + IL_009a: ret + + IL_009b: ldarg.0 + IL_009c: castclass Match01/Test1/X14 + IL_00a1: stloc.s V_8 + IL_00a3: ldarg.1 + IL_00a4: castclass Match01/Test1/X14 + IL_00a9: stloc.s V_9 + IL_00ab: ldloc.s V_8 + IL_00ad: ldfld int32 Match01/Test1/X14::item + IL_00b2: ldloc.s V_9 + IL_00b4: ldfld int32 Match01/Test1/X14::item + IL_00b9: ceq + IL_00bb: ret + + IL_00bc: ldc.i4.0 + IL_00bd: ret + + IL_00be: ldc.i4.0 + IL_00bf: ret + + IL_00c0: ldarg.1 + IL_00c1: ldnull + IL_00c2: cgt.un + IL_00c4: ldc.i4.0 + IL_00c5: ceq + IL_00c7: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class Match01/Test1 V_0) + IL_0000: ldarg.1 + IL_0001: isinst Match01/Test1 + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool Match01/Test1::Equals(class Match01/Test1, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class Match01/Test1 obj) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/StructUnion01.fs.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/StructUnion01.fs.il.net472.bsl index 6733894d53f..c477b957959 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/StructUnion01.fs.il.net472.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/StructUnion01.fs.il.net472.bsl @@ -84,8 +84,7 @@ IL_0019: ret } - .method public hidebysig instance int32 - get_Item1() cil managed + .method public hidebysig instance int32 get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -96,8 +95,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Item2() cil managed + .method public hidebysig instance int32 get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -108,8 +106,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -121,8 +118,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -137,8 +133,7 @@ IL_001a: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -152,8 +147,7 @@ IL_001a: ret } - .method public hidebysig virtual final - instance int32 CompareTo(valuetype assembly/U obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(valuetype assembly/U obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -212,8 +206,7 @@ IL_004b: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -285,8 +278,7 @@ IL_0046: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -328,8 +320,7 @@ IL_0031: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -340,45 +331,59 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype assembly/U obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: ldarg.0 + IL_0003: ldfld int32 assembly/U::item1 + IL_0008: ldarga.s obj + IL_000a: ldfld int32 assembly/U::item1 + IL_000f: bne.un.s IL_0021 + + IL_0011: ldarg.0 + IL_0012: ldfld int32 assembly/U::item2 + IL_0017: ldarga.s obj + IL_0019: ldfld int32 assembly/U::item2 + IL_001e: ceq + IL_0020: ret + + IL_0021: ldc.i4.0 + IL_0022: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 + .maxstack 5 .locals init (valuetype assembly/U V_0) IL_0000: ldarg.1 IL_0001: isinst assembly/U - IL_0006: brfalse.s IL_0032 + IL_0006: brfalse.s IL_0018 IL_0008: ldarg.1 IL_0009: unbox.any assembly/U IL_000e: stloc.0 IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: ldfld int32 assembly/U::item1 - IL_0017: ldloca.s V_0 - IL_0019: ldfld int32 assembly/U::item1 - IL_001e: bne.un.s IL_0030 + IL_0010: ldloc.0 + IL_0011: ldarg.2 + IL_0012: call instance bool assembly/U::Equals(valuetype assembly/U, + class [runtime]System.Collections.IEqualityComparer) + IL_0017: ret - IL_0020: ldarg.0 - IL_0021: ldfld int32 assembly/U::item2 - IL_0026: ldloca.s V_0 - IL_0028: ldfld int32 assembly/U::item2 - IL_002d: ceq - IL_002f: ret - - IL_0030: ldc.i4.0 - IL_0031: ret - - IL_0032: ldc.i4.0 - IL_0033: ret + IL_0018: ldc.i4.0 + IL_0019: ret } - .method public hidebysig virtual final - instance bool Equals(valuetype assembly/U obj) cil managed + .method public hidebysig virtual final instance bool Equals(valuetype assembly/U obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -402,8 +407,7 @@ IL_0022: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/StructUnion01.fs.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/StructUnion01.fs.il.netcore.bsl index f9e8a68c5d8..cac209d4dee 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/StructUnion01.fs.il.netcore.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Inlining/StructUnion01.fs.il.netcore.bsl @@ -84,8 +84,7 @@ IL_0019: ret } - .method public hidebysig instance int32 - get_Item1() cil managed + .method public hidebysig instance int32 get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -96,8 +95,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Item2() cil managed + .method public hidebysig instance int32 get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -108,8 +106,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -121,8 +118,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -137,8 +133,7 @@ IL_001a: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -152,8 +147,7 @@ IL_001a: ret } - .method public hidebysig virtual final - instance int32 CompareTo(valuetype assembly/U obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(valuetype assembly/U obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -212,8 +206,7 @@ IL_004b: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -285,8 +278,7 @@ IL_0046: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -328,8 +320,7 @@ IL_0031: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -340,45 +331,59 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype assembly/U obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: ldarg.0 + IL_0003: ldfld int32 assembly/U::item1 + IL_0008: ldarga.s obj + IL_000a: ldfld int32 assembly/U::item1 + IL_000f: bne.un.s IL_0021 + + IL_0011: ldarg.0 + IL_0012: ldfld int32 assembly/U::item2 + IL_0017: ldarga.s obj + IL_0019: ldfld int32 assembly/U::item2 + IL_001e: ceq + IL_0020: ret + + IL_0021: ldc.i4.0 + IL_0022: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 + .maxstack 5 .locals init (valuetype assembly/U V_0) IL_0000: ldarg.1 IL_0001: isinst assembly/U - IL_0006: brfalse.s IL_0032 + IL_0006: brfalse.s IL_0018 IL_0008: ldarg.1 IL_0009: unbox.any assembly/U IL_000e: stloc.0 IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: ldfld int32 assembly/U::item1 - IL_0017: ldloca.s V_0 - IL_0019: ldfld int32 assembly/U::item1 - IL_001e: bne.un.s IL_0030 + IL_0010: ldloc.0 + IL_0011: ldarg.2 + IL_0012: call instance bool assembly/U::Equals(valuetype assembly/U, + class [runtime]System.Collections.IEqualityComparer) + IL_0017: ret - IL_0020: ldarg.0 - IL_0021: ldfld int32 assembly/U::item2 - IL_0026: ldloca.s V_0 - IL_0028: ldfld int32 assembly/U::item2 - IL_002d: ceq - IL_002f: ret - - IL_0030: ldc.i4.0 - IL_0031: ret - - IL_0032: ldc.i4.0 - IL_0033: ret + IL_0018: ldc.i4.0 + IL_0019: ret } - .method public hidebysig virtual final - instance bool Equals(valuetype assembly/U obj) cil managed + .method public hidebysig virtual final instance bool Equals(valuetype assembly/U obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -402,8 +407,7 @@ IL_0022: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/AnonRecd.fs.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/AnonRecd.fs.il.net472.bsl index 51ecb51bb67..4a8946abbed 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/AnonRecd.fs.il.net472.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/AnonRecd.fs.il.net472.bsl @@ -116,8 +116,7 @@ IL_0014: ret } - .method public hidebysig specialname instance !'j__TPar' - get_A() cil managed + .method public hidebysig specialname instance !'j__TPar' get_A() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -128,8 +127,7 @@ IL_0006: ret } - .method public hidebysig specialname instance !'j__TPar' - get_B() cil managed + .method public hidebysig specialname instance !'j__TPar' get_B() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -140,8 +138,7 @@ IL_0006: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -154,8 +151,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -214,8 +210,7 @@ IL_004a: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -298,8 +293,7 @@ IL_0055: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -349,8 +343,7 @@ IL_003e: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -362,63 +355,84 @@ IL_000d: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 5 - .locals init (class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> V_0, - class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> V_1) + .locals init (class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> V_0) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003c + IL_0001: brfalse.s IL_0035 IL_0003: ldarg.1 - IL_0004: isinst class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_003a - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.2 - IL_0010: ldarg.0 - IL_0011: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ - IL_0016: ldloc.1 - IL_0017: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ - IL_001c: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericEqualityWithComparerj__TPar'>(class [runtime]System.Collections.IEqualityComparer, + IL_0004: brfalse.s IL_0033 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.2 + IL_0009: ldarg.0 + IL_000a: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ + IL_000f: ldloc.0 + IL_0010: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ + IL_0015: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericEqualityWithComparerj__TPar'>(class [runtime]System.Collections.IEqualityComparer, !!0, !!0) - IL_0021: brfalse.s IL_0038 - - IL_0023: ldarg.2 - IL_0024: ldarg.0 - IL_0025: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ - IL_002a: ldloc.1 - IL_002b: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ - IL_0030: tail. - IL_0032: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericEqualityWithComparerj__TPar'>(class [runtime]System.Collections.IEqualityComparer, + IL_001a: brfalse.s IL_0031 + + IL_001c: ldarg.2 + IL_001d: ldarg.0 + IL_001e: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ + IL_0023: ldloc.0 + IL_0024: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ + IL_0029: tail. + IL_002b: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericEqualityWithComparerj__TPar'>(class [runtime]System.Collections.IEqualityComparer, !!0, !!0) - IL_0037: ret + IL_0030: ret - IL_0038: ldc.i4.0 - IL_0039: ret + IL_0031: ldc.i4.0 + IL_0032: ret - IL_003a: ldc.i4.0 - IL_003b: ret + IL_0033: ldc.i4.0 + IL_0034: ret - IL_003c: ldarg.1 - IL_003d: ldnull - IL_003e: cgt.un - IL_0040: ldc.i4.0 - IL_0041: ceq - IL_0043: ret + IL_0035: ldarg.1 + IL_0036: ldnull + IL_0037: cgt.un + IL_0039: ldc.i4.0 + IL_003a: ceq + IL_003c: ret } .method public hidebysig virtual final - instance bool Equals(class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> V_0) + IL_0000: ldarg.1 + IL_0001: isinst class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0015 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: tail. + IL_000f: callvirt instance bool class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::Equals(class '<>f__AnonymousType1912756633`2', + class [runtime]System.Collections.IEqualityComparer) + IL_0014: ret + + IL_0015: ldc.i4.0 + IL_0016: ret + } + + .method public hidebysig virtual final instance bool Equals(class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -460,8 +474,7 @@ IL_0038: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -551,8 +564,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -563,8 +575,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/AnonRecd.fs.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/AnonRecd.fs.il.netcore.bsl index 1785f3c854d..9d2348f0763 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/AnonRecd.fs.il.netcore.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/AnonRecd.fs.il.netcore.bsl @@ -116,8 +116,7 @@ IL_0014: ret } - .method public hidebysig specialname instance !'j__TPar' - get_A() cil managed + .method public hidebysig specialname instance !'j__TPar' get_A() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -128,8 +127,7 @@ IL_0006: ret } - .method public hidebysig specialname instance !'j__TPar' - get_B() cil managed + .method public hidebysig specialname instance !'j__TPar' get_B() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -140,8 +138,7 @@ IL_0006: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -154,8 +151,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -214,8 +210,7 @@ IL_004a: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -298,8 +293,7 @@ IL_0055: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -349,8 +343,7 @@ IL_003e: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -362,63 +355,84 @@ IL_000d: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 5 - .locals init (class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> V_0, - class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> V_1) + .locals init (class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> V_0) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003c + IL_0001: brfalse.s IL_0035 IL_0003: ldarg.1 - IL_0004: isinst class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_003a - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.2 - IL_0010: ldarg.0 - IL_0011: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ - IL_0016: ldloc.1 - IL_0017: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ - IL_001c: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericEqualityWithComparerj__TPar'>(class [runtime]System.Collections.IEqualityComparer, + IL_0004: brfalse.s IL_0033 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.2 + IL_0009: ldarg.0 + IL_000a: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ + IL_000f: ldloc.0 + IL_0010: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ + IL_0015: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericEqualityWithComparerj__TPar'>(class [runtime]System.Collections.IEqualityComparer, !!0, !!0) - IL_0021: brfalse.s IL_0038 - - IL_0023: ldarg.2 - IL_0024: ldarg.0 - IL_0025: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ - IL_002a: ldloc.1 - IL_002b: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ - IL_0030: tail. - IL_0032: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericEqualityWithComparerj__TPar'>(class [runtime]System.Collections.IEqualityComparer, + IL_001a: brfalse.s IL_0031 + + IL_001c: ldarg.2 + IL_001d: ldarg.0 + IL_001e: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ + IL_0023: ldloc.0 + IL_0024: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ + IL_0029: tail. + IL_002b: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericEqualityWithComparerj__TPar'>(class [runtime]System.Collections.IEqualityComparer, !!0, !!0) - IL_0037: ret + IL_0030: ret - IL_0038: ldc.i4.0 - IL_0039: ret + IL_0031: ldc.i4.0 + IL_0032: ret - IL_003a: ldc.i4.0 - IL_003b: ret + IL_0033: ldc.i4.0 + IL_0034: ret - IL_003c: ldarg.1 - IL_003d: ldnull - IL_003e: cgt.un - IL_0040: ldc.i4.0 - IL_0041: ceq - IL_0043: ret + IL_0035: ldarg.1 + IL_0036: ldnull + IL_0037: cgt.un + IL_0039: ldc.i4.0 + IL_003a: ceq + IL_003c: ret } .method public hidebysig virtual final - instance bool Equals(class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> V_0) + IL_0000: ldarg.1 + IL_0001: isinst class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0015 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: tail. + IL_000f: callvirt instance bool class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::Equals(class '<>f__AnonymousType1912756633`2', + class [runtime]System.Collections.IEqualityComparer) + IL_0014: ret + + IL_0015: ldc.i4.0 + IL_0016: ret + } + + .method public hidebysig virtual final instance bool Equals(class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -460,8 +474,7 @@ IL_0038: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/EqualsOnUnions01.fs.il.net472.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/EqualsOnUnions01.fs.il.net472.debug.bsl index c6d4d961914..0b1614c9561 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/EqualsOnUnions01.fs.il.net472.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/EqualsOnUnions01.fs.il.net472.debug.bsl @@ -69,8 +69,7 @@ 70 65 50 72 6F 78 79 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerDisplayAttribute::.ctor(string) = ( 01 00 15 7B 5F 5F 44 65 62 75 67 44 69 73 70 6C 61 79 28 29 2C 6E 71 7D 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 12 45 71 75 61 6C 73 4F 6E 55 @@ -98,8 +97,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 12 45 71 75 61 6C 73 4F 6E 55 @@ -116,8 +114,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -146,8 +143,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public specialname rtspecialname - instance void .ctor(class assembly/U/_A obj) cil managed + .method public specialname rtspecialname instance void .ctor(class assembly/U/_A obj) cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 12 45 71 75 61 6C 73 4F 6E 55 @@ -173,8 +169,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public specialname rtspecialname - instance void .ctor(class assembly/U/B obj) cil managed + .method public specialname rtspecialname instance void .ctor(class assembly/U/B obj) cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 12 45 71 75 61 6C 73 4F 6E 55 @@ -191,8 +186,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -219,8 +213,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 8 @@ -229,8 +222,7 @@ IL_000a: ret } - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 E0 07 00 00 12 45 71 75 61 6C 73 4F 6E 55 @@ -244,8 +236,7 @@ IL_0006: ret } - .method public static class assembly/U - get_A() cil managed + .method public static class assembly/U get_A() cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -255,8 +246,7 @@ IL_0005: ret } - .method public hidebysig instance bool - get_IsA() cil managed + .method public hidebysig instance bool get_IsA() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -269,8 +259,7 @@ IL_0009: ret } - .method public static class assembly/U - NewB(int32 item) cil managed + .method public static class assembly/U NewB(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 01 00 00 00 00 00 ) @@ -281,8 +270,7 @@ IL_0006: ret } - .method public hidebysig instance bool - get_IsB() cil managed + .method public hidebysig instance bool get_IsB() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -295,8 +283,7 @@ IL_0009: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -313,8 +300,7 @@ IL_000c: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -328,8 +314,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -342,8 +327,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/U obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/U obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -446,8 +430,7 @@ IL_0087: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -570,8 +553,7 @@ IL_0096: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -634,8 +616,7 @@ IL_0046: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -646,106 +627,126 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/U obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/U V_0, - class assembly/U V_1, - int32 V_2, - class assembly/U V_3, - int32 V_4, - class assembly/U V_5, + int32 V_1, + class assembly/U V_2, + int32 V_3, + class assembly/U V_4, + class assembly/U/B V_5, class assembly/U/B V_6, - class assembly/U/B V_7, - class [runtime]System.Collections.IEqualityComparer V_8, + class [runtime]System.Collections.IEqualityComparer V_7, + int32 V_8, int32 V_9, - int32 V_10, - class [runtime]System.Collections.IEqualityComparer V_11) + class [runtime]System.Collections.IEqualityComparer V_10) IL_0000: ldarg.0 - IL_0001: brfalse IL_0076 + IL_0001: brfalse.s IL_006a + + IL_0003: ldarg.1 + IL_0004: brfalse.s IL_0068 IL_0006: ldarg.1 - IL_0007: isinst assembly/U - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_0074 - - IL_0010: ldloc.0 - IL_0011: stloc.1 - IL_0012: ldarg.0 - IL_0013: stloc.3 - IL_0014: ldloc.3 - IL_0015: isinst assembly/U/B - IL_001a: brfalse.s IL_001f - - IL_001c: ldc.i4.1 - IL_001d: br.s IL_0020 - - IL_001f: ldc.i4.0 - IL_0020: stloc.2 - IL_0021: ldloc.1 - IL_0022: stloc.s V_5 - IL_0024: ldloc.s V_5 - IL_0026: isinst assembly/U/B - IL_002b: brfalse.s IL_0030 - - IL_002d: ldc.i4.1 - IL_002e: br.s IL_0031 - - IL_0030: ldc.i4.0 - IL_0031: stloc.s V_4 - IL_0033: ldloc.2 - IL_0034: ldloc.s V_4 - IL_0036: bne.un.s IL_0072 - - IL_0038: ldarg.0 - IL_0039: isinst assembly/U/B - IL_003e: brfalse.s IL_0070 - - IL_0040: ldarg.0 - IL_0041: castclass assembly/U/B - IL_0046: stloc.s V_6 - IL_0048: ldloc.1 - IL_0049: castclass assembly/U/B - IL_004e: stloc.s V_7 - IL_0050: ldarg.2 - IL_0051: stloc.s V_8 - IL_0053: ldloc.s V_6 - IL_0055: ldfld int32 assembly/U/B::item - IL_005a: stloc.s V_9 - IL_005c: ldloc.s V_7 - IL_005e: ldfld int32 assembly/U/B::item - IL_0063: stloc.s V_10 - IL_0065: ldloc.s V_8 - IL_0067: stloc.s V_11 - IL_0069: ldloc.s V_9 - IL_006b: ldloc.s V_10 - IL_006d: ceq - IL_006f: ret + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: stloc.2 + IL_000a: ldloc.2 + IL_000b: isinst assembly/U/B + IL_0010: brfalse.s IL_0015 + + IL_0012: ldc.i4.1 + IL_0013: br.s IL_0016 + + IL_0015: ldc.i4.0 + IL_0016: stloc.1 + IL_0017: ldloc.0 + IL_0018: stloc.s V_4 + IL_001a: ldloc.s V_4 + IL_001c: isinst assembly/U/B + IL_0021: brfalse.s IL_0026 + + IL_0023: ldc.i4.1 + IL_0024: br.s IL_0027 + + IL_0026: ldc.i4.0 + IL_0027: stloc.3 + IL_0028: ldloc.1 + IL_0029: ldloc.3 + IL_002a: bne.un.s IL_0066 + + IL_002c: ldarg.0 + IL_002d: isinst assembly/U/B + IL_0032: brfalse.s IL_0064 - IL_0070: ldc.i4.1 + IL_0034: ldarg.0 + IL_0035: castclass assembly/U/B + IL_003a: stloc.s V_5 + IL_003c: ldloc.0 + IL_003d: castclass assembly/U/B + IL_0042: stloc.s V_6 + IL_0044: ldarg.2 + IL_0045: stloc.s V_7 + IL_0047: ldloc.s V_5 + IL_0049: ldfld int32 assembly/U/B::item + IL_004e: stloc.s V_8 + IL_0050: ldloc.s V_6 + IL_0052: ldfld int32 assembly/U/B::item + IL_0057: stloc.s V_9 + IL_0059: ldloc.s V_7 + IL_005b: stloc.s V_10 + IL_005d: ldloc.s V_8 + IL_005f: ldloc.s V_9 + IL_0061: ceq + IL_0063: ret + + IL_0064: ldc.i4.1 + IL_0065: ret + + IL_0066: ldc.i4.0 + IL_0067: ret + + IL_0068: ldc.i4.0 + IL_0069: ret + + IL_006a: ldarg.1 + IL_006b: ldnull + IL_006c: cgt.un + IL_006e: ldc.i4.0 + IL_006f: ceq IL_0071: ret + } - IL_0072: ldc.i4.0 - IL_0073: ret + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/U V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/U + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 - IL_0074: ldc.i4.0 - IL_0075: ret + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/U::Equals(class assembly/U, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret - IL_0076: ldarg.1 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: ldc.i4.0 - IL_007b: ceq - IL_007d: ret + IL_0013: ldc.i4.0 + IL_0014: ret } - .method public hidebysig virtual final - instance bool Equals(class assembly/U obj) cil managed + .method public hidebysig virtual final instance bool Equals(class assembly/U obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -822,8 +823,7 @@ IL_005e: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -943,8 +943,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -955,8 +954,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/EqualsOnUnions01.fs.il.net472.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/EqualsOnUnions01.fs.il.net472.release.bsl index 59329f4b4ac..1071ede0a81 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/EqualsOnUnions01.fs.il.net472.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/EqualsOnUnions01.fs.il.net472.release.bsl @@ -69,8 +69,7 @@ 70 65 50 72 6F 78 79 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerDisplayAttribute::.ctor(string) = ( 01 00 15 7B 5F 5F 44 65 62 75 67 44 69 73 70 6C 61 79 28 29 2C 6E 71 7D 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 12 45 71 75 61 6C 73 4F 6E 55 @@ -98,8 +97,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 12 45 71 75 61 6C 73 4F 6E 55 @@ -116,8 +114,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -146,8 +143,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public specialname rtspecialname - instance void .ctor(class assembly/U/_A obj) cil managed + .method public specialname rtspecialname instance void .ctor(class assembly/U/_A obj) cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 12 45 71 75 61 6C 73 4F 6E 55 @@ -173,8 +169,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public specialname rtspecialname - instance void .ctor(class assembly/U/B obj) cil managed + .method public specialname rtspecialname instance void .ctor(class assembly/U/B obj) cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 12 45 71 75 61 6C 73 4F 6E 55 @@ -191,8 +186,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -219,8 +213,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 8 @@ -229,8 +222,7 @@ IL_000a: ret } - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 E0 07 00 00 12 45 71 75 61 6C 73 4F 6E 55 @@ -244,8 +236,7 @@ IL_0006: ret } - .method public static class assembly/U - get_A() cil managed + .method public static class assembly/U get_A() cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -255,8 +246,7 @@ IL_0005: ret } - .method public hidebysig instance bool - get_IsA() cil managed + .method public hidebysig instance bool get_IsA() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -269,8 +259,7 @@ IL_0009: ret } - .method public static class assembly/U - NewB(int32 item) cil managed + .method public static class assembly/U NewB(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 01 00 00 00 00 00 ) @@ -281,8 +270,7 @@ IL_0006: ret } - .method public hidebysig instance bool - get_IsB() cil managed + .method public hidebysig instance bool get_IsB() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -295,8 +283,7 @@ IL_0009: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -313,8 +300,7 @@ IL_000c: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -328,8 +314,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -342,8 +327,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/U obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/U obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -437,8 +421,7 @@ IL_0078: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -552,8 +535,7 @@ IL_0087: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -610,8 +592,7 @@ IL_003f: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -622,97 +603,117 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/U obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/U V_0, - class assembly/U V_1, - int32 V_2, - class assembly/U V_3, - int32 V_4, - class assembly/U V_5, + int32 V_1, + class assembly/U V_2, + int32 V_3, + class assembly/U V_4, + class assembly/U/B V_5, class assembly/U/B V_6, - class assembly/U/B V_7, - class [runtime]System.Collections.IEqualityComparer V_8) + class [runtime]System.Collections.IEqualityComparer V_7) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0067 + IL_0001: brfalse.s IL_005e IL_0003: ldarg.1 - IL_0004: isinst assembly/U - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0065 + IL_0004: brfalse.s IL_005c - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: stloc.3 - IL_0011: ldloc.3 - IL_0012: isinst assembly/U/B - IL_0017: brfalse.s IL_001c - - IL_0019: ldc.i4.1 - IL_001a: br.s IL_001d - - IL_001c: ldc.i4.0 - IL_001d: stloc.2 - IL_001e: ldloc.1 - IL_001f: stloc.s V_5 - IL_0021: ldloc.s V_5 - IL_0023: isinst assembly/U/B - IL_0028: brfalse.s IL_002d - - IL_002a: ldc.i4.1 - IL_002b: br.s IL_002e - - IL_002d: ldc.i4.0 - IL_002e: stloc.s V_4 - IL_0030: ldloc.2 - IL_0031: ldloc.s V_4 - IL_0033: bne.un.s IL_0063 - - IL_0035: ldarg.0 - IL_0036: isinst assembly/U/B - IL_003b: brfalse.s IL_0061 - - IL_003d: ldarg.0 - IL_003e: castclass assembly/U/B - IL_0043: stloc.s V_6 - IL_0045: ldloc.1 - IL_0046: castclass assembly/U/B - IL_004b: stloc.s V_7 - IL_004d: ldarg.2 - IL_004e: stloc.s V_8 - IL_0050: ldloc.s V_6 - IL_0052: ldfld int32 assembly/U/B::item - IL_0057: ldloc.s V_7 - IL_0059: ldfld int32 assembly/U/B::item - IL_005e: ceq - IL_0060: ret - - IL_0061: ldc.i4.1 - IL_0062: ret - - IL_0063: ldc.i4.0 - IL_0064: ret - - IL_0065: ldc.i4.0 - IL_0066: ret - - IL_0067: ldarg.1 - IL_0068: ldnull - IL_0069: cgt.un - IL_006b: ldc.i4.0 - IL_006c: ceq - IL_006e: ret + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: stloc.2 + IL_000a: ldloc.2 + IL_000b: isinst assembly/U/B + IL_0010: brfalse.s IL_0015 + + IL_0012: ldc.i4.1 + IL_0013: br.s IL_0016 + + IL_0015: ldc.i4.0 + IL_0016: stloc.1 + IL_0017: ldloc.0 + IL_0018: stloc.s V_4 + IL_001a: ldloc.s V_4 + IL_001c: isinst assembly/U/B + IL_0021: brfalse.s IL_0026 + + IL_0023: ldc.i4.1 + IL_0024: br.s IL_0027 + + IL_0026: ldc.i4.0 + IL_0027: stloc.3 + IL_0028: ldloc.1 + IL_0029: ldloc.3 + IL_002a: bne.un.s IL_005a + + IL_002c: ldarg.0 + IL_002d: isinst assembly/U/B + IL_0032: brfalse.s IL_0058 + + IL_0034: ldarg.0 + IL_0035: castclass assembly/U/B + IL_003a: stloc.s V_5 + IL_003c: ldloc.0 + IL_003d: castclass assembly/U/B + IL_0042: stloc.s V_6 + IL_0044: ldarg.2 + IL_0045: stloc.s V_7 + IL_0047: ldloc.s V_5 + IL_0049: ldfld int32 assembly/U/B::item + IL_004e: ldloc.s V_6 + IL_0050: ldfld int32 assembly/U/B::item + IL_0055: ceq + IL_0057: ret + + IL_0058: ldc.i4.1 + IL_0059: ret + + IL_005a: ldc.i4.0 + IL_005b: ret + + IL_005c: ldc.i4.0 + IL_005d: ret + + IL_005e: ldarg.1 + IL_005f: ldnull + IL_0060: cgt.un + IL_0062: ldc.i4.0 + IL_0063: ceq + IL_0065: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/U obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/U V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/U + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/U::Equals(class assembly/U, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/U obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -789,8 +790,7 @@ IL_005e: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -910,8 +910,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -922,8 +921,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/EqualsOnUnions01.fs.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/EqualsOnUnions01.fs.il.netcore.debug.bsl index 249b448b37b..a92160a832e 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/EqualsOnUnions01.fs.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/EqualsOnUnions01.fs.il.netcore.debug.bsl @@ -69,8 +69,7 @@ 70 65 50 72 6F 78 79 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerDisplayAttribute::.ctor(string) = ( 01 00 15 7B 5F 5F 44 65 62 75 67 44 69 73 70 6C 61 79 28 29 2C 6E 71 7D 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 12 45 71 75 61 6C 73 4F 6E 55 @@ -98,8 +97,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 12 45 71 75 61 6C 73 4F 6E 55 @@ -116,8 +114,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -146,8 +143,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public specialname rtspecialname - instance void .ctor(class assembly/U/_A obj) cil managed + .method public specialname rtspecialname instance void .ctor(class assembly/U/_A obj) cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 12 45 71 75 61 6C 73 4F 6E 55 @@ -173,8 +169,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public specialname rtspecialname - instance void .ctor(class assembly/U/B obj) cil managed + .method public specialname rtspecialname instance void .ctor(class assembly/U/B obj) cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 12 45 71 75 61 6C 73 4F 6E 55 @@ -191,8 +186,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -219,8 +213,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 8 @@ -229,8 +222,7 @@ IL_000a: ret } - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 E0 07 00 00 12 45 71 75 61 6C 73 4F 6E 55 @@ -244,8 +236,7 @@ IL_0006: ret } - .method public static class assembly/U - get_A() cil managed + .method public static class assembly/U get_A() cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -255,8 +246,7 @@ IL_0005: ret } - .method public hidebysig instance bool - get_IsA() cil managed + .method public hidebysig instance bool get_IsA() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -269,8 +259,7 @@ IL_0009: ret } - .method public static class assembly/U - NewB(int32 item) cil managed + .method public static class assembly/U NewB(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 01 00 00 00 00 00 ) @@ -281,8 +270,7 @@ IL_0006: ret } - .method public hidebysig instance bool - get_IsB() cil managed + .method public hidebysig instance bool get_IsB() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -295,8 +283,7 @@ IL_0009: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -313,8 +300,7 @@ IL_000c: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -328,8 +314,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -342,8 +327,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/U obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/U obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -446,8 +430,7 @@ IL_0087: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -570,8 +553,7 @@ IL_0096: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -634,8 +616,7 @@ IL_0046: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -646,106 +627,126 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/U obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/U V_0, - class assembly/U V_1, - int32 V_2, - class assembly/U V_3, - int32 V_4, - class assembly/U V_5, + int32 V_1, + class assembly/U V_2, + int32 V_3, + class assembly/U V_4, + class assembly/U/B V_5, class assembly/U/B V_6, - class assembly/U/B V_7, - class [runtime]System.Collections.IEqualityComparer V_8, + class [runtime]System.Collections.IEqualityComparer V_7, + int32 V_8, int32 V_9, - int32 V_10, - class [runtime]System.Collections.IEqualityComparer V_11) + class [runtime]System.Collections.IEqualityComparer V_10) IL_0000: ldarg.0 - IL_0001: brfalse IL_0076 + IL_0001: brfalse.s IL_006a + + IL_0003: ldarg.1 + IL_0004: brfalse.s IL_0068 IL_0006: ldarg.1 - IL_0007: isinst assembly/U - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_0074 - - IL_0010: ldloc.0 - IL_0011: stloc.1 - IL_0012: ldarg.0 - IL_0013: stloc.3 - IL_0014: ldloc.3 - IL_0015: isinst assembly/U/B - IL_001a: brfalse.s IL_001f - - IL_001c: ldc.i4.1 - IL_001d: br.s IL_0020 - - IL_001f: ldc.i4.0 - IL_0020: stloc.2 - IL_0021: ldloc.1 - IL_0022: stloc.s V_5 - IL_0024: ldloc.s V_5 - IL_0026: isinst assembly/U/B - IL_002b: brfalse.s IL_0030 - - IL_002d: ldc.i4.1 - IL_002e: br.s IL_0031 - - IL_0030: ldc.i4.0 - IL_0031: stloc.s V_4 - IL_0033: ldloc.2 - IL_0034: ldloc.s V_4 - IL_0036: bne.un.s IL_0072 - - IL_0038: ldarg.0 - IL_0039: isinst assembly/U/B - IL_003e: brfalse.s IL_0070 - - IL_0040: ldarg.0 - IL_0041: castclass assembly/U/B - IL_0046: stloc.s V_6 - IL_0048: ldloc.1 - IL_0049: castclass assembly/U/B - IL_004e: stloc.s V_7 - IL_0050: ldarg.2 - IL_0051: stloc.s V_8 - IL_0053: ldloc.s V_6 - IL_0055: ldfld int32 assembly/U/B::item - IL_005a: stloc.s V_9 - IL_005c: ldloc.s V_7 - IL_005e: ldfld int32 assembly/U/B::item - IL_0063: stloc.s V_10 - IL_0065: ldloc.s V_8 - IL_0067: stloc.s V_11 - IL_0069: ldloc.s V_9 - IL_006b: ldloc.s V_10 - IL_006d: ceq - IL_006f: ret + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: stloc.2 + IL_000a: ldloc.2 + IL_000b: isinst assembly/U/B + IL_0010: brfalse.s IL_0015 + + IL_0012: ldc.i4.1 + IL_0013: br.s IL_0016 + + IL_0015: ldc.i4.0 + IL_0016: stloc.1 + IL_0017: ldloc.0 + IL_0018: stloc.s V_4 + IL_001a: ldloc.s V_4 + IL_001c: isinst assembly/U/B + IL_0021: brfalse.s IL_0026 + + IL_0023: ldc.i4.1 + IL_0024: br.s IL_0027 + + IL_0026: ldc.i4.0 + IL_0027: stloc.3 + IL_0028: ldloc.1 + IL_0029: ldloc.3 + IL_002a: bne.un.s IL_0066 + + IL_002c: ldarg.0 + IL_002d: isinst assembly/U/B + IL_0032: brfalse.s IL_0064 - IL_0070: ldc.i4.1 + IL_0034: ldarg.0 + IL_0035: castclass assembly/U/B + IL_003a: stloc.s V_5 + IL_003c: ldloc.0 + IL_003d: castclass assembly/U/B + IL_0042: stloc.s V_6 + IL_0044: ldarg.2 + IL_0045: stloc.s V_7 + IL_0047: ldloc.s V_5 + IL_0049: ldfld int32 assembly/U/B::item + IL_004e: stloc.s V_8 + IL_0050: ldloc.s V_6 + IL_0052: ldfld int32 assembly/U/B::item + IL_0057: stloc.s V_9 + IL_0059: ldloc.s V_7 + IL_005b: stloc.s V_10 + IL_005d: ldloc.s V_8 + IL_005f: ldloc.s V_9 + IL_0061: ceq + IL_0063: ret + + IL_0064: ldc.i4.1 + IL_0065: ret + + IL_0066: ldc.i4.0 + IL_0067: ret + + IL_0068: ldc.i4.0 + IL_0069: ret + + IL_006a: ldarg.1 + IL_006b: ldnull + IL_006c: cgt.un + IL_006e: ldc.i4.0 + IL_006f: ceq IL_0071: ret + } - IL_0072: ldc.i4.0 - IL_0073: ret + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/U V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/U + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 - IL_0074: ldc.i4.0 - IL_0075: ret + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/U::Equals(class assembly/U, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret - IL_0076: ldarg.1 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: ldc.i4.0 - IL_007b: ceq - IL_007d: ret + IL_0013: ldc.i4.0 + IL_0014: ret } - .method public hidebysig virtual final - instance bool Equals(class assembly/U obj) cil managed + .method public hidebysig virtual final instance bool Equals(class assembly/U obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -822,8 +823,7 @@ IL_005e: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/EqualsOnUnions01.fs.il.netcore.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/EqualsOnUnions01.fs.il.netcore.release.bsl index 28bb5ef0fdb..0a6385cd44b 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/EqualsOnUnions01.fs.il.netcore.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/EqualsOnUnions01.fs.il.netcore.release.bsl @@ -69,8 +69,7 @@ 70 65 50 72 6F 78 79 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerDisplayAttribute::.ctor(string) = ( 01 00 15 7B 5F 5F 44 65 62 75 67 44 69 73 70 6C 61 79 28 29 2C 6E 71 7D 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 12 45 71 75 61 6C 73 4F 6E 55 @@ -98,8 +97,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 12 45 71 75 61 6C 73 4F 6E 55 @@ -116,8 +114,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -146,8 +143,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public specialname rtspecialname - instance void .ctor(class assembly/U/_A obj) cil managed + .method public specialname rtspecialname instance void .ctor(class assembly/U/_A obj) cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 12 45 71 75 61 6C 73 4F 6E 55 @@ -173,8 +169,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public specialname rtspecialname - instance void .ctor(class assembly/U/B obj) cil managed + .method public specialname rtspecialname instance void .ctor(class assembly/U/B obj) cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 12 45 71 75 61 6C 73 4F 6E 55 @@ -191,8 +186,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -219,8 +213,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 8 @@ -229,8 +222,7 @@ IL_000a: ret } - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 E0 07 00 00 12 45 71 75 61 6C 73 4F 6E 55 @@ -244,8 +236,7 @@ IL_0006: ret } - .method public static class assembly/U - get_A() cil managed + .method public static class assembly/U get_A() cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -255,8 +246,7 @@ IL_0005: ret } - .method public hidebysig instance bool - get_IsA() cil managed + .method public hidebysig instance bool get_IsA() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -269,8 +259,7 @@ IL_0009: ret } - .method public static class assembly/U - NewB(int32 item) cil managed + .method public static class assembly/U NewB(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 01 00 00 00 00 00 ) @@ -281,8 +270,7 @@ IL_0006: ret } - .method public hidebysig instance bool - get_IsB() cil managed + .method public hidebysig instance bool get_IsB() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -295,8 +283,7 @@ IL_0009: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -313,8 +300,7 @@ IL_000c: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -328,8 +314,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -342,8 +327,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/U obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/U obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -437,8 +421,7 @@ IL_0078: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -552,8 +535,7 @@ IL_0087: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -610,8 +592,7 @@ IL_003f: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -622,97 +603,117 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/U obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/U V_0, - class assembly/U V_1, - int32 V_2, - class assembly/U V_3, - int32 V_4, - class assembly/U V_5, + int32 V_1, + class assembly/U V_2, + int32 V_3, + class assembly/U V_4, + class assembly/U/B V_5, class assembly/U/B V_6, - class assembly/U/B V_7, - class [runtime]System.Collections.IEqualityComparer V_8) + class [runtime]System.Collections.IEqualityComparer V_7) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0067 + IL_0001: brfalse.s IL_005e IL_0003: ldarg.1 - IL_0004: isinst assembly/U - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0065 + IL_0004: brfalse.s IL_005c - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: stloc.3 - IL_0011: ldloc.3 - IL_0012: isinst assembly/U/B - IL_0017: brfalse.s IL_001c - - IL_0019: ldc.i4.1 - IL_001a: br.s IL_001d - - IL_001c: ldc.i4.0 - IL_001d: stloc.2 - IL_001e: ldloc.1 - IL_001f: stloc.s V_5 - IL_0021: ldloc.s V_5 - IL_0023: isinst assembly/U/B - IL_0028: brfalse.s IL_002d - - IL_002a: ldc.i4.1 - IL_002b: br.s IL_002e - - IL_002d: ldc.i4.0 - IL_002e: stloc.s V_4 - IL_0030: ldloc.2 - IL_0031: ldloc.s V_4 - IL_0033: bne.un.s IL_0063 - - IL_0035: ldarg.0 - IL_0036: isinst assembly/U/B - IL_003b: brfalse.s IL_0061 - - IL_003d: ldarg.0 - IL_003e: castclass assembly/U/B - IL_0043: stloc.s V_6 - IL_0045: ldloc.1 - IL_0046: castclass assembly/U/B - IL_004b: stloc.s V_7 - IL_004d: ldarg.2 - IL_004e: stloc.s V_8 - IL_0050: ldloc.s V_6 - IL_0052: ldfld int32 assembly/U/B::item - IL_0057: ldloc.s V_7 - IL_0059: ldfld int32 assembly/U/B::item - IL_005e: ceq - IL_0060: ret - - IL_0061: ldc.i4.1 - IL_0062: ret - - IL_0063: ldc.i4.0 - IL_0064: ret - - IL_0065: ldc.i4.0 - IL_0066: ret - - IL_0067: ldarg.1 - IL_0068: ldnull - IL_0069: cgt.un - IL_006b: ldc.i4.0 - IL_006c: ceq - IL_006e: ret + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: stloc.2 + IL_000a: ldloc.2 + IL_000b: isinst assembly/U/B + IL_0010: brfalse.s IL_0015 + + IL_0012: ldc.i4.1 + IL_0013: br.s IL_0016 + + IL_0015: ldc.i4.0 + IL_0016: stloc.1 + IL_0017: ldloc.0 + IL_0018: stloc.s V_4 + IL_001a: ldloc.s V_4 + IL_001c: isinst assembly/U/B + IL_0021: brfalse.s IL_0026 + + IL_0023: ldc.i4.1 + IL_0024: br.s IL_0027 + + IL_0026: ldc.i4.0 + IL_0027: stloc.3 + IL_0028: ldloc.1 + IL_0029: ldloc.3 + IL_002a: bne.un.s IL_005a + + IL_002c: ldarg.0 + IL_002d: isinst assembly/U/B + IL_0032: brfalse.s IL_0058 + + IL_0034: ldarg.0 + IL_0035: castclass assembly/U/B + IL_003a: stloc.s V_5 + IL_003c: ldloc.0 + IL_003d: castclass assembly/U/B + IL_0042: stloc.s V_6 + IL_0044: ldarg.2 + IL_0045: stloc.s V_7 + IL_0047: ldloc.s V_5 + IL_0049: ldfld int32 assembly/U/B::item + IL_004e: ldloc.s V_6 + IL_0050: ldfld int32 assembly/U/B::item + IL_0055: ceq + IL_0057: ret + + IL_0058: ldc.i4.1 + IL_0059: ret + + IL_005a: ldc.i4.0 + IL_005b: ret + + IL_005c: ldc.i4.0 + IL_005d: ret + + IL_005e: ldarg.1 + IL_005f: ldnull + IL_0060: cgt.un + IL_0062: ldc.i4.0 + IL_0063: ceq + IL_0065: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/U obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/U V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/U + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/U::Equals(class assembly/U, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/U obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -789,8 +790,7 @@ IL_005e: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/GeneralizationOnUnions01.fs.RealInternalSignatureOff.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/GeneralizationOnUnions01.fs.RealInternalSignatureOff.il.net472.bsl index dc9cc7f2ed7..0fdb950f13c 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/GeneralizationOnUnions01.fs.RealInternalSignatureOff.il.net472.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/GeneralizationOnUnions01.fs.RealInternalSignatureOff.il.net472.bsl @@ -236,38 +236,59 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/Weirdo obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 - .locals init (class assembly/Weirdo V_0, - class assembly/Weirdo V_1) + .locals init (class assembly/Weirdo V_0) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0013 + IL_0001: brfalse.s IL_000c IL_0003: ldarg.1 - IL_0004: isinst assembly/Weirdo - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0011 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldc.i4.1 - IL_0010: ret + IL_0004: brfalse.s IL_000a + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldc.i4.1 + IL_0009: ret + + IL_000a: ldc.i4.0 + IL_000b: ret + + IL_000c: ldarg.1 + IL_000d: ldnull + IL_000e: cgt.un + IL_0010: ldc.i4.0 + IL_0011: ceq + IL_0013: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/Weirdo V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/Weirdo + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 - IL_0011: ldc.i4.0 + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/Weirdo::Equals(class assembly/Weirdo, + class [runtime]System.Collections.IEqualityComparer) IL_0012: ret - IL_0013: ldarg.1 - IL_0014: ldnull - IL_0015: cgt.un - IL_0017: ldc.i4.0 - IL_0018: ceq - IL_001a: ret + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class assembly/Weirdo obj) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/GeneralizationOnUnions01.fs.RealInternalSignatureOff.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/GeneralizationOnUnions01.fs.RealInternalSignatureOff.il.netcore.bsl index 3f04239f476..e95bc2fedaf 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/GeneralizationOnUnions01.fs.RealInternalSignatureOff.il.netcore.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/GeneralizationOnUnions01.fs.RealInternalSignatureOff.il.netcore.bsl @@ -58,8 +58,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 8 @@ -68,8 +67,7 @@ IL_000a: ret } - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 E0 07 00 00 1F 47 65 6E 65 72 61 6C 69 7A @@ -84,8 +82,7 @@ IL_0006: ret } - .method public static class assembly/Weirdo - get_C() cil managed + .method public static class assembly/Weirdo get_C() cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -95,8 +92,7 @@ IL_0005: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -108,8 +104,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -123,8 +118,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -137,8 +131,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/Weirdo obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/Weirdo obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -165,8 +158,7 @@ IL_0010: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -213,8 +205,7 @@ IL_0021: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -234,8 +225,7 @@ IL_000a: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -246,42 +236,62 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/Weirdo obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 - .locals init (class assembly/Weirdo V_0, - class assembly/Weirdo V_1) + .locals init (class assembly/Weirdo V_0) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0013 + IL_0001: brfalse.s IL_000c IL_0003: ldarg.1 - IL_0004: isinst assembly/Weirdo - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0011 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldc.i4.1 - IL_0010: ret + IL_0004: brfalse.s IL_000a - IL_0011: ldc.i4.0 - IL_0012: ret + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldc.i4.1 + IL_0009: ret + + IL_000a: ldc.i4.0 + IL_000b: ret - IL_0013: ldarg.1 - IL_0014: ldnull - IL_0015: cgt.un - IL_0017: ldc.i4.0 - IL_0018: ceq - IL_001a: ret + IL_000c: ldarg.1 + IL_000d: ldnull + IL_000e: cgt.un + IL_0010: ldc.i4.0 + IL_0011: ceq + IL_0013: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/Weirdo obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/Weirdo V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/Weirdo + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/Weirdo::Equals(class assembly/Weirdo, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/Weirdo obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -302,8 +312,7 @@ IL_000f: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -345,8 +354,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 { .field public int32 C - .method assembly specialname rtspecialname - instance void .ctor(int32 C) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 C) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -360,8 +368,7 @@ IL_000d: ret } - .method public strict virtual instance int32 - Invoke(class assembly/Weirdo _arg1) cil managed + .method public strict virtual instance int32 Invoke(class assembly/Weirdo _arg1) cil managed { .maxstack 5 diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/GeneralizationOnUnions01.fs.RealInternalSignatureOn.il.net472.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/GeneralizationOnUnions01.fs.RealInternalSignatureOn.il.net472.bsl index dd0d3a7a9b2..4f6a69c7d78 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/GeneralizationOnUnions01.fs.RealInternalSignatureOn.il.net472.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/GeneralizationOnUnions01.fs.RealInternalSignatureOn.il.net472.bsl @@ -236,38 +236,59 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/Weirdo obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 - .locals init (class assembly/Weirdo V_0, - class assembly/Weirdo V_1) + .locals init (class assembly/Weirdo V_0) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0013 + IL_0001: brfalse.s IL_000c IL_0003: ldarg.1 - IL_0004: isinst assembly/Weirdo - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0011 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldc.i4.1 - IL_0010: ret + IL_0004: brfalse.s IL_000a + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldc.i4.1 + IL_0009: ret + + IL_000a: ldc.i4.0 + IL_000b: ret + + IL_000c: ldarg.1 + IL_000d: ldnull + IL_000e: cgt.un + IL_0010: ldc.i4.0 + IL_0011: ceq + IL_0013: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/Weirdo V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/Weirdo + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 - IL_0011: ldc.i4.0 + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/Weirdo::Equals(class assembly/Weirdo, + class [runtime]System.Collections.IEqualityComparer) IL_0012: ret - IL_0013: ldarg.1 - IL_0014: ldnull - IL_0015: cgt.un - IL_0017: ldc.i4.0 - IL_0018: ceq - IL_001a: ret + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class assembly/Weirdo obj) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/GeneralizationOnUnions01.fs.RealInternalSignatureOn.il.netcore.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/GeneralizationOnUnions01.fs.RealInternalSignatureOn.il.netcore.bsl index 2f63fb5a58f..e4c8f885539 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/GeneralizationOnUnions01.fs.RealInternalSignatureOn.il.netcore.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/GeneralizationOnUnions01.fs.RealInternalSignatureOn.il.netcore.bsl @@ -236,38 +236,59 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/Weirdo obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 - .locals init (class assembly/Weirdo V_0, - class assembly/Weirdo V_1) + .locals init (class assembly/Weirdo V_0) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0013 + IL_0001: brfalse.s IL_000c IL_0003: ldarg.1 - IL_0004: isinst assembly/Weirdo - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0011 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldc.i4.1 - IL_0010: ret + IL_0004: brfalse.s IL_000a + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldc.i4.1 + IL_0009: ret + + IL_000a: ldc.i4.0 + IL_000b: ret + + IL_000c: ldarg.1 + IL_000d: ldnull + IL_000e: cgt.un + IL_0010: ldc.i4.0 + IL_0011: ceq + IL_0013: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/Weirdo V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/Weirdo + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 - IL_0011: ldc.i4.0 + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/Weirdo::Equals(class assembly/Weirdo, + class [runtime]System.Collections.IEqualityComparer) IL_0012: ret - IL_0013: ldarg.1 - IL_0014: ldnull - IL_0015: cgt.un - IL_0017: ldc.i4.0 - IL_0018: ceq - IL_001a: ret + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class assembly/Weirdo obj) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/Structs01.fs.il.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/Structs01.fs.il.debug.bsl index 43dc0887ae9..fe75351f38b 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/Structs01.fs.il.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/Structs01.fs.il.debug.bsl @@ -53,8 +53,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field public int32 Field - .method public hidebysig virtual final - instance int32 CompareTo(valuetype Experiment.Test/Test obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(valuetype Experiment.Test/Test obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -92,8 +91,7 @@ IL_002d: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -149,8 +147,7 @@ IL_0032: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -184,8 +181,7 @@ IL_001e: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -196,54 +192,68 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype Experiment.Test/Test obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype Experiment.Test/Test& V_0, + class [runtime]System.Collections.IEqualityComparer V_1, + int32 V_2, + int32 V_3, + class [runtime]System.Collections.IEqualityComparer V_4) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldarg.2 + IL_0004: stloc.1 + IL_0005: ldarg.0 + IL_0006: ldfld int32 Experiment.Test/Test::Field + IL_000b: stloc.2 + IL_000c: ldloc.0 + IL_000d: ldfld int32 Experiment.Test/Test::Field + IL_0012: stloc.3 + IL_0013: ldloc.1 + IL_0014: stloc.s V_4 + IL_0016: ldloc.2 + IL_0017: ldloc.3 + IL_0018: ceq + IL_001a: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 + .maxstack 5 .locals init (object V_0, - valuetype Experiment.Test/Test V_1, - valuetype Experiment.Test/Test& V_2, - class [runtime]System.Collections.IEqualityComparer V_3, - int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + valuetype Experiment.Test/Test V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst Experiment.Test/Test IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_0033 + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any Experiment.Test/Test IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldarg.2 - IL_0018: stloc.3 - IL_0019: ldarg.0 - IL_001a: ldfld int32 Experiment.Test/Test::Field - IL_001f: stloc.s V_4 - IL_0021: ldloc.2 - IL_0022: ldfld int32 Experiment.Test/Test::Field - IL_0027: stloc.s V_5 - IL_0029: ldloc.3 - IL_002a: stloc.s V_6 - IL_002c: ldloc.s V_4 - IL_002e: ldloc.s V_5 - IL_0030: ceq - IL_0032: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool Experiment.Test/Test::Equals(valuetype Experiment.Test/Test, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret - IL_0033: ldc.i4.0 - IL_0034: ret + IL_001d: ldc.i4.0 + IL_001e: ret } - .method public specialname rtspecialname - instance void .ctor(int32 i) cil managed + .method public specialname rtspecialname instance void .ctor(int32 i) cil managed { .maxstack 8 @@ -253,8 +263,7 @@ IL_0007: ret } - .method public hidebysig virtual final - instance bool Equals(valuetype Experiment.Test/Test obj) cil managed + .method public hidebysig virtual final instance bool Equals(valuetype Experiment.Test/Test obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -270,8 +279,7 @@ IL_0011: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/Structs01.fs.il.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/Structs01.fs.il.release.bsl index 4216ba295eb..00d6a181fb9 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/Structs01.fs.il.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/Structs01.fs.il.release.bsl @@ -53,8 +53,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field public int32 Field - .method public hidebysig virtual final - instance int32 CompareTo(valuetype Experiment.Test/Test obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(valuetype Experiment.Test/Test obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -83,8 +82,7 @@ IL_0020: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -131,8 +129,7 @@ IL_0026: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -160,8 +157,7 @@ IL_001a: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -172,45 +168,59 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype Experiment.Test/Test obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype Experiment.Test/Test& V_0, + class [runtime]System.Collections.IEqualityComparer V_1) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldarg.2 + IL_0004: stloc.1 + IL_0005: ldarg.0 + IL_0006: ldfld int32 Experiment.Test/Test::Field + IL_000b: ldloc.0 + IL_000c: ldfld int32 Experiment.Test/Test::Field + IL_0011: ceq + IL_0013: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 + .maxstack 5 .locals init (object V_0, - valuetype Experiment.Test/Test V_1, - valuetype Experiment.Test/Test& V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + valuetype Experiment.Test/Test V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst Experiment.Test/Test IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_0028 + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any Experiment.Test/Test IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldarg.2 - IL_0018: stloc.3 - IL_0019: ldarg.0 - IL_001a: ldfld int32 Experiment.Test/Test::Field - IL_001f: ldloc.2 - IL_0020: ldfld int32 Experiment.Test/Test::Field - IL_0025: ceq - IL_0027: ret - - IL_0028: ldc.i4.0 - IL_0029: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool Experiment.Test/Test::Equals(valuetype Experiment.Test/Test, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret + + IL_001d: ldc.i4.0 + IL_001e: ret } - .method public specialname rtspecialname - instance void .ctor(int32 i) cil managed + .method public specialname rtspecialname instance void .ctor(int32 i) cil managed { .maxstack 8 @@ -220,8 +230,7 @@ IL_0007: ret } - .method public hidebysig virtual final - instance bool Equals(valuetype Experiment.Test/Test obj) cil managed + .method public hidebysig virtual final instance bool Equals(valuetype Experiment.Test/Test obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -237,8 +246,7 @@ IL_0011: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/Structs02.fs.il.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/Structs02.fs.il.debug.bsl index db1c565e0f2..352629674ed 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/Structs02.fs.il.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/Structs02.fs.il.debug.bsl @@ -54,8 +54,7 @@ .custom instance void [FSharp.Core]Microsoft.FSharp.Core.StructAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly int32 hash@ - .method public hidebysig specialname - instance int32 get_hash() cil managed + .method public hidebysig specialname instance int32 get_hash() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.IsReadOnlyAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -67,8 +66,7 @@ IL_0006: ret } - .method public hidebysig virtual final - instance int32 CompareTo(valuetype Experiment.Test/Repro obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(valuetype Experiment.Test/Repro obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -106,8 +104,7 @@ IL_002d: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -163,8 +160,7 @@ IL_0032: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -198,8 +194,7 @@ IL_001e: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -210,54 +205,68 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype Experiment.Test/Repro obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype Experiment.Test/Repro& V_0, + class [runtime]System.Collections.IEqualityComparer V_1, + int32 V_2, + int32 V_3, + class [runtime]System.Collections.IEqualityComparer V_4) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldarg.2 + IL_0004: stloc.1 + IL_0005: ldarg.0 + IL_0006: ldfld int32 Experiment.Test/Repro::hash@ + IL_000b: stloc.2 + IL_000c: ldloc.0 + IL_000d: ldfld int32 Experiment.Test/Repro::hash@ + IL_0012: stloc.3 + IL_0013: ldloc.1 + IL_0014: stloc.s V_4 + IL_0016: ldloc.2 + IL_0017: ldloc.3 + IL_0018: ceq + IL_001a: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 + .maxstack 5 .locals init (object V_0, - valuetype Experiment.Test/Repro V_1, - valuetype Experiment.Test/Repro& V_2, - class [runtime]System.Collections.IEqualityComparer V_3, - int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + valuetype Experiment.Test/Repro V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst Experiment.Test/Repro IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_0033 + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any Experiment.Test/Repro IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldarg.2 - IL_0018: stloc.3 - IL_0019: ldarg.0 - IL_001a: ldfld int32 Experiment.Test/Repro::hash@ - IL_001f: stloc.s V_4 - IL_0021: ldloc.2 - IL_0022: ldfld int32 Experiment.Test/Repro::hash@ - IL_0027: stloc.s V_5 - IL_0029: ldloc.3 - IL_002a: stloc.s V_6 - IL_002c: ldloc.s V_4 - IL_002e: ldloc.s V_5 - IL_0030: ceq - IL_0032: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool Experiment.Test/Repro::Equals(valuetype Experiment.Test/Repro, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret - IL_0033: ldc.i4.0 - IL_0034: ret + IL_001d: ldc.i4.0 + IL_001e: ret } - .method public specialname rtspecialname - instance void .ctor(int32 length) cil managed + .method public specialname rtspecialname instance void .ctor(int32 length) cil managed { .maxstack 5 @@ -299,8 +308,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(valuetype Experiment.Test/Repro obj) cil managed + .method public hidebysig virtual final instance bool Equals(valuetype Experiment.Test/Repro obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -316,8 +324,7 @@ IL_0011: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/Structs02.fs.il.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/Structs02.fs.il.release.bsl index 7e48511f39c..345be150d73 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/Structs02.fs.il.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/Structs02.fs.il.release.bsl @@ -54,8 +54,7 @@ .custom instance void [FSharp.Core]Microsoft.FSharp.Core.StructAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly int32 hash@ - .method public hidebysig specialname - instance int32 get_hash() cil managed + .method public hidebysig specialname instance int32 get_hash() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.IsReadOnlyAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -67,8 +66,7 @@ IL_0006: ret } - .method public hidebysig virtual final - instance int32 CompareTo(valuetype Experiment.Test/Repro obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(valuetype Experiment.Test/Repro obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -97,8 +95,7 @@ IL_0020: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -145,8 +142,7 @@ IL_0026: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -174,8 +170,7 @@ IL_001a: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -186,45 +181,59 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype Experiment.Test/Repro obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype Experiment.Test/Repro& V_0, + class [runtime]System.Collections.IEqualityComparer V_1) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldarg.2 + IL_0004: stloc.1 + IL_0005: ldarg.0 + IL_0006: ldfld int32 Experiment.Test/Repro::hash@ + IL_000b: ldloc.0 + IL_000c: ldfld int32 Experiment.Test/Repro::hash@ + IL_0011: ceq + IL_0013: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 + .maxstack 5 .locals init (object V_0, - valuetype Experiment.Test/Repro V_1, - valuetype Experiment.Test/Repro& V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + valuetype Experiment.Test/Repro V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst Experiment.Test/Repro IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_0028 + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any Experiment.Test/Repro IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldarg.2 - IL_0018: stloc.3 - IL_0019: ldarg.0 - IL_001a: ldfld int32 Experiment.Test/Repro::hash@ - IL_001f: ldloc.2 - IL_0020: ldfld int32 Experiment.Test/Repro::hash@ - IL_0025: ceq - IL_0027: ret - - IL_0028: ldc.i4.0 - IL_0029: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool Experiment.Test/Repro::Equals(valuetype Experiment.Test/Repro, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret + + IL_001d: ldc.i4.0 + IL_001e: ret } - .method public specialname rtspecialname - instance void .ctor(int32 length) cil managed + .method public specialname rtspecialname instance void .ctor(int32 length) cil managed { .maxstack 5 @@ -266,8 +275,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(valuetype Experiment.Test/Repro obj) cil managed + .method public hidebysig virtual final instance bool Equals(valuetype Experiment.Test/Repro obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -283,8 +291,7 @@ IL_0011: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/Structs02_asNetStandard20.fs.il.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/Structs02_asNetStandard20.fs.il.debug.bsl index cfb6b75a0bd..5dd9c8530fa 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/Structs02_asNetStandard20.fs.il.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/Structs02_asNetStandard20.fs.il.debug.bsl @@ -59,8 +59,7 @@ .custom instance void [FSharp.Core]Microsoft.FSharp.Core.StructAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly int32 hash@ - .method public hidebysig specialname - instance int32 get_hash() cil managed + .method public hidebysig specialname instance int32 get_hash() cil managed { .custom instance void System.Runtime.CompilerServices.IsReadOnlyAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [netstandard]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -72,8 +71,7 @@ IL_0006: ret } - .method public hidebysig virtual final - instance int32 CompareTo(valuetype Experiment.Test/Repro obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(valuetype Experiment.Test/Repro obj) cil managed { .custom instance void [netstandard]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -111,8 +109,7 @@ IL_002d: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [netstandard]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -168,8 +165,7 @@ IL_0032: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [netstandard]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [netstandard]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [netstandard]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -203,8 +199,7 @@ IL_001e: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [netstandard]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -215,54 +210,68 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype Experiment.Test/Repro obj, + class [netstandard]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [netstandard]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype Experiment.Test/Repro& V_0, + class [netstandard]System.Collections.IEqualityComparer V_1, + int32 V_2, + int32 V_3, + class [netstandard]System.Collections.IEqualityComparer V_4) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldarg.2 + IL_0004: stloc.1 + IL_0005: ldarg.0 + IL_0006: ldfld int32 Experiment.Test/Repro::hash@ + IL_000b: stloc.2 + IL_000c: ldloc.0 + IL_000d: ldfld int32 Experiment.Test/Repro::hash@ + IL_0012: stloc.3 + IL_0013: ldloc.1 + IL_0014: stloc.s V_4 + IL_0016: ldloc.2 + IL_0017: ldloc.3 + IL_0018: ceq + IL_001a: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [netstandard]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [netstandard]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 + .maxstack 5 .locals init (object V_0, - valuetype Experiment.Test/Repro V_1, - valuetype Experiment.Test/Repro& V_2, - class [netstandard]System.Collections.IEqualityComparer V_3, - int32 V_4, - int32 V_5, - class [netstandard]System.Collections.IEqualityComparer V_6) + valuetype Experiment.Test/Repro V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst Experiment.Test/Repro IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_0033 + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any Experiment.Test/Repro IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldarg.2 - IL_0018: stloc.3 - IL_0019: ldarg.0 - IL_001a: ldfld int32 Experiment.Test/Repro::hash@ - IL_001f: stloc.s V_4 - IL_0021: ldloc.2 - IL_0022: ldfld int32 Experiment.Test/Repro::hash@ - IL_0027: stloc.s V_5 - IL_0029: ldloc.3 - IL_002a: stloc.s V_6 - IL_002c: ldloc.s V_4 - IL_002e: ldloc.s V_5 - IL_0030: ceq - IL_0032: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool Experiment.Test/Repro::Equals(valuetype Experiment.Test/Repro, + class [netstandard]System.Collections.IEqualityComparer) + IL_001c: ret - IL_0033: ldc.i4.0 - IL_0034: ret + IL_001d: ldc.i4.0 + IL_001e: ret } - .method public specialname rtspecialname - instance void .ctor(int32 length) cil managed + .method public specialname rtspecialname instance void .ctor(int32 length) cil managed { .maxstack 5 @@ -304,8 +313,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(valuetype Experiment.Test/Repro obj) cil managed + .method public hidebysig virtual final instance bool Equals(valuetype Experiment.Test/Repro obj) cil managed { .custom instance void [netstandard]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -321,8 +329,7 @@ IL_0011: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [netstandard]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -381,8 +388,7 @@ extends [runtime]System.Attribute { .custom instance void [netstandard]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .custom instance void [netstandard]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [netstandard]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/Structs02_asNetStandard20.fs.il.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/Structs02_asNetStandard20.fs.il.release.bsl index b050aa6db4e..dc612567d5c 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/Structs02_asNetStandard20.fs.il.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/Structs02_asNetStandard20.fs.il.release.bsl @@ -59,8 +59,7 @@ .custom instance void [FSharp.Core]Microsoft.FSharp.Core.StructAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly int32 hash@ - .method public hidebysig specialname - instance int32 get_hash() cil managed + .method public hidebysig specialname instance int32 get_hash() cil managed { .custom instance void System.Runtime.CompilerServices.IsReadOnlyAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [netstandard]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -72,8 +71,7 @@ IL_0006: ret } - .method public hidebysig virtual final - instance int32 CompareTo(valuetype Experiment.Test/Repro obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(valuetype Experiment.Test/Repro obj) cil managed { .custom instance void [netstandard]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -102,8 +100,7 @@ IL_0020: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [netstandard]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -150,8 +147,7 @@ IL_0026: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [netstandard]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [netstandard]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [netstandard]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -179,8 +175,7 @@ IL_001a: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [netstandard]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -191,45 +186,59 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype Experiment.Test/Repro obj, + class [netstandard]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [netstandard]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype Experiment.Test/Repro& V_0, + class [netstandard]System.Collections.IEqualityComparer V_1) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldarg.2 + IL_0004: stloc.1 + IL_0005: ldarg.0 + IL_0006: ldfld int32 Experiment.Test/Repro::hash@ + IL_000b: ldloc.0 + IL_000c: ldfld int32 Experiment.Test/Repro::hash@ + IL_0011: ceq + IL_0013: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [netstandard]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [netstandard]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 + .maxstack 5 .locals init (object V_0, - valuetype Experiment.Test/Repro V_1, - valuetype Experiment.Test/Repro& V_2, - class [netstandard]System.Collections.IEqualityComparer V_3) + valuetype Experiment.Test/Repro V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst Experiment.Test/Repro IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_0028 + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any Experiment.Test/Repro IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldarg.2 - IL_0018: stloc.3 - IL_0019: ldarg.0 - IL_001a: ldfld int32 Experiment.Test/Repro::hash@ - IL_001f: ldloc.2 - IL_0020: ldfld int32 Experiment.Test/Repro::hash@ - IL_0025: ceq - IL_0027: ret - - IL_0028: ldc.i4.0 - IL_0029: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool Experiment.Test/Repro::Equals(valuetype Experiment.Test/Repro, + class [netstandard]System.Collections.IEqualityComparer) + IL_001c: ret + + IL_001d: ldc.i4.0 + IL_001e: ret } - .method public specialname rtspecialname - instance void .ctor(int32 length) cil managed + .method public specialname rtspecialname instance void .ctor(int32 length) cil managed { .maxstack 5 @@ -271,8 +280,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(valuetype Experiment.Test/Repro obj) cil managed + .method public hidebysig virtual final instance bool Equals(valuetype Experiment.Test/Repro obj) cil managed { .custom instance void [netstandard]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -288,8 +296,7 @@ IL_0011: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [netstandard]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -348,8 +355,7 @@ extends [runtime]System.Attribute { .custom instance void [netstandard]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .custom instance void [netstandard]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [netstandard]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/StructsAsArrayElements01.fs.RealInternalSignatureOff.il.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/StructsAsArrayElements01.fs.RealInternalSignatureOff.il.debug.bsl index e7c07552242..abca1d7af92 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/StructsAsArrayElements01.fs.RealInternalSignatureOff.il.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/StructsAsArrayElements01.fs.RealInternalSignatureOff.il.debug.bsl @@ -193,50 +193,65 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype assembly/T obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype assembly/T& V_0, + class [runtime]System.Collections.IEqualityComparer V_1, + int32 V_2, + int32 V_3, + class [runtime]System.Collections.IEqualityComparer V_4) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldarg.2 + IL_0004: stloc.1 + IL_0005: ldarg.0 + IL_0006: ldfld int32 assembly/T::i + IL_000b: stloc.2 + IL_000c: ldloc.0 + IL_000d: ldfld int32 assembly/T::i + IL_0012: stloc.3 + IL_0013: ldloc.1 + IL_0014: stloc.s V_4 + IL_0016: ldloc.2 + IL_0017: ldloc.3 + IL_0018: ceq + IL_001a: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 + .maxstack 5 .locals init (object V_0, - valuetype assembly/T V_1, - valuetype assembly/T& V_2, - class [runtime]System.Collections.IEqualityComparer V_3, - int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + valuetype assembly/T V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst assembly/T IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_0033 + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any assembly/T IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldarg.2 - IL_0018: stloc.3 - IL_0019: ldarg.0 - IL_001a: ldfld int32 assembly/T::i - IL_001f: stloc.s V_4 - IL_0021: ldloc.2 - IL_0022: ldfld int32 assembly/T::i - IL_0027: stloc.s V_5 - IL_0029: ldloc.3 - IL_002a: stloc.s V_6 - IL_002c: ldloc.s V_4 - IL_002e: ldloc.s V_5 - IL_0030: ceq - IL_0032: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool assembly/T::Equals(valuetype assembly/T, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret - IL_0033: ldc.i4.0 - IL_0034: ret + IL_001d: ldc.i4.0 + IL_001e: ret } .method public hidebysig instance void Set(int32 i) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/StructsAsArrayElements01.fs.RealInternalSignatureOff.il.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/StructsAsArrayElements01.fs.RealInternalSignatureOff.il.release.bsl index 1d44ece6f6a..de9612430e9 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/StructsAsArrayElements01.fs.RealInternalSignatureOff.il.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/StructsAsArrayElements01.fs.RealInternalSignatureOff.il.release.bsl @@ -54,8 +54,7 @@ .custom instance void [FSharp.Core]Microsoft.FSharp.Core.StructAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field public int32 i - .method public hidebysig virtual final - instance int32 CompareTo(valuetype assembly/T obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(valuetype assembly/T obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -84,8 +83,7 @@ IL_0020: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -132,8 +130,7 @@ IL_0026: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -161,8 +158,7 @@ IL_001a: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -173,45 +169,59 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype assembly/T obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype assembly/T& V_0, + class [runtime]System.Collections.IEqualityComparer V_1) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldarg.2 + IL_0004: stloc.1 + IL_0005: ldarg.0 + IL_0006: ldfld int32 assembly/T::i + IL_000b: ldloc.0 + IL_000c: ldfld int32 assembly/T::i + IL_0011: ceq + IL_0013: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 + .maxstack 5 .locals init (object V_0, - valuetype assembly/T V_1, - valuetype assembly/T& V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + valuetype assembly/T V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst assembly/T IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_0028 + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any assembly/T IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldarg.2 - IL_0018: stloc.3 - IL_0019: ldarg.0 - IL_001a: ldfld int32 assembly/T::i - IL_001f: ldloc.2 - IL_0020: ldfld int32 assembly/T::i - IL_0025: ceq - IL_0027: ret - - IL_0028: ldc.i4.0 - IL_0029: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool assembly/T::Equals(valuetype assembly/T, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret + + IL_001d: ldc.i4.0 + IL_001e: ret } - .method public hidebysig instance void - Set(int32 i) cil managed + .method public hidebysig instance void Set(int32 i) cil managed { .maxstack 8 @@ -221,8 +231,7 @@ IL_0007: ret } - .method public hidebysig virtual final - instance bool Equals(valuetype assembly/T obj) cil managed + .method public hidebysig virtual final instance bool Equals(valuetype assembly/T obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -238,8 +247,7 @@ IL_0011: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -268,8 +276,7 @@ } - .method public specialname static valuetype assembly/T[] - get_a() cil managed + .method public specialname static valuetype assembly/T[] get_a() cil managed { .maxstack 8 diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/StructsAsArrayElements01.fs.RealInternalSignatureOn.il.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/StructsAsArrayElements01.fs.RealInternalSignatureOn.il.debug.bsl index 36c41338aa7..afcc9f2c432 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/StructsAsArrayElements01.fs.RealInternalSignatureOn.il.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/StructsAsArrayElements01.fs.RealInternalSignatureOn.il.debug.bsl @@ -193,50 +193,65 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype assembly/T obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype assembly/T& V_0, + class [runtime]System.Collections.IEqualityComparer V_1, + int32 V_2, + int32 V_3, + class [runtime]System.Collections.IEqualityComparer V_4) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldarg.2 + IL_0004: stloc.1 + IL_0005: ldarg.0 + IL_0006: ldfld int32 assembly/T::i + IL_000b: stloc.2 + IL_000c: ldloc.0 + IL_000d: ldfld int32 assembly/T::i + IL_0012: stloc.3 + IL_0013: ldloc.1 + IL_0014: stloc.s V_4 + IL_0016: ldloc.2 + IL_0017: ldloc.3 + IL_0018: ceq + IL_001a: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 + .maxstack 5 .locals init (object V_0, - valuetype assembly/T V_1, - valuetype assembly/T& V_2, - class [runtime]System.Collections.IEqualityComparer V_3, - int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + valuetype assembly/T V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst assembly/T IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_0033 + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any assembly/T IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldarg.2 - IL_0018: stloc.3 - IL_0019: ldarg.0 - IL_001a: ldfld int32 assembly/T::i - IL_001f: stloc.s V_4 - IL_0021: ldloc.2 - IL_0022: ldfld int32 assembly/T::i - IL_0027: stloc.s V_5 - IL_0029: ldloc.3 - IL_002a: stloc.s V_6 - IL_002c: ldloc.s V_4 - IL_002e: ldloc.s V_5 - IL_0030: ceq - IL_0032: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool assembly/T::Equals(valuetype assembly/T, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret - IL_0033: ldc.i4.0 - IL_0034: ret + IL_001d: ldc.i4.0 + IL_001e: ret } .method public hidebysig instance void Set(int32 i) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/StructsAsArrayElements01.fs.RealInternalSignatureOn.il.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/StructsAsArrayElements01.fs.RealInternalSignatureOn.il.release.bsl index 0743b86a949..54ecc2f3622 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/StructsAsArrayElements01.fs.RealInternalSignatureOn.il.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Misc/StructsAsArrayElements01.fs.RealInternalSignatureOn.il.release.bsl @@ -169,41 +169,56 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype assembly/T obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype assembly/T& V_0, + class [runtime]System.Collections.IEqualityComparer V_1) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldarg.2 + IL_0004: stloc.1 + IL_0005: ldarg.0 + IL_0006: ldfld int32 assembly/T::i + IL_000b: ldloc.0 + IL_000c: ldfld int32 assembly/T::i + IL_0011: ceq + IL_0013: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 + .maxstack 5 .locals init (object V_0, - valuetype assembly/T V_1, - valuetype assembly/T& V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + valuetype assembly/T V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst assembly/T IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_0028 + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any assembly/T IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldarg.2 - IL_0018: stloc.3 - IL_0019: ldarg.0 - IL_001a: ldfld int32 assembly/T::i - IL_001f: ldloc.2 - IL_0020: ldfld int32 assembly/T::i - IL_0025: ceq - IL_0027: ret - - IL_0028: ldc.i4.0 - IL_0029: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool assembly/T::Equals(valuetype assembly/T, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret + + IL_001d: ldc.i4.0 + IL_001e: ret } .method public hidebysig instance void Set(int32 i) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOff.il.net472.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOff.il.net472.debug.bsl index dadf70ed5e3..93793e1a41e 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOff.il.net472.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOff.il.net472.debug.bsl @@ -56,8 +56,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> { .field static assembly initonly class assembly/'Pipe #1 input at line 11@12-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -68,8 +67,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 - Invoke(int32 _arg1) cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 Invoke(int32 _arg1) cil managed { .maxstack 5 @@ -82,8 +80,7 @@ IL_000a: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -131,8 +128,7 @@ IL_001b: ret } - .method public strict virtual instance int32 - GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1& next) cil managed + .method public strict virtual instance int32 GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1& next) cil managed { .maxstack 7 @@ -209,8 +205,7 @@ IL_009c: ret } - .method public strict virtual instance void - Close() cil managed + .method public strict virtual instance void Close() cil managed { .maxstack 6 @@ -291,8 +286,7 @@ IL_007b: ret } - .method public strict virtual instance bool - get_CheckClose() cil managed + .method public strict virtual instance bool get_CheckClose() cil managed { .maxstack 8 @@ -328,8 +322,7 @@ IL_002f: ret } - .method public strict virtual instance int32 - get_LastGenerated() cil managed + .method public strict virtual instance int32 get_LastGenerated() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -340,8 +333,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1 - GetFreshEnumerator() cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1 GetFreshEnumerator() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -362,8 +354,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> { .field static assembly initonly class assembly/'productNames@21-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -374,8 +365,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 - Invoke(class [Utils]Utils/Product _arg1) cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 Invoke(class [Utils]Utils/Product _arg1) cil managed { .maxstack 5 @@ -388,8 +378,7 @@ IL_000a: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -437,8 +426,7 @@ IL_001b: ret } - .method public strict virtual instance int32 - GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1& next) cil managed + .method public strict virtual instance int32 GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1& next) cil managed { .maxstack 7 @@ -514,8 +502,7 @@ IL_009f: ret } - .method public strict virtual instance void - Close() cil managed + .method public strict virtual instance void Close() cil managed { .maxstack 6 @@ -596,8 +583,7 @@ IL_007b: ret } - .method public strict virtual instance bool - get_CheckClose() cil managed + .method public strict virtual instance bool get_CheckClose() cil managed { .maxstack 8 @@ -633,8 +619,7 @@ IL_002f: ret } - .method public strict virtual instance string - get_LastGenerated() cil managed + .method public strict virtual instance string get_LastGenerated() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -645,8 +630,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1 - GetFreshEnumerator() cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1 GetFreshEnumerator() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -667,8 +651,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> { .field static assembly initonly class assembly/'Pipe #2 input at line 28@29-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -679,8 +662,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 - Invoke(int32 _arg1) cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 Invoke(int32 _arg1) cil managed { .maxstack 5 @@ -693,8 +675,7 @@ IL_000a: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -742,8 +723,7 @@ IL_001b: ret } - .method public strict virtual instance int32 - GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1& next) cil managed + .method public strict virtual instance int32 GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1& next) cil managed { .maxstack 7 @@ -820,8 +800,7 @@ IL_00a4: ret } - .method public strict virtual instance void - Close() cil managed + .method public strict virtual instance void Close() cil managed { .maxstack 6 @@ -902,8 +881,7 @@ IL_007b: ret } - .method public strict virtual instance bool - get_CheckClose() cil managed + .method public strict virtual instance bool get_CheckClose() cil managed { .maxstack 8 @@ -939,8 +917,7 @@ IL_002f: ret } - .method public strict virtual instance string - get_LastGenerated() cil managed + .method public strict virtual instance string get_LastGenerated() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -951,8 +928,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1 - GetFreshEnumerator() cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1 GetFreshEnumerator() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -973,8 +949,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> { .field static assembly initonly class assembly/'Pipe #3 input at line 37@38-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -985,8 +960,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 - Invoke(string _arg1) cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 Invoke(string _arg1) cil managed { .maxstack 5 @@ -999,8 +973,7 @@ IL_000a: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -1048,8 +1021,7 @@ IL_001b: ret } - .method public strict virtual instance int32 - GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1>& next) cil managed + .method public strict virtual instance int32 GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1>& next) cil managed { .maxstack 7 @@ -1129,8 +1101,7 @@ IL_00ad: ret } - .method public strict virtual instance void - Close() cil managed + .method public strict virtual instance void Close() cil managed { .maxstack 6 @@ -1211,8 +1182,7 @@ IL_007b: ret } - .method public strict virtual instance bool - get_CheckClose() cil managed + .method public strict virtual instance bool get_CheckClose() cil managed { .maxstack 8 @@ -1248,8 +1218,7 @@ IL_002f: ret } - .method public strict virtual instance class [runtime]System.Tuple`2 - get_LastGenerated() cil managed + .method public strict virtual instance class [runtime]System.Tuple`2 get_LastGenerated() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1260,8 +1229,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1> - GetFreshEnumerator() cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1> GetFreshEnumerator() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1282,8 +1250,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> { .field static assembly initonly class assembly/'Pipe #4 input at line 44@45-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1294,8 +1261,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 - Invoke(int32 _arg1) cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 Invoke(int32 _arg1) cil managed { .maxstack 5 @@ -1308,8 +1274,7 @@ IL_000a: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -1357,8 +1322,7 @@ IL_001b: ret } - .method public strict virtual instance int32 - GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1>& next) cil managed + .method public strict virtual instance int32 GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1>& next) cil managed { .maxstack 8 @@ -1442,8 +1406,7 @@ IL_00b2: ret } - .method public strict virtual instance void - Close() cil managed + .method public strict virtual instance void Close() cil managed { .maxstack 6 @@ -1524,8 +1487,7 @@ IL_007b: ret } - .method public strict virtual instance bool - get_CheckClose() cil managed + .method public strict virtual instance bool get_CheckClose() cil managed { .maxstack 8 @@ -1561,8 +1523,7 @@ IL_002f: ret } - .method public strict virtual instance class [runtime]System.Tuple`2 - get_LastGenerated() cil managed + .method public strict virtual instance class [runtime]System.Tuple`2 get_LastGenerated() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1573,8 +1534,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1> - GetFreshEnumerator() cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1> GetFreshEnumerator() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1595,8 +1555,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> { .field static assembly initonly class assembly/'Pipe #5 input at line 51@52-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1607,8 +1566,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 - Invoke(class [Utils]Utils/Product _arg1) cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 Invoke(class [Utils]Utils/Product _arg1) cil managed { .maxstack 5 @@ -1621,8 +1579,7 @@ IL_000a: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -1670,8 +1627,7 @@ IL_001b: ret } - .method public strict virtual instance int32 - GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1>& next) cil managed + .method public strict virtual instance int32 GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1>& next) cil managed { .maxstack 8 @@ -1754,8 +1710,7 @@ IL_00b3: ret } - .method public strict virtual instance void - Close() cil managed + .method public strict virtual instance void Close() cil managed { .maxstack 6 @@ -1836,8 +1791,7 @@ IL_007b: ret } - .method public strict virtual instance bool - get_CheckClose() cil managed + .method public strict virtual instance bool get_CheckClose() cil managed { .maxstack 8 @@ -1873,8 +1827,7 @@ IL_002f: ret } - .method public strict virtual instance class [runtime]System.Tuple`3 - get_LastGenerated() cil managed + .method public strict virtual instance class [runtime]System.Tuple`3 get_LastGenerated() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1885,8 +1838,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1> - GetFreshEnumerator() cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1> GetFreshEnumerator() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1910,8 +1862,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1925,8 +1876,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 - Invoke(int32 _arg1) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 Invoke(int32 _arg1) cil managed { .maxstack 6 @@ -1947,8 +1897,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 { .field static assembly initonly class assembly/'Pipe #6 input at line 59@61-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1959,8 +1908,7 @@ IL_0006: ret } - .method public strict virtual instance bool - Invoke(int32 n) cil managed + .method public strict virtual instance bool Invoke(int32 n) cil managed { .maxstack 8 @@ -1970,8 +1918,7 @@ IL_0004: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -1986,8 +1933,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 { .field static assembly initonly class assembly/'Pipe #6 input at line 59@62-2' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1998,8 +1944,7 @@ IL_0006: ret } - .method public strict virtual instance string - Invoke(int32 n) cil managed + .method public strict virtual instance string Invoke(int32 n) cil managed { .maxstack 8 @@ -2010,8 +1955,7 @@ IL_000d: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2049,8 +1993,7 @@ IL_0014: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> - Invoke(int32 _arg2) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> Invoke(int32 _arg2) cil managed { .maxstack 7 @@ -2078,8 +2021,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2093,8 +2035,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> - Invoke(int32 _arg1) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> Invoke(int32 _arg1) cil managed { .maxstack 8 @@ -2124,8 +2065,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,bool> { .field static assembly initonly class assembly/'Pipe #7 input at line 71@74-2' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2136,8 +2076,7 @@ IL_0006: ret } - .method public strict virtual instance bool - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance bool Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 6 @@ -2155,8 +2094,7 @@ IL_0012: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2171,8 +2109,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,class [runtime]System.Tuple`2> { .field static assembly initonly class assembly/'Pipe #7 input at line 71@75-3' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2183,8 +2120,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Tuple`2 - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance class [runtime]System.Tuple`2 Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 6 @@ -2203,8 +2139,7 @@ IL_0015: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2242,8 +2177,7 @@ IL_0014: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> - Invoke(class [Utils]Utils/Order _arg2) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> Invoke(class [Utils]Utils/Order _arg2) cil managed { .maxstack 7 @@ -2271,8 +2205,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2286,8 +2219,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> - Invoke(class [Utils]Utils/Customer _arg1) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> Invoke(class [Utils]Utils/Customer _arg1) cil managed { .maxstack 8 @@ -2318,8 +2250,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,bool> { .field static assembly initonly class assembly/'Pipe #8 input at line 81@84-2' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2330,8 +2261,7 @@ IL_0006: ret } - .method public strict virtual instance bool - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance bool Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 10 @@ -2360,8 +2290,7 @@ IL_0027: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2376,8 +2305,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,class [runtime]System.Tuple`3> { .field static assembly initonly class assembly/'Pipe #8 input at line 81@85-3' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2388,8 +2316,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Tuple`3 - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance class [runtime]System.Tuple`3 Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 7 @@ -2413,8 +2340,7 @@ IL_0025: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2452,8 +2378,7 @@ IL_0014: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> - Invoke(class [Utils]Utils/Order _arg2) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> Invoke(class [Utils]Utils/Order _arg2) cil managed { .maxstack 7 @@ -2481,8 +2406,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2496,8 +2420,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> - Invoke(class [Utils]Utils/Customer _arg1) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> Invoke(class [Utils]Utils/Customer _arg1) cil managed { .maxstack 8 @@ -2528,8 +2451,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,bool> { .field static assembly initonly class assembly/'Pipe #9 input at line 90@93-2' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2540,8 +2462,7 @@ IL_0006: ret } - .method public strict virtual instance bool - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance bool Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 7 @@ -2588,8 +2509,7 @@ IL_003f: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2604,8 +2524,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,class [runtime]System.Tuple`3> { .field static assembly initonly class assembly/'Pipe #9 input at line 90@94-3' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2616,8 +2535,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Tuple`3 - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance class [runtime]System.Tuple`3 Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 7 @@ -2641,8 +2559,7 @@ IL_0025: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2680,8 +2597,7 @@ IL_0014: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> - Invoke(class [Utils]Utils/Order _arg2) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> Invoke(class [Utils]Utils/Order _arg2) cil managed { .maxstack 7 @@ -2709,8 +2625,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2724,8 +2639,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> - Invoke(class [Utils]Utils/Customer _arg1) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> Invoke(class [Utils]Utils/Customer _arg1) cil managed { .maxstack 8 @@ -2756,8 +2670,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,bool> { .field static assembly initonly class assembly/'orders3@102-2' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2768,8 +2681,7 @@ IL_0006: ret } - .method public strict virtual instance bool - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance bool Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 10 @@ -2798,8 +2710,7 @@ IL_0027: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2814,8 +2725,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,class [runtime]System.Tuple`3> { .field static assembly initonly class assembly/'orders3@103-3' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2826,8 +2736,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Tuple`3 - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance class [runtime]System.Tuple`3 Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 7 @@ -2851,8 +2760,7 @@ IL_0025: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2870,8 +2778,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2885,8 +2792,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 - Invoke(class [Utils]Utils/Customer _arg1) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 Invoke(class [Utils]Utils/Customer _arg1) cil managed { .maxstack 6 @@ -2907,8 +2813,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 { .field static assembly initonly class assembly/'orders4@112-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2919,8 +2824,7 @@ IL_0006: ret } - .method public strict virtual instance bool - Invoke(class [Utils]Utils/Customer c) cil managed + .method public strict virtual instance bool Invoke(class [Utils]Utils/Customer c) cil managed { .maxstack 8 @@ -2932,8 +2836,7 @@ IL_0010: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2971,8 +2874,7 @@ IL_0014: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> - Invoke(class [Utils]Utils/Order _arg3) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> Invoke(class [Utils]Utils/Order _arg3) cil managed { .maxstack 7 @@ -3000,8 +2902,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -3015,8 +2916,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> - Invoke(class [Utils]Utils/Customer _arg2) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> Invoke(class [Utils]Utils/Customer _arg2) cil managed { .maxstack 8 @@ -3047,8 +2947,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,bool> { .field static assembly initonly class assembly/'orders4@114-4' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -3059,8 +2958,7 @@ IL_0006: ret } - .method public strict virtual instance bool - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance bool Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 6 @@ -3102,8 +3000,7 @@ IL_0038: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -3118,8 +3015,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,class [runtime]System.Tuple`2> { .field static assembly initonly class assembly/'orders4@115-5' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -3130,8 +3026,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Tuple`2 - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance class [runtime]System.Tuple`2 Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 6 @@ -3152,8 +3047,7 @@ IL_001f: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -3164,8 +3058,7 @@ } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_numbers() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_numbers() cil managed { .maxstack 8 @@ -3173,8 +3066,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_numsPlusOne() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_numsPlusOne() cil managed { .maxstack 8 @@ -3182,8 +3074,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_products() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_products() cil managed { .maxstack 8 @@ -3191,8 +3082,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Collections.Generic.IEnumerable`1 - get_productNames() cil managed + .method public specialname static class [runtime]System.Collections.Generic.IEnumerable`1 get_productNames() cil managed { .maxstack 8 @@ -3200,8 +3090,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_strings() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_strings() cil managed { .maxstack 8 @@ -3209,8 +3098,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_textNums() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_textNums() cil managed { .maxstack 8 @@ -3218,8 +3106,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_words() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_words() cil managed { .maxstack 8 @@ -3227,8 +3114,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Tuple`2[] - get_upperLowerWords() cil managed + .method public specialname static class [runtime]System.Tuple`2[] get_upperLowerWords() cil managed { .maxstack 8 @@ -3236,8 +3122,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1> - get_digitOddEvens() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1> get_digitOddEvens() cil managed { .maxstack 8 @@ -3245,8 +3130,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Tuple`3[] - get_productInfos() cil managed + .method public specialname static class [runtime]System.Tuple`3[] get_productInfos() cil managed { .maxstack 8 @@ -3254,8 +3138,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_digits() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_digits() cil managed { .maxstack 8 @@ -3263,8 +3146,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_lowNums() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_lowNums() cil managed { .maxstack 8 @@ -3272,8 +3154,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_numbersA() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_numbersA() cil managed { .maxstack 8 @@ -3281,8 +3162,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_numbersB() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_numbersB() cil managed { .maxstack 8 @@ -3290,8 +3170,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Tuple`2[] - get_pairs() cil managed + .method public specialname static class [runtime]System.Tuple`2[] get_pairs() cil managed { .maxstack 8 @@ -3299,8 +3178,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_customers() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_customers() cil managed { .maxstack 8 @@ -3308,8 +3186,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Tuple`3[] - get_orders() cil managed + .method public specialname static class [runtime]System.Tuple`3[] get_orders() cil managed { .maxstack 8 @@ -3317,8 +3194,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Tuple`3[] - get_orders2() cil managed + .method public specialname static class [runtime]System.Tuple`3[] get_orders2() cil managed { .maxstack 8 @@ -3326,8 +3202,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Collections.Generic.IEnumerable`1> - get_orders3() cil managed + .method public specialname static class [runtime]System.Collections.Generic.IEnumerable`1> get_orders3() cil managed { .maxstack 8 @@ -3335,8 +3210,7 @@ IL_0005: ret } - .method public specialname static valuetype [runtime]System.DateTime - get_cutOffDate() cil managed + .method public specialname static valuetype [runtime]System.DateTime get_cutOffDate() cil managed { .maxstack 8 @@ -3344,8 +3218,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Collections.Generic.IEnumerable`1> - get_orders4() cil managed + .method public specialname static class [runtime]System.Collections.Generic.IEnumerable`1> get_orders4() cil managed { .maxstack 8 @@ -3809,7 +3682,7 @@ IL_0253: ldloc.s V_38 IL_0255: ldloc.s V_39 IL_0257: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() - IL_025c: callvirt instance bool class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Equals(object, + IL_025c: callvirt instance bool class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Equals(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, class [runtime]System.Collections.IEqualityComparer) IL_0261: ldc.i4.0 IL_0262: ceq diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOff.il.net472.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOff.il.net472.release.bsl index a7f4cdd53a4..7970541d28b 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOff.il.net472.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOff.il.net472.release.bsl @@ -56,8 +56,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> { .field static assembly initonly class assembly/'Pipe #1 input at line 11@12-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -68,8 +67,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 - Invoke(int32 _arg1) cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 Invoke(int32 _arg1) cil managed { .maxstack 5 @@ -82,8 +80,7 @@ IL_000a: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -131,8 +128,7 @@ IL_001b: ret } - .method public strict virtual instance int32 - GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1& next) cil managed + .method public strict virtual instance int32 GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1& next) cil managed { .maxstack 7 @@ -209,8 +205,7 @@ IL_009c: ret } - .method public strict virtual instance void - Close() cil managed + .method public strict virtual instance void Close() cil managed { .maxstack 6 @@ -291,8 +286,7 @@ IL_007b: ret } - .method public strict virtual instance bool - get_CheckClose() cil managed + .method public strict virtual instance bool get_CheckClose() cil managed { .maxstack 8 @@ -328,8 +322,7 @@ IL_002f: ret } - .method public strict virtual instance int32 - get_LastGenerated() cil managed + .method public strict virtual instance int32 get_LastGenerated() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -340,8 +333,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1 - GetFreshEnumerator() cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1 GetFreshEnumerator() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -362,8 +354,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> { .field static assembly initonly class assembly/'productNames@21-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -374,8 +365,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 - Invoke(class [Utils]Utils/Product _arg1) cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 Invoke(class [Utils]Utils/Product _arg1) cil managed { .maxstack 5 @@ -388,8 +378,7 @@ IL_000a: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -437,8 +426,7 @@ IL_001b: ret } - .method public strict virtual instance int32 - GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1& next) cil managed + .method public strict virtual instance int32 GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1& next) cil managed { .maxstack 7 @@ -514,8 +502,7 @@ IL_009f: ret } - .method public strict virtual instance void - Close() cil managed + .method public strict virtual instance void Close() cil managed { .maxstack 6 @@ -596,8 +583,7 @@ IL_007b: ret } - .method public strict virtual instance bool - get_CheckClose() cil managed + .method public strict virtual instance bool get_CheckClose() cil managed { .maxstack 8 @@ -633,8 +619,7 @@ IL_002f: ret } - .method public strict virtual instance string - get_LastGenerated() cil managed + .method public strict virtual instance string get_LastGenerated() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -645,8 +630,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1 - GetFreshEnumerator() cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1 GetFreshEnumerator() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -667,8 +651,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> { .field static assembly initonly class assembly/'Pipe #2 input at line 28@29-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -679,8 +662,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 - Invoke(int32 _arg1) cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 Invoke(int32 _arg1) cil managed { .maxstack 5 @@ -693,8 +675,7 @@ IL_000a: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -742,8 +723,7 @@ IL_001b: ret } - .method public strict virtual instance int32 - GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1& next) cil managed + .method public strict virtual instance int32 GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1& next) cil managed { .maxstack 7 @@ -820,8 +800,7 @@ IL_00a4: ret } - .method public strict virtual instance void - Close() cil managed + .method public strict virtual instance void Close() cil managed { .maxstack 6 @@ -902,8 +881,7 @@ IL_007b: ret } - .method public strict virtual instance bool - get_CheckClose() cil managed + .method public strict virtual instance bool get_CheckClose() cil managed { .maxstack 8 @@ -939,8 +917,7 @@ IL_002f: ret } - .method public strict virtual instance string - get_LastGenerated() cil managed + .method public strict virtual instance string get_LastGenerated() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -951,8 +928,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1 - GetFreshEnumerator() cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1 GetFreshEnumerator() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -973,8 +949,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> { .field static assembly initonly class assembly/'Pipe #3 input at line 37@38-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -985,8 +960,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 - Invoke(string _arg1) cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 Invoke(string _arg1) cil managed { .maxstack 5 @@ -999,8 +973,7 @@ IL_000a: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -1048,8 +1021,7 @@ IL_001b: ret } - .method public strict virtual instance int32 - GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1>& next) cil managed + .method public strict virtual instance int32 GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1>& next) cil managed { .maxstack 7 @@ -1129,8 +1101,7 @@ IL_00ad: ret } - .method public strict virtual instance void - Close() cil managed + .method public strict virtual instance void Close() cil managed { .maxstack 6 @@ -1211,8 +1182,7 @@ IL_007b: ret } - .method public strict virtual instance bool - get_CheckClose() cil managed + .method public strict virtual instance bool get_CheckClose() cil managed { .maxstack 8 @@ -1248,8 +1218,7 @@ IL_002f: ret } - .method public strict virtual instance class [runtime]System.Tuple`2 - get_LastGenerated() cil managed + .method public strict virtual instance class [runtime]System.Tuple`2 get_LastGenerated() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1260,8 +1229,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1> - GetFreshEnumerator() cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1> GetFreshEnumerator() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1282,8 +1250,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> { .field static assembly initonly class assembly/'Pipe #4 input at line 44@45-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1294,8 +1261,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 - Invoke(int32 _arg1) cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 Invoke(int32 _arg1) cil managed { .maxstack 5 @@ -1308,8 +1274,7 @@ IL_000a: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -1357,8 +1322,7 @@ IL_001b: ret } - .method public strict virtual instance int32 - GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1>& next) cil managed + .method public strict virtual instance int32 GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1>& next) cil managed { .maxstack 8 @@ -1442,8 +1406,7 @@ IL_00b2: ret } - .method public strict virtual instance void - Close() cil managed + .method public strict virtual instance void Close() cil managed { .maxstack 6 @@ -1524,8 +1487,7 @@ IL_007b: ret } - .method public strict virtual instance bool - get_CheckClose() cil managed + .method public strict virtual instance bool get_CheckClose() cil managed { .maxstack 8 @@ -1561,8 +1523,7 @@ IL_002f: ret } - .method public strict virtual instance class [runtime]System.Tuple`2 - get_LastGenerated() cil managed + .method public strict virtual instance class [runtime]System.Tuple`2 get_LastGenerated() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1573,8 +1534,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1> - GetFreshEnumerator() cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1> GetFreshEnumerator() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1595,8 +1555,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> { .field static assembly initonly class assembly/'Pipe #5 input at line 51@52-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1607,8 +1566,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 - Invoke(class [Utils]Utils/Product _arg1) cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 Invoke(class [Utils]Utils/Product _arg1) cil managed { .maxstack 5 @@ -1621,8 +1579,7 @@ IL_000a: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -1670,8 +1627,7 @@ IL_001b: ret } - .method public strict virtual instance int32 - GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1>& next) cil managed + .method public strict virtual instance int32 GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1>& next) cil managed { .maxstack 8 @@ -1754,8 +1710,7 @@ IL_00b3: ret } - .method public strict virtual instance void - Close() cil managed + .method public strict virtual instance void Close() cil managed { .maxstack 6 @@ -1836,8 +1791,7 @@ IL_007b: ret } - .method public strict virtual instance bool - get_CheckClose() cil managed + .method public strict virtual instance bool get_CheckClose() cil managed { .maxstack 8 @@ -1873,8 +1827,7 @@ IL_002f: ret } - .method public strict virtual instance class [runtime]System.Tuple`3 - get_LastGenerated() cil managed + .method public strict virtual instance class [runtime]System.Tuple`3 get_LastGenerated() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1885,8 +1838,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1> - GetFreshEnumerator() cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1> GetFreshEnumerator() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1910,8 +1862,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1925,8 +1876,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 - Invoke(int32 _arg1) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 Invoke(int32 _arg1) cil managed { .maxstack 6 @@ -1947,8 +1897,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 { .field static assembly initonly class assembly/'Pipe #6 input at line 59@61-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1959,8 +1908,7 @@ IL_0006: ret } - .method public strict virtual instance bool - Invoke(int32 n) cil managed + .method public strict virtual instance bool Invoke(int32 n) cil managed { .maxstack 8 @@ -1970,8 +1918,7 @@ IL_0004: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -1986,8 +1933,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 { .field static assembly initonly class assembly/'Pipe #6 input at line 59@62-2' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1998,8 +1944,7 @@ IL_0006: ret } - .method public strict virtual instance string - Invoke(int32 n) cil managed + .method public strict virtual instance string Invoke(int32 n) cil managed { .maxstack 8 @@ -2010,8 +1955,7 @@ IL_000d: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2049,8 +1993,7 @@ IL_0014: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> - Invoke(int32 _arg2) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> Invoke(int32 _arg2) cil managed { .maxstack 7 @@ -2078,8 +2021,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2093,8 +2035,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> - Invoke(int32 _arg1) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> Invoke(int32 _arg1) cil managed { .maxstack 8 @@ -2124,8 +2065,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,bool> { .field static assembly initonly class assembly/'Pipe #7 input at line 71@74-2' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2136,8 +2076,7 @@ IL_0006: ret } - .method public strict virtual instance bool - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance bool Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 6 @@ -2155,8 +2094,7 @@ IL_0012: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2171,8 +2109,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,class [runtime]System.Tuple`2> { .field static assembly initonly class assembly/'Pipe #7 input at line 71@75-3' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2183,8 +2120,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Tuple`2 - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance class [runtime]System.Tuple`2 Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 6 @@ -2203,8 +2139,7 @@ IL_0015: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2242,8 +2177,7 @@ IL_0014: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> - Invoke(class [Utils]Utils/Order _arg2) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> Invoke(class [Utils]Utils/Order _arg2) cil managed { .maxstack 7 @@ -2271,8 +2205,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2286,8 +2219,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> - Invoke(class [Utils]Utils/Customer _arg1) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> Invoke(class [Utils]Utils/Customer _arg1) cil managed { .maxstack 8 @@ -2318,8 +2250,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,bool> { .field static assembly initonly class assembly/'Pipe #8 input at line 81@84-2' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2330,8 +2261,7 @@ IL_0006: ret } - .method public strict virtual instance bool - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance bool Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 10 @@ -2360,8 +2290,7 @@ IL_0027: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2376,8 +2305,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,class [runtime]System.Tuple`3> { .field static assembly initonly class assembly/'Pipe #8 input at line 81@85-3' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2388,8 +2316,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Tuple`3 - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance class [runtime]System.Tuple`3 Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 7 @@ -2413,8 +2340,7 @@ IL_0025: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2452,8 +2378,7 @@ IL_0014: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> - Invoke(class [Utils]Utils/Order _arg2) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> Invoke(class [Utils]Utils/Order _arg2) cil managed { .maxstack 7 @@ -2481,8 +2406,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2496,8 +2420,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> - Invoke(class [Utils]Utils/Customer _arg1) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> Invoke(class [Utils]Utils/Customer _arg1) cil managed { .maxstack 8 @@ -2528,8 +2451,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,bool> { .field static assembly initonly class assembly/'Pipe #9 input at line 90@93-2' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2540,8 +2462,7 @@ IL_0006: ret } - .method public strict virtual instance bool - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance bool Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 7 @@ -2576,8 +2497,7 @@ IL_002f: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2592,8 +2512,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,class [runtime]System.Tuple`3> { .field static assembly initonly class assembly/'Pipe #9 input at line 90@94-3' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2604,8 +2523,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Tuple`3 - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance class [runtime]System.Tuple`3 Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 7 @@ -2629,8 +2547,7 @@ IL_0025: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2668,8 +2585,7 @@ IL_0014: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> - Invoke(class [Utils]Utils/Order _arg2) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> Invoke(class [Utils]Utils/Order _arg2) cil managed { .maxstack 7 @@ -2697,8 +2613,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2712,8 +2627,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> - Invoke(class [Utils]Utils/Customer _arg1) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> Invoke(class [Utils]Utils/Customer _arg1) cil managed { .maxstack 8 @@ -2744,8 +2658,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,bool> { .field static assembly initonly class assembly/'orders3@102-2' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2756,8 +2669,7 @@ IL_0006: ret } - .method public strict virtual instance bool - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance bool Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 10 @@ -2786,8 +2698,7 @@ IL_0027: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2802,8 +2713,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,class [runtime]System.Tuple`3> { .field static assembly initonly class assembly/'orders3@103-3' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2814,8 +2724,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Tuple`3 - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance class [runtime]System.Tuple`3 Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 7 @@ -2839,8 +2748,7 @@ IL_0025: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2858,8 +2766,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2873,8 +2780,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 - Invoke(class [Utils]Utils/Customer _arg1) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 Invoke(class [Utils]Utils/Customer _arg1) cil managed { .maxstack 6 @@ -2895,8 +2801,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 { .field static assembly initonly class assembly/'orders4@112-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2907,8 +2812,7 @@ IL_0006: ret } - .method public strict virtual instance bool - Invoke(class [Utils]Utils/Customer c) cil managed + .method public strict virtual instance bool Invoke(class [Utils]Utils/Customer c) cil managed { .maxstack 8 @@ -2920,8 +2824,7 @@ IL_0010: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2959,8 +2862,7 @@ IL_0014: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> - Invoke(class [Utils]Utils/Order _arg3) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> Invoke(class [Utils]Utils/Order _arg3) cil managed { .maxstack 7 @@ -2988,8 +2890,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -3003,8 +2904,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> - Invoke(class [Utils]Utils/Customer _arg2) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> Invoke(class [Utils]Utils/Customer _arg2) cil managed { .maxstack 8 @@ -3035,8 +2935,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,bool> { .field static assembly initonly class assembly/'orders4@114-4' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -3047,8 +2946,7 @@ IL_0006: ret } - .method public strict virtual instance bool - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance bool Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 6 @@ -3078,8 +2976,7 @@ IL_0028: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -3094,8 +2991,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,class [runtime]System.Tuple`2> { .field static assembly initonly class assembly/'orders4@115-5' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -3106,8 +3002,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Tuple`2 - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance class [runtime]System.Tuple`2 Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 6 @@ -3128,8 +3023,7 @@ IL_001f: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -3140,8 +3034,7 @@ } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_numbers() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_numbers() cil managed { .maxstack 8 @@ -3149,8 +3042,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_numsPlusOne() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_numsPlusOne() cil managed { .maxstack 8 @@ -3158,8 +3050,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_products() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_products() cil managed { .maxstack 8 @@ -3167,8 +3058,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Collections.Generic.IEnumerable`1 - get_productNames() cil managed + .method public specialname static class [runtime]System.Collections.Generic.IEnumerable`1 get_productNames() cil managed { .maxstack 8 @@ -3176,8 +3066,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_strings() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_strings() cil managed { .maxstack 8 @@ -3185,8 +3074,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_textNums() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_textNums() cil managed { .maxstack 8 @@ -3194,8 +3082,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_words() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_words() cil managed { .maxstack 8 @@ -3203,8 +3090,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Tuple`2[] - get_upperLowerWords() cil managed + .method public specialname static class [runtime]System.Tuple`2[] get_upperLowerWords() cil managed { .maxstack 8 @@ -3212,8 +3098,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1> - get_digitOddEvens() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1> get_digitOddEvens() cil managed { .maxstack 8 @@ -3221,8 +3106,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Tuple`3[] - get_productInfos() cil managed + .method public specialname static class [runtime]System.Tuple`3[] get_productInfos() cil managed { .maxstack 8 @@ -3230,8 +3114,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_digits() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_digits() cil managed { .maxstack 8 @@ -3239,8 +3122,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_lowNums() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_lowNums() cil managed { .maxstack 8 @@ -3248,8 +3130,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_numbersA() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_numbersA() cil managed { .maxstack 8 @@ -3257,8 +3138,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_numbersB() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_numbersB() cil managed { .maxstack 8 @@ -3266,8 +3146,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Tuple`2[] - get_pairs() cil managed + .method public specialname static class [runtime]System.Tuple`2[] get_pairs() cil managed { .maxstack 8 @@ -3275,8 +3154,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_customers() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_customers() cil managed { .maxstack 8 @@ -3284,8 +3162,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Tuple`3[] - get_orders() cil managed + .method public specialname static class [runtime]System.Tuple`3[] get_orders() cil managed { .maxstack 8 @@ -3293,8 +3170,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Tuple`3[] - get_orders2() cil managed + .method public specialname static class [runtime]System.Tuple`3[] get_orders2() cil managed { .maxstack 8 @@ -3302,8 +3178,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Collections.Generic.IEnumerable`1> - get_orders3() cil managed + .method public specialname static class [runtime]System.Collections.Generic.IEnumerable`1> get_orders3() cil managed { .maxstack 8 @@ -3311,8 +3186,7 @@ IL_0005: ret } - .method public specialname static valuetype [runtime]System.DateTime - get_cutOffDate() cil managed + .method public specialname static valuetype [runtime]System.DateTime get_cutOffDate() cil managed { .maxstack 8 @@ -3320,8 +3194,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Collections.Generic.IEnumerable`1> - get_orders4() cil managed + .method public specialname static class [runtime]System.Collections.Generic.IEnumerable`1> get_orders4() cil managed { .maxstack 8 @@ -3773,7 +3646,7 @@ IL_0243: ldloc.s V_34 IL_0245: ldloc.s V_35 IL_0247: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() - IL_024c: callvirt instance bool class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Equals(object, + IL_024c: callvirt instance bool class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Equals(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, class [runtime]System.Collections.IEqualityComparer) IL_0251: ldc.i4.0 IL_0252: ceq diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOff.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOff.il.netcore.debug.bsl index c53a98659d0..f98f9bb3ec1 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOff.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOff.il.netcore.debug.bsl @@ -56,8 +56,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> { .field static assembly initonly class assembly/'Pipe #1 input at line 11@12-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -68,8 +67,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 - Invoke(int32 _arg1) cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 Invoke(int32 _arg1) cil managed { .maxstack 5 @@ -82,8 +80,7 @@ IL_000a: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -131,8 +128,7 @@ IL_001b: ret } - .method public strict virtual instance int32 - GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1& next) cil managed + .method public strict virtual instance int32 GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1& next) cil managed { .maxstack 7 @@ -209,8 +205,7 @@ IL_009c: ret } - .method public strict virtual instance void - Close() cil managed + .method public strict virtual instance void Close() cil managed { .maxstack 6 @@ -291,8 +286,7 @@ IL_007b: ret } - .method public strict virtual instance bool - get_CheckClose() cil managed + .method public strict virtual instance bool get_CheckClose() cil managed { .maxstack 8 @@ -328,8 +322,7 @@ IL_002f: ret } - .method public strict virtual instance int32 - get_LastGenerated() cil managed + .method public strict virtual instance int32 get_LastGenerated() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -340,8 +333,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1 - GetFreshEnumerator() cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1 GetFreshEnumerator() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -362,8 +354,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> { .field static assembly initonly class assembly/'productNames@21-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -374,8 +365,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 - Invoke(class [Utils]Utils/Product _arg1) cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 Invoke(class [Utils]Utils/Product _arg1) cil managed { .maxstack 5 @@ -388,8 +378,7 @@ IL_000a: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -437,8 +426,7 @@ IL_001b: ret } - .method public strict virtual instance int32 - GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1& next) cil managed + .method public strict virtual instance int32 GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1& next) cil managed { .maxstack 7 @@ -514,8 +502,7 @@ IL_009f: ret } - .method public strict virtual instance void - Close() cil managed + .method public strict virtual instance void Close() cil managed { .maxstack 6 @@ -596,8 +583,7 @@ IL_007b: ret } - .method public strict virtual instance bool - get_CheckClose() cil managed + .method public strict virtual instance bool get_CheckClose() cil managed { .maxstack 8 @@ -633,8 +619,7 @@ IL_002f: ret } - .method public strict virtual instance string - get_LastGenerated() cil managed + .method public strict virtual instance string get_LastGenerated() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -645,8 +630,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1 - GetFreshEnumerator() cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1 GetFreshEnumerator() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -667,8 +651,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> { .field static assembly initonly class assembly/'Pipe #2 input at line 28@29-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -679,8 +662,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 - Invoke(int32 _arg1) cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 Invoke(int32 _arg1) cil managed { .maxstack 5 @@ -693,8 +675,7 @@ IL_000a: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -742,8 +723,7 @@ IL_001b: ret } - .method public strict virtual instance int32 - GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1& next) cil managed + .method public strict virtual instance int32 GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1& next) cil managed { .maxstack 7 @@ -820,8 +800,7 @@ IL_00a4: ret } - .method public strict virtual instance void - Close() cil managed + .method public strict virtual instance void Close() cil managed { .maxstack 6 @@ -902,8 +881,7 @@ IL_007b: ret } - .method public strict virtual instance bool - get_CheckClose() cil managed + .method public strict virtual instance bool get_CheckClose() cil managed { .maxstack 8 @@ -939,8 +917,7 @@ IL_002f: ret } - .method public strict virtual instance string - get_LastGenerated() cil managed + .method public strict virtual instance string get_LastGenerated() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -951,8 +928,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1 - GetFreshEnumerator() cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1 GetFreshEnumerator() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -973,8 +949,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> { .field static assembly initonly class assembly/'Pipe #3 input at line 37@38-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -985,8 +960,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 - Invoke(string _arg1) cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 Invoke(string _arg1) cil managed { .maxstack 5 @@ -999,8 +973,7 @@ IL_000a: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -1048,8 +1021,7 @@ IL_001b: ret } - .method public strict virtual instance int32 - GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1>& next) cil managed + .method public strict virtual instance int32 GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1>& next) cil managed { .maxstack 7 @@ -1129,8 +1101,7 @@ IL_00ad: ret } - .method public strict virtual instance void - Close() cil managed + .method public strict virtual instance void Close() cil managed { .maxstack 6 @@ -1211,8 +1182,7 @@ IL_007b: ret } - .method public strict virtual instance bool - get_CheckClose() cil managed + .method public strict virtual instance bool get_CheckClose() cil managed { .maxstack 8 @@ -1248,8 +1218,7 @@ IL_002f: ret } - .method public strict virtual instance class [runtime]System.Tuple`2 - get_LastGenerated() cil managed + .method public strict virtual instance class [runtime]System.Tuple`2 get_LastGenerated() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1260,8 +1229,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1> - GetFreshEnumerator() cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1> GetFreshEnumerator() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1282,8 +1250,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> { .field static assembly initonly class assembly/'Pipe #4 input at line 44@45-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1294,8 +1261,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 - Invoke(int32 _arg1) cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 Invoke(int32 _arg1) cil managed { .maxstack 5 @@ -1308,8 +1274,7 @@ IL_000a: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -1357,8 +1322,7 @@ IL_001b: ret } - .method public strict virtual instance int32 - GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1>& next) cil managed + .method public strict virtual instance int32 GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1>& next) cil managed { .maxstack 8 @@ -1442,8 +1406,7 @@ IL_00b2: ret } - .method public strict virtual instance void - Close() cil managed + .method public strict virtual instance void Close() cil managed { .maxstack 6 @@ -1524,8 +1487,7 @@ IL_007b: ret } - .method public strict virtual instance bool - get_CheckClose() cil managed + .method public strict virtual instance bool get_CheckClose() cil managed { .maxstack 8 @@ -1561,8 +1523,7 @@ IL_002f: ret } - .method public strict virtual instance class [runtime]System.Tuple`2 - get_LastGenerated() cil managed + .method public strict virtual instance class [runtime]System.Tuple`2 get_LastGenerated() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1573,8 +1534,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1> - GetFreshEnumerator() cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1> GetFreshEnumerator() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1595,8 +1555,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> { .field static assembly initonly class assembly/'Pipe #5 input at line 51@52-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1607,8 +1566,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 - Invoke(class [Utils]Utils/Product _arg1) cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 Invoke(class [Utils]Utils/Product _arg1) cil managed { .maxstack 5 @@ -1621,8 +1579,7 @@ IL_000a: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -1670,8 +1627,7 @@ IL_001b: ret } - .method public strict virtual instance int32 - GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1>& next) cil managed + .method public strict virtual instance int32 GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1>& next) cil managed { .maxstack 8 @@ -1754,8 +1710,7 @@ IL_00b3: ret } - .method public strict virtual instance void - Close() cil managed + .method public strict virtual instance void Close() cil managed { .maxstack 6 @@ -1836,8 +1791,7 @@ IL_007b: ret } - .method public strict virtual instance bool - get_CheckClose() cil managed + .method public strict virtual instance bool get_CheckClose() cil managed { .maxstack 8 @@ -1873,8 +1827,7 @@ IL_002f: ret } - .method public strict virtual instance class [runtime]System.Tuple`3 - get_LastGenerated() cil managed + .method public strict virtual instance class [runtime]System.Tuple`3 get_LastGenerated() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1885,8 +1838,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1> - GetFreshEnumerator() cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1> GetFreshEnumerator() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1910,8 +1862,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1925,8 +1876,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 - Invoke(int32 _arg1) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 Invoke(int32 _arg1) cil managed { .maxstack 6 @@ -1947,8 +1897,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 { .field static assembly initonly class assembly/'Pipe #6 input at line 59@61-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1959,8 +1908,7 @@ IL_0006: ret } - .method public strict virtual instance bool - Invoke(int32 n) cil managed + .method public strict virtual instance bool Invoke(int32 n) cil managed { .maxstack 8 @@ -1970,8 +1918,7 @@ IL_0004: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -1986,8 +1933,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 { .field static assembly initonly class assembly/'Pipe #6 input at line 59@62-2' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1998,8 +1944,7 @@ IL_0006: ret } - .method public strict virtual instance string - Invoke(int32 n) cil managed + .method public strict virtual instance string Invoke(int32 n) cil managed { .maxstack 8 @@ -2010,8 +1955,7 @@ IL_000d: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2049,8 +1993,7 @@ IL_0014: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> - Invoke(int32 _arg2) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> Invoke(int32 _arg2) cil managed { .maxstack 7 @@ -2078,8 +2021,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2093,8 +2035,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> - Invoke(int32 _arg1) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> Invoke(int32 _arg1) cil managed { .maxstack 8 @@ -2124,8 +2065,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,bool> { .field static assembly initonly class assembly/'Pipe #7 input at line 71@74-2' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2136,8 +2076,7 @@ IL_0006: ret } - .method public strict virtual instance bool - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance bool Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 6 @@ -2155,8 +2094,7 @@ IL_0012: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2171,8 +2109,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,class [runtime]System.Tuple`2> { .field static assembly initonly class assembly/'Pipe #7 input at line 71@75-3' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2183,8 +2120,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Tuple`2 - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance class [runtime]System.Tuple`2 Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 6 @@ -2203,8 +2139,7 @@ IL_0015: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2242,8 +2177,7 @@ IL_0014: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> - Invoke(class [Utils]Utils/Order _arg2) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> Invoke(class [Utils]Utils/Order _arg2) cil managed { .maxstack 7 @@ -2271,8 +2205,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2286,8 +2219,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> - Invoke(class [Utils]Utils/Customer _arg1) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> Invoke(class [Utils]Utils/Customer _arg1) cil managed { .maxstack 8 @@ -2318,8 +2250,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,bool> { .field static assembly initonly class assembly/'Pipe #8 input at line 81@84-2' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2330,8 +2261,7 @@ IL_0006: ret } - .method public strict virtual instance bool - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance bool Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 10 @@ -2360,8 +2290,7 @@ IL_0027: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2376,8 +2305,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,class [runtime]System.Tuple`3> { .field static assembly initonly class assembly/'Pipe #8 input at line 81@85-3' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2388,8 +2316,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Tuple`3 - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance class [runtime]System.Tuple`3 Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 7 @@ -2413,8 +2340,7 @@ IL_0025: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2452,8 +2378,7 @@ IL_0014: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> - Invoke(class [Utils]Utils/Order _arg2) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> Invoke(class [Utils]Utils/Order _arg2) cil managed { .maxstack 7 @@ -2481,8 +2406,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2496,8 +2420,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> - Invoke(class [Utils]Utils/Customer _arg1) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> Invoke(class [Utils]Utils/Customer _arg1) cil managed { .maxstack 8 @@ -2528,8 +2451,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,bool> { .field static assembly initonly class assembly/'Pipe #9 input at line 90@93-2' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2540,8 +2462,7 @@ IL_0006: ret } - .method public strict virtual instance bool - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance bool Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 7 @@ -2588,8 +2509,7 @@ IL_003f: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2604,8 +2524,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,class [runtime]System.Tuple`3> { .field static assembly initonly class assembly/'Pipe #9 input at line 90@94-3' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2616,8 +2535,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Tuple`3 - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance class [runtime]System.Tuple`3 Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 7 @@ -2641,8 +2559,7 @@ IL_0025: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2680,8 +2597,7 @@ IL_0014: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> - Invoke(class [Utils]Utils/Order _arg2) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> Invoke(class [Utils]Utils/Order _arg2) cil managed { .maxstack 7 @@ -2709,8 +2625,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2724,8 +2639,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> - Invoke(class [Utils]Utils/Customer _arg1) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> Invoke(class [Utils]Utils/Customer _arg1) cil managed { .maxstack 8 @@ -2756,8 +2670,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,bool> { .field static assembly initonly class assembly/'orders3@102-2' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2768,8 +2681,7 @@ IL_0006: ret } - .method public strict virtual instance bool - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance bool Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 10 @@ -2798,8 +2710,7 @@ IL_0027: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2814,8 +2725,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,class [runtime]System.Tuple`3> { .field static assembly initonly class assembly/'orders3@103-3' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2826,8 +2736,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Tuple`3 - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance class [runtime]System.Tuple`3 Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 7 @@ -2851,8 +2760,7 @@ IL_0025: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2870,8 +2778,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2885,8 +2792,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 - Invoke(class [Utils]Utils/Customer _arg1) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 Invoke(class [Utils]Utils/Customer _arg1) cil managed { .maxstack 6 @@ -2907,8 +2813,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 { .field static assembly initonly class assembly/'orders4@112-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2919,8 +2824,7 @@ IL_0006: ret } - .method public strict virtual instance bool - Invoke(class [Utils]Utils/Customer c) cil managed + .method public strict virtual instance bool Invoke(class [Utils]Utils/Customer c) cil managed { .maxstack 8 @@ -2932,8 +2836,7 @@ IL_0010: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2971,8 +2874,7 @@ IL_0014: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> - Invoke(class [Utils]Utils/Order _arg3) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> Invoke(class [Utils]Utils/Order _arg3) cil managed { .maxstack 7 @@ -3000,8 +2902,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -3015,8 +2916,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> - Invoke(class [Utils]Utils/Customer _arg2) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> Invoke(class [Utils]Utils/Customer _arg2) cil managed { .maxstack 8 @@ -3047,8 +2947,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,bool> { .field static assembly initonly class assembly/'orders4@114-4' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -3059,8 +2958,7 @@ IL_0006: ret } - .method public strict virtual instance bool - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance bool Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 6 @@ -3102,8 +3000,7 @@ IL_0038: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -3118,8 +3015,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,class [runtime]System.Tuple`2> { .field static assembly initonly class assembly/'orders4@115-5' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -3130,8 +3026,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Tuple`2 - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance class [runtime]System.Tuple`2 Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 6 @@ -3152,8 +3047,7 @@ IL_001f: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -3164,8 +3058,7 @@ } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_numbers() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_numbers() cil managed { .maxstack 8 @@ -3173,8 +3066,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_numsPlusOne() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_numsPlusOne() cil managed { .maxstack 8 @@ -3182,8 +3074,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_products() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_products() cil managed { .maxstack 8 @@ -3191,8 +3082,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Collections.Generic.IEnumerable`1 - get_productNames() cil managed + .method public specialname static class [runtime]System.Collections.Generic.IEnumerable`1 get_productNames() cil managed { .maxstack 8 @@ -3200,8 +3090,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_strings() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_strings() cil managed { .maxstack 8 @@ -3209,8 +3098,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_textNums() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_textNums() cil managed { .maxstack 8 @@ -3218,8 +3106,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_words() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_words() cil managed { .maxstack 8 @@ -3227,8 +3114,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Tuple`2[] - get_upperLowerWords() cil managed + .method public specialname static class [runtime]System.Tuple`2[] get_upperLowerWords() cil managed { .maxstack 8 @@ -3236,8 +3122,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1> - get_digitOddEvens() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1> get_digitOddEvens() cil managed { .maxstack 8 @@ -3245,8 +3130,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Tuple`3[] - get_productInfos() cil managed + .method public specialname static class [runtime]System.Tuple`3[] get_productInfos() cil managed { .maxstack 8 @@ -3254,8 +3138,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_digits() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_digits() cil managed { .maxstack 8 @@ -3263,8 +3146,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_lowNums() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_lowNums() cil managed { .maxstack 8 @@ -3272,8 +3154,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_numbersA() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_numbersA() cil managed { .maxstack 8 @@ -3281,8 +3162,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_numbersB() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_numbersB() cil managed { .maxstack 8 @@ -3290,8 +3170,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Tuple`2[] - get_pairs() cil managed + .method public specialname static class [runtime]System.Tuple`2[] get_pairs() cil managed { .maxstack 8 @@ -3299,8 +3178,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_customers() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_customers() cil managed { .maxstack 8 @@ -3308,8 +3186,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Tuple`3[] - get_orders() cil managed + .method public specialname static class [runtime]System.Tuple`3[] get_orders() cil managed { .maxstack 8 @@ -3317,8 +3194,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Tuple`3[] - get_orders2() cil managed + .method public specialname static class [runtime]System.Tuple`3[] get_orders2() cil managed { .maxstack 8 @@ -3326,8 +3202,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Collections.Generic.IEnumerable`1> - get_orders3() cil managed + .method public specialname static class [runtime]System.Collections.Generic.IEnumerable`1> get_orders3() cil managed { .maxstack 8 @@ -3335,8 +3210,7 @@ IL_0005: ret } - .method public specialname static valuetype [runtime]System.DateTime - get_cutOffDate() cil managed + .method public specialname static valuetype [runtime]System.DateTime get_cutOffDate() cil managed { .maxstack 8 @@ -3344,8 +3218,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Collections.Generic.IEnumerable`1> - get_orders4() cil managed + .method public specialname static class [runtime]System.Collections.Generic.IEnumerable`1> get_orders4() cil managed { .maxstack 8 @@ -3809,7 +3682,7 @@ IL_0253: ldloc.s V_38 IL_0255: ldloc.s V_39 IL_0257: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() - IL_025c: callvirt instance bool class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Equals(object, + IL_025c: callvirt instance bool class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Equals(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, class [runtime]System.Collections.IEqualityComparer) IL_0261: ldc.i4.0 IL_0262: ceq diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOff.il.netcore.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOff.il.netcore.release.bsl index 518ae3c438d..a3258e172d0 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOff.il.netcore.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOff.il.netcore.release.bsl @@ -56,8 +56,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> { .field static assembly initonly class assembly/'Pipe #1 input at line 11@12-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -68,8 +67,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 - Invoke(int32 _arg1) cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 Invoke(int32 _arg1) cil managed { .maxstack 5 @@ -82,8 +80,7 @@ IL_000a: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -131,8 +128,7 @@ IL_001b: ret } - .method public strict virtual instance int32 - GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1& next) cil managed + .method public strict virtual instance int32 GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1& next) cil managed { .maxstack 7 @@ -209,8 +205,7 @@ IL_009c: ret } - .method public strict virtual instance void - Close() cil managed + .method public strict virtual instance void Close() cil managed { .maxstack 6 @@ -291,8 +286,7 @@ IL_007b: ret } - .method public strict virtual instance bool - get_CheckClose() cil managed + .method public strict virtual instance bool get_CheckClose() cil managed { .maxstack 8 @@ -328,8 +322,7 @@ IL_002f: ret } - .method public strict virtual instance int32 - get_LastGenerated() cil managed + .method public strict virtual instance int32 get_LastGenerated() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -340,8 +333,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1 - GetFreshEnumerator() cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1 GetFreshEnumerator() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -362,8 +354,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> { .field static assembly initonly class assembly/'productNames@21-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -374,8 +365,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 - Invoke(class [Utils]Utils/Product _arg1) cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 Invoke(class [Utils]Utils/Product _arg1) cil managed { .maxstack 5 @@ -388,8 +378,7 @@ IL_000a: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -437,8 +426,7 @@ IL_001b: ret } - .method public strict virtual instance int32 - GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1& next) cil managed + .method public strict virtual instance int32 GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1& next) cil managed { .maxstack 7 @@ -514,8 +502,7 @@ IL_009f: ret } - .method public strict virtual instance void - Close() cil managed + .method public strict virtual instance void Close() cil managed { .maxstack 6 @@ -596,8 +583,7 @@ IL_007b: ret } - .method public strict virtual instance bool - get_CheckClose() cil managed + .method public strict virtual instance bool get_CheckClose() cil managed { .maxstack 8 @@ -633,8 +619,7 @@ IL_002f: ret } - .method public strict virtual instance string - get_LastGenerated() cil managed + .method public strict virtual instance string get_LastGenerated() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -645,8 +630,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1 - GetFreshEnumerator() cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1 GetFreshEnumerator() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -667,8 +651,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> { .field static assembly initonly class assembly/'Pipe #2 input at line 28@29-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -679,8 +662,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 - Invoke(int32 _arg1) cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 Invoke(int32 _arg1) cil managed { .maxstack 5 @@ -693,8 +675,7 @@ IL_000a: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -742,8 +723,7 @@ IL_001b: ret } - .method public strict virtual instance int32 - GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1& next) cil managed + .method public strict virtual instance int32 GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1& next) cil managed { .maxstack 7 @@ -820,8 +800,7 @@ IL_00a4: ret } - .method public strict virtual instance void - Close() cil managed + .method public strict virtual instance void Close() cil managed { .maxstack 6 @@ -902,8 +881,7 @@ IL_007b: ret } - .method public strict virtual instance bool - get_CheckClose() cil managed + .method public strict virtual instance bool get_CheckClose() cil managed { .maxstack 8 @@ -939,8 +917,7 @@ IL_002f: ret } - .method public strict virtual instance string - get_LastGenerated() cil managed + .method public strict virtual instance string get_LastGenerated() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -951,8 +928,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1 - GetFreshEnumerator() cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1 GetFreshEnumerator() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -973,8 +949,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> { .field static assembly initonly class assembly/'Pipe #3 input at line 37@38-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -985,8 +960,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 - Invoke(string _arg1) cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 Invoke(string _arg1) cil managed { .maxstack 5 @@ -999,8 +973,7 @@ IL_000a: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -1048,8 +1021,7 @@ IL_001b: ret } - .method public strict virtual instance int32 - GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1>& next) cil managed + .method public strict virtual instance int32 GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1>& next) cil managed { .maxstack 7 @@ -1129,8 +1101,7 @@ IL_00ad: ret } - .method public strict virtual instance void - Close() cil managed + .method public strict virtual instance void Close() cil managed { .maxstack 6 @@ -1211,8 +1182,7 @@ IL_007b: ret } - .method public strict virtual instance bool - get_CheckClose() cil managed + .method public strict virtual instance bool get_CheckClose() cil managed { .maxstack 8 @@ -1248,8 +1218,7 @@ IL_002f: ret } - .method public strict virtual instance class [runtime]System.Tuple`2 - get_LastGenerated() cil managed + .method public strict virtual instance class [runtime]System.Tuple`2 get_LastGenerated() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1260,8 +1229,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1> - GetFreshEnumerator() cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1> GetFreshEnumerator() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1282,8 +1250,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> { .field static assembly initonly class assembly/'Pipe #4 input at line 44@45-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1294,8 +1261,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 - Invoke(int32 _arg1) cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 Invoke(int32 _arg1) cil managed { .maxstack 5 @@ -1308,8 +1274,7 @@ IL_000a: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -1357,8 +1322,7 @@ IL_001b: ret } - .method public strict virtual instance int32 - GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1>& next) cil managed + .method public strict virtual instance int32 GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1>& next) cil managed { .maxstack 8 @@ -1442,8 +1406,7 @@ IL_00b2: ret } - .method public strict virtual instance void - Close() cil managed + .method public strict virtual instance void Close() cil managed { .maxstack 6 @@ -1524,8 +1487,7 @@ IL_007b: ret } - .method public strict virtual instance bool - get_CheckClose() cil managed + .method public strict virtual instance bool get_CheckClose() cil managed { .maxstack 8 @@ -1561,8 +1523,7 @@ IL_002f: ret } - .method public strict virtual instance class [runtime]System.Tuple`2 - get_LastGenerated() cil managed + .method public strict virtual instance class [runtime]System.Tuple`2 get_LastGenerated() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1573,8 +1534,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1> - GetFreshEnumerator() cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1> GetFreshEnumerator() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1595,8 +1555,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> { .field static assembly initonly class assembly/'Pipe #5 input at line 51@52-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1607,8 +1566,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 - Invoke(class [Utils]Utils/Product _arg1) cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerable`1 Invoke(class [Utils]Utils/Product _arg1) cil managed { .maxstack 5 @@ -1621,8 +1579,7 @@ IL_000a: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -1670,8 +1627,7 @@ IL_001b: ret } - .method public strict virtual instance int32 - GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1>& next) cil managed + .method public strict virtual instance int32 GenerateNext(class [runtime]System.Collections.Generic.IEnumerable`1>& next) cil managed { .maxstack 8 @@ -1754,8 +1710,7 @@ IL_00b3: ret } - .method public strict virtual instance void - Close() cil managed + .method public strict virtual instance void Close() cil managed { .maxstack 6 @@ -1836,8 +1791,7 @@ IL_007b: ret } - .method public strict virtual instance bool - get_CheckClose() cil managed + .method public strict virtual instance bool get_CheckClose() cil managed { .maxstack 8 @@ -1873,8 +1827,7 @@ IL_002f: ret } - .method public strict virtual instance class [runtime]System.Tuple`3 - get_LastGenerated() cil managed + .method public strict virtual instance class [runtime]System.Tuple`3 get_LastGenerated() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1885,8 +1838,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1> - GetFreshEnumerator() cil managed + .method public strict virtual instance class [runtime]System.Collections.Generic.IEnumerator`1> GetFreshEnumerator() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1910,8 +1862,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1925,8 +1876,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 - Invoke(int32 _arg1) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 Invoke(int32 _arg1) cil managed { .maxstack 6 @@ -1947,8 +1897,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 { .field static assembly initonly class assembly/'Pipe #6 input at line 59@61-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1959,8 +1908,7 @@ IL_0006: ret } - .method public strict virtual instance bool - Invoke(int32 n) cil managed + .method public strict virtual instance bool Invoke(int32 n) cil managed { .maxstack 8 @@ -1970,8 +1918,7 @@ IL_0004: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -1986,8 +1933,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 { .field static assembly initonly class assembly/'Pipe #6 input at line 59@62-2' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1998,8 +1944,7 @@ IL_0006: ret } - .method public strict virtual instance string - Invoke(int32 n) cil managed + .method public strict virtual instance string Invoke(int32 n) cil managed { .maxstack 8 @@ -2010,8 +1955,7 @@ IL_000d: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2049,8 +1993,7 @@ IL_0014: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> - Invoke(int32 _arg2) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> Invoke(int32 _arg2) cil managed { .maxstack 7 @@ -2078,8 +2021,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2093,8 +2035,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> - Invoke(int32 _arg1) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> Invoke(int32 _arg1) cil managed { .maxstack 8 @@ -2124,8 +2065,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,bool> { .field static assembly initonly class assembly/'Pipe #7 input at line 71@74-2' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2136,8 +2076,7 @@ IL_0006: ret } - .method public strict virtual instance bool - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance bool Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 6 @@ -2155,8 +2094,7 @@ IL_0012: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2171,8 +2109,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,class [runtime]System.Tuple`2> { .field static assembly initonly class assembly/'Pipe #7 input at line 71@75-3' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2183,8 +2120,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Tuple`2 - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance class [runtime]System.Tuple`2 Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 6 @@ -2203,8 +2139,7 @@ IL_0015: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2242,8 +2177,7 @@ IL_0014: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> - Invoke(class [Utils]Utils/Order _arg2) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> Invoke(class [Utils]Utils/Order _arg2) cil managed { .maxstack 7 @@ -2271,8 +2205,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2286,8 +2219,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> - Invoke(class [Utils]Utils/Customer _arg1) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> Invoke(class [Utils]Utils/Customer _arg1) cil managed { .maxstack 8 @@ -2318,8 +2250,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,bool> { .field static assembly initonly class assembly/'Pipe #8 input at line 81@84-2' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2330,8 +2261,7 @@ IL_0006: ret } - .method public strict virtual instance bool - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance bool Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 10 @@ -2360,8 +2290,7 @@ IL_0027: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2376,8 +2305,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,class [runtime]System.Tuple`3> { .field static assembly initonly class assembly/'Pipe #8 input at line 81@85-3' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2388,8 +2316,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Tuple`3 - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance class [runtime]System.Tuple`3 Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 7 @@ -2413,8 +2340,7 @@ IL_0025: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2452,8 +2378,7 @@ IL_0014: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> - Invoke(class [Utils]Utils/Order _arg2) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> Invoke(class [Utils]Utils/Order _arg2) cil managed { .maxstack 7 @@ -2481,8 +2406,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2496,8 +2420,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> - Invoke(class [Utils]Utils/Customer _arg1) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> Invoke(class [Utils]Utils/Customer _arg1) cil managed { .maxstack 8 @@ -2528,8 +2451,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,bool> { .field static assembly initonly class assembly/'Pipe #9 input at line 90@93-2' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2540,8 +2462,7 @@ IL_0006: ret } - .method public strict virtual instance bool - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance bool Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 7 @@ -2576,8 +2497,7 @@ IL_002f: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2592,8 +2512,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,class [runtime]System.Tuple`3> { .field static assembly initonly class assembly/'Pipe #9 input at line 90@94-3' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2604,8 +2523,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Tuple`3 - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance class [runtime]System.Tuple`3 Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 7 @@ -2629,8 +2547,7 @@ IL_0025: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2668,8 +2585,7 @@ IL_0014: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> - Invoke(class [Utils]Utils/Order _arg2) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> Invoke(class [Utils]Utils/Order _arg2) cil managed { .maxstack 7 @@ -2697,8 +2613,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2712,8 +2627,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> - Invoke(class [Utils]Utils/Customer _arg1) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> Invoke(class [Utils]Utils/Customer _arg1) cil managed { .maxstack 8 @@ -2744,8 +2658,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,bool> { .field static assembly initonly class assembly/'orders3@102-2' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2756,8 +2669,7 @@ IL_0006: ret } - .method public strict virtual instance bool - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance bool Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 10 @@ -2786,8 +2698,7 @@ IL_0027: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2802,8 +2713,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,class [runtime]System.Tuple`3> { .field static assembly initonly class assembly/'orders3@103-3' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2814,8 +2724,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Tuple`3 - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance class [runtime]System.Tuple`3 Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 7 @@ -2839,8 +2748,7 @@ IL_0025: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2858,8 +2766,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2873,8 +2780,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 - Invoke(class [Utils]Utils/Customer _arg1) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 Invoke(class [Utils]Utils/Customer _arg1) cil managed { .maxstack 6 @@ -2895,8 +2801,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 { .field static assembly initonly class assembly/'orders4@112-1' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2907,8 +2812,7 @@ IL_0006: ret } - .method public strict virtual instance bool - Invoke(class [Utils]Utils/Customer c) cil managed + .method public strict virtual instance bool Invoke(class [Utils]Utils/Customer c) cil managed { .maxstack 8 @@ -2920,8 +2824,7 @@ IL_0010: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -2959,8 +2862,7 @@ IL_0014: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> - Invoke(class [Utils]Utils/Order _arg3) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,object> Invoke(class [Utils]Utils/Order _arg3) cil managed { .maxstack 7 @@ -2988,8 +2890,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder builder@) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -3003,8 +2904,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> - Invoke(class [Utils]Utils/Customer _arg2) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [runtime]System.Collections.IEnumerable> Invoke(class [Utils]Utils/Customer _arg2) cil managed { .maxstack 8 @@ -3035,8 +2935,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,bool> { .field static assembly initonly class assembly/'orders4@114-4' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -3047,8 +2946,7 @@ IL_0006: ret } - .method public strict virtual instance bool - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance bool Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 6 @@ -3078,8 +2976,7 @@ IL_0028: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -3094,8 +2991,7 @@ extends class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2,class [runtime]System.Tuple`2> { .field static assembly initonly class assembly/'orders4@115-5' @_instance - .method assembly specialname rtspecialname - instance void .ctor() cil managed + .method assembly specialname rtspecialname instance void .ctor() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -3106,8 +3002,7 @@ IL_0006: ret } - .method public strict virtual instance class [runtime]System.Tuple`2 - Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed + .method public strict virtual instance class [runtime]System.Tuple`2 Invoke(class [runtime]System.Tuple`2 tupledArg) cil managed { .maxstack 6 @@ -3128,8 +3023,7 @@ IL_001f: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 10 @@ -3140,8 +3034,7 @@ } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_numbers() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_numbers() cil managed { .maxstack 8 @@ -3149,8 +3042,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_numsPlusOne() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_numsPlusOne() cil managed { .maxstack 8 @@ -3158,8 +3050,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_products() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_products() cil managed { .maxstack 8 @@ -3167,8 +3058,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Collections.Generic.IEnumerable`1 - get_productNames() cil managed + .method public specialname static class [runtime]System.Collections.Generic.IEnumerable`1 get_productNames() cil managed { .maxstack 8 @@ -3176,8 +3066,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_strings() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_strings() cil managed { .maxstack 8 @@ -3185,8 +3074,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_textNums() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_textNums() cil managed { .maxstack 8 @@ -3194,8 +3082,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_words() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_words() cil managed { .maxstack 8 @@ -3203,8 +3090,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Tuple`2[] - get_upperLowerWords() cil managed + .method public specialname static class [runtime]System.Tuple`2[] get_upperLowerWords() cil managed { .maxstack 8 @@ -3212,8 +3098,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1> - get_digitOddEvens() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1> get_digitOddEvens() cil managed { .maxstack 8 @@ -3221,8 +3106,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Tuple`3[] - get_productInfos() cil managed + .method public specialname static class [runtime]System.Tuple`3[] get_productInfos() cil managed { .maxstack 8 @@ -3230,8 +3114,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_digits() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_digits() cil managed { .maxstack 8 @@ -3239,8 +3122,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_lowNums() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_lowNums() cil managed { .maxstack 8 @@ -3248,8 +3130,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_numbersA() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_numbersA() cil managed { .maxstack 8 @@ -3257,8 +3138,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_numbersB() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_numbersB() cil managed { .maxstack 8 @@ -3266,8 +3146,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Tuple`2[] - get_pairs() cil managed + .method public specialname static class [runtime]System.Tuple`2[] get_pairs() cil managed { .maxstack 8 @@ -3275,8 +3154,7 @@ IL_0005: ret } - .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - get_customers() cil managed + .method public specialname static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 get_customers() cil managed { .maxstack 8 @@ -3284,8 +3162,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Tuple`3[] - get_orders() cil managed + .method public specialname static class [runtime]System.Tuple`3[] get_orders() cil managed { .maxstack 8 @@ -3293,8 +3170,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Tuple`3[] - get_orders2() cil managed + .method public specialname static class [runtime]System.Tuple`3[] get_orders2() cil managed { .maxstack 8 @@ -3302,8 +3178,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Collections.Generic.IEnumerable`1> - get_orders3() cil managed + .method public specialname static class [runtime]System.Collections.Generic.IEnumerable`1> get_orders3() cil managed { .maxstack 8 @@ -3311,8 +3186,7 @@ IL_0005: ret } - .method public specialname static valuetype [runtime]System.DateTime - get_cutOffDate() cil managed + .method public specialname static valuetype [runtime]System.DateTime get_cutOffDate() cil managed { .maxstack 8 @@ -3320,8 +3194,7 @@ IL_0005: ret } - .method public specialname static class [runtime]System.Collections.Generic.IEnumerable`1> - get_orders4() cil managed + .method public specialname static class [runtime]System.Collections.Generic.IEnumerable`1> get_orders4() cil managed { .maxstack 8 @@ -3773,7 +3646,7 @@ IL_0243: ldloc.s V_34 IL_0245: ldloc.s V_35 IL_0247: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() - IL_024c: callvirt instance bool class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Equals(object, + IL_024c: callvirt instance bool class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Equals(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, class [runtime]System.Collections.IEqualityComparer) IL_0251: ldc.i4.0 IL_0252: ceq diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOn.il.net472.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOn.il.net472.debug.bsl index b51d44ce3a7..ff7beae840f 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOn.il.net472.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOn.il.net472.debug.bsl @@ -3512,7 +3512,7 @@ IL_022d: ldloc.s V_17 IL_022f: ldloc.s V_18 IL_0231: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() - IL_0236: callvirt instance bool class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Equals(object, + IL_0236: callvirt instance bool class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Equals(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, class [runtime]System.Collections.IEqualityComparer) IL_023b: ldc.i4.0 IL_023c: ceq diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOn.il.net472.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOn.il.net472.release.bsl index bc17e422cd1..d48a90e8545 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOn.il.net472.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOn.il.net472.release.bsl @@ -3476,7 +3476,7 @@ IL_021d: ldloc.s V_13 IL_021f: ldloc.s V_14 IL_0221: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() - IL_0226: callvirt instance bool class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Equals(object, + IL_0226: callvirt instance bool class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Equals(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, class [runtime]System.Collections.IEqualityComparer) IL_022b: ldc.i4.0 IL_022c: ceq diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOn.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOn.il.netcore.debug.bsl index 9455d7f1589..874c6413397 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOn.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOn.il.netcore.debug.bsl @@ -3512,7 +3512,7 @@ IL_022d: ldloc.s V_17 IL_022f: ldloc.s V_18 IL_0231: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() - IL_0236: callvirt instance bool class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Equals(object, + IL_0236: callvirt instance bool class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Equals(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, class [runtime]System.Collections.IEqualityComparer) IL_023b: ldc.i4.0 IL_023c: ceq diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOn.il.netcore.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOn.il.netcore.release.bsl index 00e57c54bd9..bf163f0f1e2 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOn.il.netcore.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/QueryExpressionStepping/Linq101Select01.fs.RealInternalSignatureOn.il.netcore.release.bsl @@ -3476,7 +3476,7 @@ IL_021d: ldloc.s V_13 IL_021f: ldloc.s V_14 IL_0221: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() - IL_0226: callvirt instance bool class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Equals(object, + IL_0226: callvirt instance bool class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Equals(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, class [runtime]System.Collections.IEqualityComparer) IL_022b: ldc.i4.0 IL_022c: ceq diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOff.il.net472.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOff.il.net472.debug.bsl index 86cc7e04485..0b0542bcd06 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOff.il.net472.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOff.il.net472.debug.bsl @@ -419,113 +419,119 @@ int32 stop) cil managed { - .maxstack 5 - .locals init (class [runtime]System.Collections.Generic.IEnumerable`1 V_0, - class [runtime]System.Collections.Generic.IEnumerator`1 V_1, + .maxstack 4 + .locals init (uint64 V_0, + uint64 V_1, int32 V_2, - class [runtime]System.IDisposable V_3) + int32 V_3) IL_0000: ldarg.0 - IL_0001: ldc.i4.m1 - IL_0002: ldarg.1 - IL_0003: call class [runtime]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators/OperatorIntrinsics::RangeInt32(int32, - int32, - int32) - IL_0008: stloc.0 - IL_0009: ldloc.0 - IL_000a: callvirt instance class [runtime]System.Collections.Generic.IEnumerator`1 class [runtime]System.Collections.Generic.IEnumerable`1::GetEnumerator() - IL_000f: stloc.1 - .try - { - IL_0010: br.s IL_0029 - - IL_0012: ldloc.1 - IL_0013: callvirt instance !0 class [runtime]System.Collections.Generic.IEnumerator`1::get_Current() - IL_0018: stloc.2 - IL_0019: ldstr "{0}" - IL_001e: ldloc.2 - IL_001f: box [runtime]System.Int32 - IL_0024: call void [runtime]System.Console::WriteLine(string, - object) - IL_0029: ldloc.1 - IL_002a: callvirt instance bool [runtime]System.Collections.IEnumerator::MoveNext() - IL_002f: brtrue.s IL_0012 - - IL_0031: leave.s IL_0045 + IL_0001: ldarg.1 + IL_0002: bge.s IL_0009 + + IL_0004: ldc.i4.0 + IL_0005: conv.i8 + IL_0006: nop + IL_0007: br.s IL_0011 + + IL_0009: ldarg.0 + IL_000a: ldarg.1 + IL_000b: sub + IL_000c: conv.i8 + IL_000d: ldc.i4.1 + IL_000e: conv.i8 + IL_000f: add + IL_0010: nop + IL_0011: stloc.0 + IL_0012: ldc.i4.0 + IL_0013: conv.i8 + IL_0014: stloc.1 + IL_0015: ldarg.0 + IL_0016: stloc.2 + IL_0017: br.s IL_0034 + + IL_0019: ldloc.2 + IL_001a: stloc.3 + IL_001b: ldstr "{0}" + IL_0020: ldloc.3 + IL_0021: box [runtime]System.Int32 + IL_0026: call void [runtime]System.Console::WriteLine(string, + object) + IL_002b: ldloc.2 + IL_002c: ldc.i4.m1 + IL_002d: add + IL_002e: stloc.2 + IL_002f: ldloc.1 + IL_0030: ldc.i4.1 + IL_0031: conv.i8 + IL_0032: add + IL_0033: stloc.1 + IL_0034: ldloc.1 + IL_0035: ldloc.0 + IL_0036: blt.un.s IL_0019 - } - finally - { - IL_0033: ldloc.1 - IL_0034: isinst [runtime]System.IDisposable - IL_0039: stloc.3 - IL_003a: ldloc.3 - IL_003b: brfalse.s IL_0044 - - IL_003d: ldloc.3 - IL_003e: callvirt instance void [runtime]System.IDisposable::Dispose() - IL_0043: endfinally - IL_0044: endfinally - } - IL_0045: ret + IL_0038: ret } .method public static void testSimpleForEachIntRangeLoopDownWithTwoStatements(int32 start, int32 stop) cil managed { - .maxstack 5 - .locals init (class [runtime]System.Collections.Generic.IEnumerable`1 V_0, - class [runtime]System.Collections.Generic.IEnumerator`1 V_1, + .maxstack 4 + .locals init (uint64 V_0, + uint64 V_1, int32 V_2, - class [runtime]System.IDisposable V_3) + int32 V_3) IL_0000: ldarg.0 - IL_0001: ldc.i4.m1 - IL_0002: ldarg.1 - IL_0003: call class [runtime]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators/OperatorIntrinsics::RangeInt32(int32, - int32, - int32) - IL_0008: stloc.0 - IL_0009: ldloc.0 - IL_000a: callvirt instance class [runtime]System.Collections.Generic.IEnumerator`1 class [runtime]System.Collections.Generic.IEnumerable`1::GetEnumerator() - IL_000f: stloc.1 - .try - { - IL_0010: br.s IL_0039 - - IL_0012: ldloc.1 - IL_0013: callvirt instance !0 class [runtime]System.Collections.Generic.IEnumerator`1::get_Current() - IL_0018: stloc.2 - IL_0019: ldstr "{0}" - IL_001e: ldloc.2 - IL_001f: box [runtime]System.Int32 - IL_0024: call void [runtime]System.Console::WriteLine(string, - object) - IL_0029: ldstr "{0}" - IL_002e: ldloc.2 - IL_002f: box [runtime]System.Int32 - IL_0034: call void [runtime]System.Console::WriteLine(string, - object) - IL_0039: ldloc.1 - IL_003a: callvirt instance bool [runtime]System.Collections.IEnumerator::MoveNext() - IL_003f: brtrue.s IL_0012 - - IL_0041: leave.s IL_0055 - - } - finally - { - IL_0043: ldloc.1 - IL_0044: isinst [runtime]System.IDisposable - IL_0049: stloc.3 - IL_004a: ldloc.3 - IL_004b: brfalse.s IL_0054 - - IL_004d: ldloc.3 - IL_004e: callvirt instance void [runtime]System.IDisposable::Dispose() - IL_0053: endfinally - IL_0054: endfinally - } - IL_0055: ret + IL_0001: ldarg.1 + IL_0002: bge.s IL_0009 + + IL_0004: ldc.i4.0 + IL_0005: conv.i8 + IL_0006: nop + IL_0007: br.s IL_0011 + + IL_0009: ldarg.0 + IL_000a: ldarg.1 + IL_000b: sub + IL_000c: conv.i8 + IL_000d: ldc.i4.1 + IL_000e: conv.i8 + IL_000f: add + IL_0010: nop + IL_0011: stloc.0 + IL_0012: ldc.i4.0 + IL_0013: conv.i8 + IL_0014: stloc.1 + IL_0015: ldarg.0 + IL_0016: stloc.2 + IL_0017: br.s IL_0044 + + IL_0019: ldloc.2 + IL_001a: stloc.3 + IL_001b: ldstr "{0}" + IL_0020: ldloc.3 + IL_0021: box [runtime]System.Int32 + IL_0026: call void [runtime]System.Console::WriteLine(string, + object) + IL_002b: ldstr "{0}" + IL_0030: ldloc.3 + IL_0031: box [runtime]System.Int32 + IL_0036: call void [runtime]System.Console::WriteLine(string, + object) + IL_003b: ldloc.2 + IL_003c: ldc.i4.m1 + IL_003d: add + IL_003e: stloc.2 + IL_003f: ldloc.1 + IL_0040: ldc.i4.1 + IL_0041: conv.i8 + IL_0042: add + IL_0043: stloc.1 + IL_0044: ldloc.1 + IL_0045: ldloc.0 + IL_0046: blt.un.s IL_0019 + + IL_0048: ret } .method public static void testSimpleForEachIntLoopWithOneStatement(int32 start, @@ -673,63 +679,45 @@ .method public static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ListExpressionSteppingTest7() cil managed { - .maxstack 5 + .maxstack 4 .locals init (valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1 V_0, - class [runtime]System.Collections.Generic.IEnumerator`1 V_1, - class [runtime]System.Collections.Generic.IEnumerable`1 V_2, - int32 V_3, - class [runtime]System.IDisposable V_4) - IL_0000: nop - IL_0001: ldc.i4.1 - IL_0002: ldc.i4.1 - IL_0003: ldc.i4.4 - IL_0004: call class [runtime]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators/OperatorIntrinsics::RangeInt32(int32, - int32, - int32) - IL_0009: callvirt instance class [runtime]System.Collections.Generic.IEnumerator`1 class [runtime]System.Collections.Generic.IEnumerable`1::GetEnumerator() - IL_000e: stloc.1 - .try - { - IL_000f: br.s IL_0031 - - IL_0011: ldloc.1 - IL_0012: callvirt instance !0 class [runtime]System.Collections.Generic.IEnumerator`1::get_Current() - IL_0017: stloc.3 - IL_0018: ldstr "hello" - IL_001d: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_0022: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_0027: pop - IL_0028: ldloca.s V_0 - IL_002a: ldloc.3 - IL_002b: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) - IL_0030: nop - IL_0031: ldloc.1 - IL_0032: callvirt instance bool [runtime]System.Collections.IEnumerator::MoveNext() - IL_0037: brtrue.s IL_0011 - - IL_0039: ldnull - IL_003a: stloc.2 - IL_003b: leave.s IL_0052 + uint64 V_1, + int32 V_2, + int32 V_3) + IL_0000: ldc.i4.0 + IL_0001: conv.i8 + IL_0002: stloc.1 + IL_0003: ldc.i4.1 + IL_0004: stloc.2 + IL_0005: br.s IL_002b + + IL_0007: ldloca.s V_0 + IL_0009: ldloc.2 + IL_000a: stloc.3 + IL_000b: ldstr "hello" + IL_0010: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) + IL_0015: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_001a: pop + IL_001b: ldloc.3 + IL_001c: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) + IL_0021: nop + IL_0022: ldloc.2 + IL_0023: ldc.i4.1 + IL_0024: add + IL_0025: stloc.2 + IL_0026: ldloc.1 + IL_0027: ldc.i4.1 + IL_0028: conv.i8 + IL_0029: add + IL_002a: stloc.1 + IL_002b: ldloc.1 + IL_002c: ldc.i4.4 + IL_002d: conv.i8 + IL_002e: blt.un.s IL_0007 - } - finally - { - IL_003d: ldloc.1 - IL_003e: isinst [runtime]System.IDisposable - IL_0043: stloc.s V_4 - IL_0045: ldloc.s V_4 - IL_0047: brfalse.s IL_0051 - - IL_0049: ldloc.s V_4 - IL_004b: callvirt instance void [runtime]System.IDisposable::Dispose() - IL_0050: endfinally - IL_0051: endfinally - } - IL_0052: ldloc.2 - IL_0053: pop - IL_0054: ldloca.s V_0 - IL_0056: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Close() - IL_005b: ret + IL_0030: ldloca.s V_0 + IL_0032: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Close() + IL_0037: ret } .property int32 r() diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOff.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOff.il.netcore.debug.bsl index bb5909fc008..885135c69e6 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOff.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOff.il.netcore.debug.bsl @@ -420,113 +420,119 @@ int32 stop) cil managed { - .maxstack 5 - .locals init (class [runtime]System.Collections.Generic.IEnumerable`1 V_0, - class [runtime]System.Collections.Generic.IEnumerator`1 V_1, + .maxstack 4 + .locals init (uint64 V_0, + uint64 V_1, int32 V_2, - class [runtime]System.IDisposable V_3) + int32 V_3) IL_0000: ldarg.0 - IL_0001: ldc.i4.m1 - IL_0002: ldarg.1 - IL_0003: call class [runtime]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators/OperatorIntrinsics::RangeInt32(int32, - int32, - int32) - IL_0008: stloc.0 - IL_0009: ldloc.0 - IL_000a: callvirt instance class [runtime]System.Collections.Generic.IEnumerator`1 class [runtime]System.Collections.Generic.IEnumerable`1::GetEnumerator() - IL_000f: stloc.1 - .try - { - IL_0010: br.s IL_0029 - - IL_0012: ldloc.1 - IL_0013: callvirt instance !0 class [runtime]System.Collections.Generic.IEnumerator`1::get_Current() - IL_0018: stloc.2 - IL_0019: ldstr "{0}" - IL_001e: ldloc.2 - IL_001f: box [runtime]System.Int32 - IL_0024: call void [runtime]System.Console::WriteLine(string, - object) - IL_0029: ldloc.1 - IL_002a: callvirt instance bool [runtime]System.Collections.IEnumerator::MoveNext() - IL_002f: brtrue.s IL_0012 - - IL_0031: leave.s IL_0045 + IL_0001: ldarg.1 + IL_0002: bge.s IL_0009 + + IL_0004: ldc.i4.0 + IL_0005: conv.i8 + IL_0006: nop + IL_0007: br.s IL_0011 + + IL_0009: ldarg.0 + IL_000a: ldarg.1 + IL_000b: sub + IL_000c: conv.i8 + IL_000d: ldc.i4.1 + IL_000e: conv.i8 + IL_000f: add + IL_0010: nop + IL_0011: stloc.0 + IL_0012: ldc.i4.0 + IL_0013: conv.i8 + IL_0014: stloc.1 + IL_0015: ldarg.0 + IL_0016: stloc.2 + IL_0017: br.s IL_0034 + + IL_0019: ldloc.2 + IL_001a: stloc.3 + IL_001b: ldstr "{0}" + IL_0020: ldloc.3 + IL_0021: box [runtime]System.Int32 + IL_0026: call void [runtime]System.Console::WriteLine(string, + object) + IL_002b: ldloc.2 + IL_002c: ldc.i4.m1 + IL_002d: add + IL_002e: stloc.2 + IL_002f: ldloc.1 + IL_0030: ldc.i4.1 + IL_0031: conv.i8 + IL_0032: add + IL_0033: stloc.1 + IL_0034: ldloc.1 + IL_0035: ldloc.0 + IL_0036: blt.un.s IL_0019 - } - finally - { - IL_0033: ldloc.1 - IL_0034: isinst [runtime]System.IDisposable - IL_0039: stloc.3 - IL_003a: ldloc.3 - IL_003b: brfalse.s IL_0044 - - IL_003d: ldloc.3 - IL_003e: callvirt instance void [runtime]System.IDisposable::Dispose() - IL_0043: endfinally - IL_0044: endfinally - } - IL_0045: ret + IL_0038: ret } .method public static void testSimpleForEachIntRangeLoopDownWithTwoStatements(int32 start, int32 stop) cil managed { - .maxstack 5 - .locals init (class [runtime]System.Collections.Generic.IEnumerable`1 V_0, - class [runtime]System.Collections.Generic.IEnumerator`1 V_1, + .maxstack 4 + .locals init (uint64 V_0, + uint64 V_1, int32 V_2, - class [runtime]System.IDisposable V_3) + int32 V_3) IL_0000: ldarg.0 - IL_0001: ldc.i4.m1 - IL_0002: ldarg.1 - IL_0003: call class [runtime]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators/OperatorIntrinsics::RangeInt32(int32, - int32, - int32) - IL_0008: stloc.0 - IL_0009: ldloc.0 - IL_000a: callvirt instance class [runtime]System.Collections.Generic.IEnumerator`1 class [runtime]System.Collections.Generic.IEnumerable`1::GetEnumerator() - IL_000f: stloc.1 - .try - { - IL_0010: br.s IL_0039 - - IL_0012: ldloc.1 - IL_0013: callvirt instance !0 class [runtime]System.Collections.Generic.IEnumerator`1::get_Current() - IL_0018: stloc.2 - IL_0019: ldstr "{0}" - IL_001e: ldloc.2 - IL_001f: box [runtime]System.Int32 - IL_0024: call void [runtime]System.Console::WriteLine(string, - object) - IL_0029: ldstr "{0}" - IL_002e: ldloc.2 - IL_002f: box [runtime]System.Int32 - IL_0034: call void [runtime]System.Console::WriteLine(string, - object) - IL_0039: ldloc.1 - IL_003a: callvirt instance bool [runtime]System.Collections.IEnumerator::MoveNext() - IL_003f: brtrue.s IL_0012 - - IL_0041: leave.s IL_0055 - - } - finally - { - IL_0043: ldloc.1 - IL_0044: isinst [runtime]System.IDisposable - IL_0049: stloc.3 - IL_004a: ldloc.3 - IL_004b: brfalse.s IL_0054 - - IL_004d: ldloc.3 - IL_004e: callvirt instance void [runtime]System.IDisposable::Dispose() - IL_0053: endfinally - IL_0054: endfinally - } - IL_0055: ret + IL_0001: ldarg.1 + IL_0002: bge.s IL_0009 + + IL_0004: ldc.i4.0 + IL_0005: conv.i8 + IL_0006: nop + IL_0007: br.s IL_0011 + + IL_0009: ldarg.0 + IL_000a: ldarg.1 + IL_000b: sub + IL_000c: conv.i8 + IL_000d: ldc.i4.1 + IL_000e: conv.i8 + IL_000f: add + IL_0010: nop + IL_0011: stloc.0 + IL_0012: ldc.i4.0 + IL_0013: conv.i8 + IL_0014: stloc.1 + IL_0015: ldarg.0 + IL_0016: stloc.2 + IL_0017: br.s IL_0044 + + IL_0019: ldloc.2 + IL_001a: stloc.3 + IL_001b: ldstr "{0}" + IL_0020: ldloc.3 + IL_0021: box [runtime]System.Int32 + IL_0026: call void [runtime]System.Console::WriteLine(string, + object) + IL_002b: ldstr "{0}" + IL_0030: ldloc.3 + IL_0031: box [runtime]System.Int32 + IL_0036: call void [runtime]System.Console::WriteLine(string, + object) + IL_003b: ldloc.2 + IL_003c: ldc.i4.m1 + IL_003d: add + IL_003e: stloc.2 + IL_003f: ldloc.1 + IL_0040: ldc.i4.1 + IL_0041: conv.i8 + IL_0042: add + IL_0043: stloc.1 + IL_0044: ldloc.1 + IL_0045: ldloc.0 + IL_0046: blt.un.s IL_0019 + + IL_0048: ret } .method public static void testSimpleForEachIntLoopWithOneStatement(int32 start, @@ -674,63 +680,45 @@ .method public static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ListExpressionSteppingTest7() cil managed { - .maxstack 5 + .maxstack 4 .locals init (valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1 V_0, - class [runtime]System.Collections.Generic.IEnumerator`1 V_1, - class [runtime]System.Collections.Generic.IEnumerable`1 V_2, - int32 V_3, - class [runtime]System.IDisposable V_4) - IL_0000: nop - IL_0001: ldc.i4.1 - IL_0002: ldc.i4.1 - IL_0003: ldc.i4.4 - IL_0004: call class [runtime]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators/OperatorIntrinsics::RangeInt32(int32, - int32, - int32) - IL_0009: callvirt instance class [runtime]System.Collections.Generic.IEnumerator`1 class [runtime]System.Collections.Generic.IEnumerable`1::GetEnumerator() - IL_000e: stloc.1 - .try - { - IL_000f: br.s IL_0031 - - IL_0011: ldloc.1 - IL_0012: callvirt instance !0 class [runtime]System.Collections.Generic.IEnumerator`1::get_Current() - IL_0017: stloc.3 - IL_0018: ldstr "hello" - IL_001d: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_0022: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_0027: pop - IL_0028: ldloca.s V_0 - IL_002a: ldloc.3 - IL_002b: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) - IL_0030: nop - IL_0031: ldloc.1 - IL_0032: callvirt instance bool [runtime]System.Collections.IEnumerator::MoveNext() - IL_0037: brtrue.s IL_0011 - - IL_0039: ldnull - IL_003a: stloc.2 - IL_003b: leave.s IL_0052 + uint64 V_1, + int32 V_2, + int32 V_3) + IL_0000: ldc.i4.0 + IL_0001: conv.i8 + IL_0002: stloc.1 + IL_0003: ldc.i4.1 + IL_0004: stloc.2 + IL_0005: br.s IL_002b + + IL_0007: ldloca.s V_0 + IL_0009: ldloc.2 + IL_000a: stloc.3 + IL_000b: ldstr "hello" + IL_0010: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) + IL_0015: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_001a: pop + IL_001b: ldloc.3 + IL_001c: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) + IL_0021: nop + IL_0022: ldloc.2 + IL_0023: ldc.i4.1 + IL_0024: add + IL_0025: stloc.2 + IL_0026: ldloc.1 + IL_0027: ldc.i4.1 + IL_0028: conv.i8 + IL_0029: add + IL_002a: stloc.1 + IL_002b: ldloc.1 + IL_002c: ldc.i4.4 + IL_002d: conv.i8 + IL_002e: blt.un.s IL_0007 - } - finally - { - IL_003d: ldloc.1 - IL_003e: isinst [runtime]System.IDisposable - IL_0043: stloc.s V_4 - IL_0045: ldloc.s V_4 - IL_0047: brfalse.s IL_0051 - - IL_0049: ldloc.s V_4 - IL_004b: callvirt instance void [runtime]System.IDisposable::Dispose() - IL_0050: endfinally - IL_0051: endfinally - } - IL_0052: ldloc.2 - IL_0053: pop - IL_0054: ldloca.s V_0 - IL_0056: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Close() - IL_005b: ret + IL_0030: ldloca.s V_0 + IL_0032: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Close() + IL_0037: ret } .property int32 r() diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOn.il.net472.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOn.il.net472.debug.bsl index f0812837c64..0022e910a22 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOn.il.net472.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOn.il.net472.debug.bsl @@ -421,113 +421,119 @@ int32 stop) cil managed { - .maxstack 5 - .locals init (class [runtime]System.Collections.Generic.IEnumerable`1 V_0, - class [runtime]System.Collections.Generic.IEnumerator`1 V_1, + .maxstack 4 + .locals init (uint64 V_0, + uint64 V_1, int32 V_2, - class [runtime]System.IDisposable V_3) + int32 V_3) IL_0000: ldarg.0 - IL_0001: ldc.i4.m1 - IL_0002: ldarg.1 - IL_0003: call class [runtime]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators/OperatorIntrinsics::RangeInt32(int32, - int32, - int32) - IL_0008: stloc.0 - IL_0009: ldloc.0 - IL_000a: callvirt instance class [runtime]System.Collections.Generic.IEnumerator`1 class [runtime]System.Collections.Generic.IEnumerable`1::GetEnumerator() - IL_000f: stloc.1 - .try - { - IL_0010: br.s IL_0029 - - IL_0012: ldloc.1 - IL_0013: callvirt instance !0 class [runtime]System.Collections.Generic.IEnumerator`1::get_Current() - IL_0018: stloc.2 - IL_0019: ldstr "{0}" - IL_001e: ldloc.2 - IL_001f: box [runtime]System.Int32 - IL_0024: call void [runtime]System.Console::WriteLine(string, - object) - IL_0029: ldloc.1 - IL_002a: callvirt instance bool [runtime]System.Collections.IEnumerator::MoveNext() - IL_002f: brtrue.s IL_0012 - - IL_0031: leave.s IL_0045 + IL_0001: ldarg.1 + IL_0002: bge.s IL_0009 + + IL_0004: ldc.i4.0 + IL_0005: conv.i8 + IL_0006: nop + IL_0007: br.s IL_0011 + + IL_0009: ldarg.0 + IL_000a: ldarg.1 + IL_000b: sub + IL_000c: conv.i8 + IL_000d: ldc.i4.1 + IL_000e: conv.i8 + IL_000f: add + IL_0010: nop + IL_0011: stloc.0 + IL_0012: ldc.i4.0 + IL_0013: conv.i8 + IL_0014: stloc.1 + IL_0015: ldarg.0 + IL_0016: stloc.2 + IL_0017: br.s IL_0034 + + IL_0019: ldloc.2 + IL_001a: stloc.3 + IL_001b: ldstr "{0}" + IL_0020: ldloc.3 + IL_0021: box [runtime]System.Int32 + IL_0026: call void [runtime]System.Console::WriteLine(string, + object) + IL_002b: ldloc.2 + IL_002c: ldc.i4.m1 + IL_002d: add + IL_002e: stloc.2 + IL_002f: ldloc.1 + IL_0030: ldc.i4.1 + IL_0031: conv.i8 + IL_0032: add + IL_0033: stloc.1 + IL_0034: ldloc.1 + IL_0035: ldloc.0 + IL_0036: blt.un.s IL_0019 - } - finally - { - IL_0033: ldloc.1 - IL_0034: isinst [runtime]System.IDisposable - IL_0039: stloc.3 - IL_003a: ldloc.3 - IL_003b: brfalse.s IL_0044 - - IL_003d: ldloc.3 - IL_003e: callvirt instance void [runtime]System.IDisposable::Dispose() - IL_0043: endfinally - IL_0044: endfinally - } - IL_0045: ret + IL_0038: ret } .method public static void testSimpleForEachIntRangeLoopDownWithTwoStatements(int32 start, int32 stop) cil managed { - .maxstack 5 - .locals init (class [runtime]System.Collections.Generic.IEnumerable`1 V_0, - class [runtime]System.Collections.Generic.IEnumerator`1 V_1, + .maxstack 4 + .locals init (uint64 V_0, + uint64 V_1, int32 V_2, - class [runtime]System.IDisposable V_3) + int32 V_3) IL_0000: ldarg.0 - IL_0001: ldc.i4.m1 - IL_0002: ldarg.1 - IL_0003: call class [runtime]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators/OperatorIntrinsics::RangeInt32(int32, - int32, - int32) - IL_0008: stloc.0 - IL_0009: ldloc.0 - IL_000a: callvirt instance class [runtime]System.Collections.Generic.IEnumerator`1 class [runtime]System.Collections.Generic.IEnumerable`1::GetEnumerator() - IL_000f: stloc.1 - .try - { - IL_0010: br.s IL_0039 - - IL_0012: ldloc.1 - IL_0013: callvirt instance !0 class [runtime]System.Collections.Generic.IEnumerator`1::get_Current() - IL_0018: stloc.2 - IL_0019: ldstr "{0}" - IL_001e: ldloc.2 - IL_001f: box [runtime]System.Int32 - IL_0024: call void [runtime]System.Console::WriteLine(string, - object) - IL_0029: ldstr "{0}" - IL_002e: ldloc.2 - IL_002f: box [runtime]System.Int32 - IL_0034: call void [runtime]System.Console::WriteLine(string, - object) - IL_0039: ldloc.1 - IL_003a: callvirt instance bool [runtime]System.Collections.IEnumerator::MoveNext() - IL_003f: brtrue.s IL_0012 - - IL_0041: leave.s IL_0055 - - } - finally - { - IL_0043: ldloc.1 - IL_0044: isinst [runtime]System.IDisposable - IL_0049: stloc.3 - IL_004a: ldloc.3 - IL_004b: brfalse.s IL_0054 - - IL_004d: ldloc.3 - IL_004e: callvirt instance void [runtime]System.IDisposable::Dispose() - IL_0053: endfinally - IL_0054: endfinally - } - IL_0055: ret + IL_0001: ldarg.1 + IL_0002: bge.s IL_0009 + + IL_0004: ldc.i4.0 + IL_0005: conv.i8 + IL_0006: nop + IL_0007: br.s IL_0011 + + IL_0009: ldarg.0 + IL_000a: ldarg.1 + IL_000b: sub + IL_000c: conv.i8 + IL_000d: ldc.i4.1 + IL_000e: conv.i8 + IL_000f: add + IL_0010: nop + IL_0011: stloc.0 + IL_0012: ldc.i4.0 + IL_0013: conv.i8 + IL_0014: stloc.1 + IL_0015: ldarg.0 + IL_0016: stloc.2 + IL_0017: br.s IL_0044 + + IL_0019: ldloc.2 + IL_001a: stloc.3 + IL_001b: ldstr "{0}" + IL_0020: ldloc.3 + IL_0021: box [runtime]System.Int32 + IL_0026: call void [runtime]System.Console::WriteLine(string, + object) + IL_002b: ldstr "{0}" + IL_0030: ldloc.3 + IL_0031: box [runtime]System.Int32 + IL_0036: call void [runtime]System.Console::WriteLine(string, + object) + IL_003b: ldloc.2 + IL_003c: ldc.i4.m1 + IL_003d: add + IL_003e: stloc.2 + IL_003f: ldloc.1 + IL_0040: ldc.i4.1 + IL_0041: conv.i8 + IL_0042: add + IL_0043: stloc.1 + IL_0044: ldloc.1 + IL_0045: ldloc.0 + IL_0046: blt.un.s IL_0019 + + IL_0048: ret } .method public static void testSimpleForEachIntLoopWithOneStatement(int32 start, @@ -675,63 +681,45 @@ .method public static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ListExpressionSteppingTest7() cil managed { - .maxstack 5 + .maxstack 4 .locals init (valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1 V_0, - class [runtime]System.Collections.Generic.IEnumerator`1 V_1, - class [runtime]System.Collections.Generic.IEnumerable`1 V_2, - int32 V_3, - class [runtime]System.IDisposable V_4) - IL_0000: nop - IL_0001: ldc.i4.1 - IL_0002: ldc.i4.1 - IL_0003: ldc.i4.4 - IL_0004: call class [runtime]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators/OperatorIntrinsics::RangeInt32(int32, - int32, - int32) - IL_0009: callvirt instance class [runtime]System.Collections.Generic.IEnumerator`1 class [runtime]System.Collections.Generic.IEnumerable`1::GetEnumerator() - IL_000e: stloc.1 - .try - { - IL_000f: br.s IL_0031 - - IL_0011: ldloc.1 - IL_0012: callvirt instance !0 class [runtime]System.Collections.Generic.IEnumerator`1::get_Current() - IL_0017: stloc.3 - IL_0018: ldstr "hello" - IL_001d: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_0022: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_0027: pop - IL_0028: ldloca.s V_0 - IL_002a: ldloc.3 - IL_002b: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) - IL_0030: nop - IL_0031: ldloc.1 - IL_0032: callvirt instance bool [runtime]System.Collections.IEnumerator::MoveNext() - IL_0037: brtrue.s IL_0011 - - IL_0039: ldnull - IL_003a: stloc.2 - IL_003b: leave.s IL_0052 + uint64 V_1, + int32 V_2, + int32 V_3) + IL_0000: ldc.i4.0 + IL_0001: conv.i8 + IL_0002: stloc.1 + IL_0003: ldc.i4.1 + IL_0004: stloc.2 + IL_0005: br.s IL_002b + + IL_0007: ldloca.s V_0 + IL_0009: ldloc.2 + IL_000a: stloc.3 + IL_000b: ldstr "hello" + IL_0010: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) + IL_0015: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_001a: pop + IL_001b: ldloc.3 + IL_001c: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) + IL_0021: nop + IL_0022: ldloc.2 + IL_0023: ldc.i4.1 + IL_0024: add + IL_0025: stloc.2 + IL_0026: ldloc.1 + IL_0027: ldc.i4.1 + IL_0028: conv.i8 + IL_0029: add + IL_002a: stloc.1 + IL_002b: ldloc.1 + IL_002c: ldc.i4.4 + IL_002d: conv.i8 + IL_002e: blt.un.s IL_0007 - } - finally - { - IL_003d: ldloc.1 - IL_003e: isinst [runtime]System.IDisposable - IL_0043: stloc.s V_4 - IL_0045: ldloc.s V_4 - IL_0047: brfalse.s IL_0051 - - IL_0049: ldloc.s V_4 - IL_004b: callvirt instance void [runtime]System.IDisposable::Dispose() - IL_0050: endfinally - IL_0051: endfinally - } - IL_0052: ldloc.2 - IL_0053: pop - IL_0054: ldloca.s V_0 - IL_0056: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Close() - IL_005b: ret + IL_0030: ldloca.s V_0 + IL_0032: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Close() + IL_0037: ret } .method private specialname rtspecialname static void .cctor() cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOn.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOn.il.netcore.debug.bsl index e3eea368d57..64016951d4d 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOn.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest07.fs.RealInternalSignatureOn.il.netcore.debug.bsl @@ -422,113 +422,119 @@ int32 stop) cil managed { - .maxstack 5 - .locals init (class [runtime]System.Collections.Generic.IEnumerable`1 V_0, - class [runtime]System.Collections.Generic.IEnumerator`1 V_1, + .maxstack 4 + .locals init (uint64 V_0, + uint64 V_1, int32 V_2, - class [runtime]System.IDisposable V_3) + int32 V_3) IL_0000: ldarg.0 - IL_0001: ldc.i4.m1 - IL_0002: ldarg.1 - IL_0003: call class [runtime]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators/OperatorIntrinsics::RangeInt32(int32, - int32, - int32) - IL_0008: stloc.0 - IL_0009: ldloc.0 - IL_000a: callvirt instance class [runtime]System.Collections.Generic.IEnumerator`1 class [runtime]System.Collections.Generic.IEnumerable`1::GetEnumerator() - IL_000f: stloc.1 - .try - { - IL_0010: br.s IL_0029 - - IL_0012: ldloc.1 - IL_0013: callvirt instance !0 class [runtime]System.Collections.Generic.IEnumerator`1::get_Current() - IL_0018: stloc.2 - IL_0019: ldstr "{0}" - IL_001e: ldloc.2 - IL_001f: box [runtime]System.Int32 - IL_0024: call void [runtime]System.Console::WriteLine(string, - object) - IL_0029: ldloc.1 - IL_002a: callvirt instance bool [runtime]System.Collections.IEnumerator::MoveNext() - IL_002f: brtrue.s IL_0012 - - IL_0031: leave.s IL_0045 + IL_0001: ldarg.1 + IL_0002: bge.s IL_0009 + + IL_0004: ldc.i4.0 + IL_0005: conv.i8 + IL_0006: nop + IL_0007: br.s IL_0011 + + IL_0009: ldarg.0 + IL_000a: ldarg.1 + IL_000b: sub + IL_000c: conv.i8 + IL_000d: ldc.i4.1 + IL_000e: conv.i8 + IL_000f: add + IL_0010: nop + IL_0011: stloc.0 + IL_0012: ldc.i4.0 + IL_0013: conv.i8 + IL_0014: stloc.1 + IL_0015: ldarg.0 + IL_0016: stloc.2 + IL_0017: br.s IL_0034 + + IL_0019: ldloc.2 + IL_001a: stloc.3 + IL_001b: ldstr "{0}" + IL_0020: ldloc.3 + IL_0021: box [runtime]System.Int32 + IL_0026: call void [runtime]System.Console::WriteLine(string, + object) + IL_002b: ldloc.2 + IL_002c: ldc.i4.m1 + IL_002d: add + IL_002e: stloc.2 + IL_002f: ldloc.1 + IL_0030: ldc.i4.1 + IL_0031: conv.i8 + IL_0032: add + IL_0033: stloc.1 + IL_0034: ldloc.1 + IL_0035: ldloc.0 + IL_0036: blt.un.s IL_0019 - } - finally - { - IL_0033: ldloc.1 - IL_0034: isinst [runtime]System.IDisposable - IL_0039: stloc.3 - IL_003a: ldloc.3 - IL_003b: brfalse.s IL_0044 - - IL_003d: ldloc.3 - IL_003e: callvirt instance void [runtime]System.IDisposable::Dispose() - IL_0043: endfinally - IL_0044: endfinally - } - IL_0045: ret + IL_0038: ret } .method public static void testSimpleForEachIntRangeLoopDownWithTwoStatements(int32 start, int32 stop) cil managed { - .maxstack 5 - .locals init (class [runtime]System.Collections.Generic.IEnumerable`1 V_0, - class [runtime]System.Collections.Generic.IEnumerator`1 V_1, + .maxstack 4 + .locals init (uint64 V_0, + uint64 V_1, int32 V_2, - class [runtime]System.IDisposable V_3) + int32 V_3) IL_0000: ldarg.0 - IL_0001: ldc.i4.m1 - IL_0002: ldarg.1 - IL_0003: call class [runtime]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators/OperatorIntrinsics::RangeInt32(int32, - int32, - int32) - IL_0008: stloc.0 - IL_0009: ldloc.0 - IL_000a: callvirt instance class [runtime]System.Collections.Generic.IEnumerator`1 class [runtime]System.Collections.Generic.IEnumerable`1::GetEnumerator() - IL_000f: stloc.1 - .try - { - IL_0010: br.s IL_0039 - - IL_0012: ldloc.1 - IL_0013: callvirt instance !0 class [runtime]System.Collections.Generic.IEnumerator`1::get_Current() - IL_0018: stloc.2 - IL_0019: ldstr "{0}" - IL_001e: ldloc.2 - IL_001f: box [runtime]System.Int32 - IL_0024: call void [runtime]System.Console::WriteLine(string, - object) - IL_0029: ldstr "{0}" - IL_002e: ldloc.2 - IL_002f: box [runtime]System.Int32 - IL_0034: call void [runtime]System.Console::WriteLine(string, - object) - IL_0039: ldloc.1 - IL_003a: callvirt instance bool [runtime]System.Collections.IEnumerator::MoveNext() - IL_003f: brtrue.s IL_0012 - - IL_0041: leave.s IL_0055 - - } - finally - { - IL_0043: ldloc.1 - IL_0044: isinst [runtime]System.IDisposable - IL_0049: stloc.3 - IL_004a: ldloc.3 - IL_004b: brfalse.s IL_0054 - - IL_004d: ldloc.3 - IL_004e: callvirt instance void [runtime]System.IDisposable::Dispose() - IL_0053: endfinally - IL_0054: endfinally - } - IL_0055: ret + IL_0001: ldarg.1 + IL_0002: bge.s IL_0009 + + IL_0004: ldc.i4.0 + IL_0005: conv.i8 + IL_0006: nop + IL_0007: br.s IL_0011 + + IL_0009: ldarg.0 + IL_000a: ldarg.1 + IL_000b: sub + IL_000c: conv.i8 + IL_000d: ldc.i4.1 + IL_000e: conv.i8 + IL_000f: add + IL_0010: nop + IL_0011: stloc.0 + IL_0012: ldc.i4.0 + IL_0013: conv.i8 + IL_0014: stloc.1 + IL_0015: ldarg.0 + IL_0016: stloc.2 + IL_0017: br.s IL_0044 + + IL_0019: ldloc.2 + IL_001a: stloc.3 + IL_001b: ldstr "{0}" + IL_0020: ldloc.3 + IL_0021: box [runtime]System.Int32 + IL_0026: call void [runtime]System.Console::WriteLine(string, + object) + IL_002b: ldstr "{0}" + IL_0030: ldloc.3 + IL_0031: box [runtime]System.Int32 + IL_0036: call void [runtime]System.Console::WriteLine(string, + object) + IL_003b: ldloc.2 + IL_003c: ldc.i4.m1 + IL_003d: add + IL_003e: stloc.2 + IL_003f: ldloc.1 + IL_0040: ldc.i4.1 + IL_0041: conv.i8 + IL_0042: add + IL_0043: stloc.1 + IL_0044: ldloc.1 + IL_0045: ldloc.0 + IL_0046: blt.un.s IL_0019 + + IL_0048: ret } .method public static void testSimpleForEachIntLoopWithOneStatement(int32 start, @@ -676,63 +682,45 @@ .method public static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ListExpressionSteppingTest7() cil managed { - .maxstack 5 + .maxstack 4 .locals init (valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1 V_0, - class [runtime]System.Collections.Generic.IEnumerator`1 V_1, - class [runtime]System.Collections.Generic.IEnumerable`1 V_2, - int32 V_3, - class [runtime]System.IDisposable V_4) - IL_0000: nop - IL_0001: ldc.i4.1 - IL_0002: ldc.i4.1 - IL_0003: ldc.i4.4 - IL_0004: call class [runtime]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators/OperatorIntrinsics::RangeInt32(int32, - int32, - int32) - IL_0009: callvirt instance class [runtime]System.Collections.Generic.IEnumerator`1 class [runtime]System.Collections.Generic.IEnumerable`1::GetEnumerator() - IL_000e: stloc.1 - .try - { - IL_000f: br.s IL_0031 - - IL_0011: ldloc.1 - IL_0012: callvirt instance !0 class [runtime]System.Collections.Generic.IEnumerator`1::get_Current() - IL_0017: stloc.3 - IL_0018: ldstr "hello" - IL_001d: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_0022: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_0027: pop - IL_0028: ldloca.s V_0 - IL_002a: ldloc.3 - IL_002b: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) - IL_0030: nop - IL_0031: ldloc.1 - IL_0032: callvirt instance bool [runtime]System.Collections.IEnumerator::MoveNext() - IL_0037: brtrue.s IL_0011 - - IL_0039: ldnull - IL_003a: stloc.2 - IL_003b: leave.s IL_0052 + uint64 V_1, + int32 V_2, + int32 V_3) + IL_0000: ldc.i4.0 + IL_0001: conv.i8 + IL_0002: stloc.1 + IL_0003: ldc.i4.1 + IL_0004: stloc.2 + IL_0005: br.s IL_002b + + IL_0007: ldloca.s V_0 + IL_0009: ldloc.2 + IL_000a: stloc.3 + IL_000b: ldstr "hello" + IL_0010: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) + IL_0015: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_001a: pop + IL_001b: ldloc.3 + IL_001c: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) + IL_0021: nop + IL_0022: ldloc.2 + IL_0023: ldc.i4.1 + IL_0024: add + IL_0025: stloc.2 + IL_0026: ldloc.1 + IL_0027: ldc.i4.1 + IL_0028: conv.i8 + IL_0029: add + IL_002a: stloc.1 + IL_002b: ldloc.1 + IL_002c: ldc.i4.4 + IL_002d: conv.i8 + IL_002e: blt.un.s IL_0007 - } - finally - { - IL_003d: ldloc.1 - IL_003e: isinst [runtime]System.IDisposable - IL_0043: stloc.s V_4 - IL_0045: ldloc.s V_4 - IL_0047: brfalse.s IL_0051 - - IL_0049: ldloc.s V_4 - IL_004b: callvirt instance void [runtime]System.IDisposable::Dispose() - IL_0050: endfinally - IL_0051: endfinally - } - IL_0052: ldloc.2 - IL_0053: pop - IL_0054: ldloca.s V_0 - IL_0056: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Close() - IL_005b: ret + IL_0030: ldloca.s V_0 + IL_0032: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Close() + IL_0037: ret } .method private specialname rtspecialname static void .cctor() cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOff.il.net472.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOff.il.net472.debug.bsl index 44bd4b286b2..159f7e2c450 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOff.il.net472.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOff.il.net472.debug.bsl @@ -58,8 +58,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class ABC/Expr - NewNum(int32 item) cil managed + .method public static class ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -70,8 +69,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 08 41 42 43 2B 45 78 70 72 00 @@ -88,8 +86,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -100,8 +97,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -113,8 +109,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -128,8 +123,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -142,8 +136,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -204,8 +197,7 @@ IL_0041: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -286,8 +278,7 @@ IL_0050: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -334,8 +325,7 @@ IL_002a: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -346,9 +336,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -356,56 +346,76 @@ .locals init (class ABC/Expr V_0, class ABC/Expr V_1, class ABC/Expr V_2, - class ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret } .method public hidebysig virtual final - instance bool Equals(class ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/Expr::Equals(class ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -442,8 +452,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -488,8 +497,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -501,8 +509,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -525,8 +532,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -535,8 +541,7 @@ IL_0006: ret } - .method public strict virtual instance string - get_Message() cil managed + .method public strict virtual instance string get_Message() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -549,8 +554,7 @@ IL_0015: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -591,8 +595,7 @@ IL_0028: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -603,72 +606,92 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/MyExn - IL_0024: call instance int32 ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass ABC/MyExn - IL_0031: call instance int32 ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 - IL_0044: ldc.i4.0 - IL_0045: ret + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/MyExn + IL_001d: call instance int32 ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass ABC/MyExn + IL_0029: call instance int32 ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret + + IL_0039: ldc.i4.0 + IL_003a: ret + + IL_003b: ldc.i4.0 + IL_003c: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -711,8 +734,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -746,8 +768,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -761,8 +782,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -796,8 +816,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class ABC/ABC/Expr - NewNum(int32 item) cil managed + .method public static class ABC/ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -808,8 +827,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 0C 41 42 43 2B 41 42 43 2B 45 @@ -826,8 +844,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -838,8 +855,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -851,8 +867,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -866,8 +881,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -880,8 +894,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class ABC/ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -942,8 +955,7 @@ IL_0041: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1024,8 +1036,7 @@ IL_0050: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1072,8 +1083,7 @@ IL_002a: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1084,9 +1094,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1094,56 +1104,76 @@ .locals init (class ABC/ABC/Expr V_0, class ABC/ABC/Expr V_1, class ABC/ABC/Expr V_2, - class ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 ABC/ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 ABC/ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret } .method public hidebysig virtual final - instance bool Equals(class ABC/ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/Expr::Equals(class ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1180,8 +1210,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1226,8 +1255,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -1239,8 +1267,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -1263,8 +1290,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -1273,8 +1299,7 @@ IL_0006: ret } - .method public strict virtual instance string - get_Message() cil managed + .method public strict virtual instance string get_Message() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1287,8 +1312,7 @@ IL_0015: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1329,8 +1353,7 @@ IL_0028: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1341,72 +1364,92 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/ABC/MyExn - IL_0024: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass ABC/ABC/MyExn - IL_0031: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 - IL_0044: ldc.i4.0 - IL_0045: ret + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/ABC/MyExn + IL_001d: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass ABC/ABC/MyExn + IL_0029: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret + + IL_0039: ldc.i4.0 + IL_003a: ret + + IL_003b: ldc.i4.0 + IL_003c: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1449,8 +1492,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1484,8 +1526,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -1499,8 +1540,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -1527,8 +1567,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1556,8 +1595,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1650,8 +1688,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1662,8 +1699,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOff.il.net472.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOff.il.net472.release.bsl index 278f568a6bc..780d56a5895 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOff.il.net472.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOff.il.net472.release.bsl @@ -58,8 +58,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class ABC/Expr - NewNum(int32 item) cil managed + .method public static class ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -70,8 +69,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 08 41 42 43 2B 45 78 70 72 00 @@ -88,8 +86,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -100,8 +97,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -113,8 +109,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -128,8 +123,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -142,8 +136,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -195,8 +188,7 @@ IL_0035: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -268,8 +260,7 @@ IL_0045: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -310,8 +301,7 @@ IL_0025: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -322,9 +312,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -332,47 +322,67 @@ .locals init (class ABC/Expr V_0, class ABC/Expr V_1, class ABC/Expr V_2, - class ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret - - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret } .method public hidebysig virtual final - instance bool Equals(class ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/Expr::Equals(class ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -409,8 +419,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -455,8 +464,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -468,8 +476,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -492,8 +499,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -502,8 +508,7 @@ IL_0006: ret } - .method public strict virtual instance string - get_Message() cil managed + .method public strict virtual instance string get_Message() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -516,8 +521,7 @@ IL_0015: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -552,8 +556,7 @@ IL_0024: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -564,63 +567,83 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/MyExn - IL_0024: call instance int32 ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass ABC/MyExn - IL_002f: call instance int32 ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/MyExn + IL_001d: call instance int32 ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass ABC/MyExn + IL_0028: call instance int32 ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -663,8 +686,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -698,8 +720,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -713,8 +734,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -748,8 +768,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class ABC/ABC/Expr - NewNum(int32 item) cil managed + .method public static class ABC/ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -760,8 +779,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 0C 41 42 43 2B 41 42 43 2B 45 @@ -778,8 +796,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -790,8 +807,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -803,8 +819,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -818,8 +833,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -832,8 +846,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class ABC/ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -885,8 +898,7 @@ IL_0035: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -958,8 +970,7 @@ IL_0045: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1000,8 +1011,7 @@ IL_0025: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1012,9 +1022,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1022,47 +1032,67 @@ .locals init (class ABC/ABC/Expr V_0, class ABC/ABC/Expr V_1, class ABC/ABC/Expr V_2, - class ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 ABC/ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 ABC/ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 ABC/ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret - - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret } .method public hidebysig virtual final - instance bool Equals(class ABC/ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/Expr::Equals(class ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1099,8 +1129,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1145,8 +1174,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -1158,8 +1186,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -1182,8 +1209,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -1192,8 +1218,7 @@ IL_0006: ret } - .method public strict virtual instance string - get_Message() cil managed + .method public strict virtual instance string get_Message() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1206,8 +1231,7 @@ IL_0015: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1242,8 +1266,7 @@ IL_0024: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1254,63 +1277,83 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/ABC/MyExn - IL_0024: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass ABC/ABC/MyExn - IL_002f: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/ABC/MyExn + IL_001d: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass ABC/ABC/MyExn + IL_0028: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1353,8 +1396,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1388,8 +1430,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -1403,8 +1444,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -1431,8 +1471,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1460,8 +1499,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1554,8 +1592,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1566,8 +1603,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOff.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOff.il.netcore.debug.bsl index 414b0517910..9957f4217a5 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOff.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOff.il.netcore.debug.bsl @@ -58,8 +58,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class ABC/Expr - NewNum(int32 item) cil managed + .method public static class ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -70,8 +69,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 08 41 42 43 2B 45 78 70 72 00 @@ -88,8 +86,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -100,8 +97,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -113,8 +109,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -128,8 +123,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -142,8 +136,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -204,8 +197,7 @@ IL_0041: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -286,8 +278,7 @@ IL_0050: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -334,8 +325,7 @@ IL_002a: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -346,9 +336,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -356,56 +346,76 @@ .locals init (class ABC/Expr V_0, class ABC/Expr V_1, class ABC/Expr V_2, - class ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret } .method public hidebysig virtual final - instance bool Equals(class ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/Expr::Equals(class ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -442,8 +452,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -488,8 +497,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -501,8 +509,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -525,8 +532,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -535,8 +541,7 @@ IL_0006: ret } - .method public strict virtual instance string - get_Message() cil managed + .method public strict virtual instance string get_Message() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -549,8 +554,7 @@ IL_0015: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -591,8 +595,7 @@ IL_0028: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -603,72 +606,92 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/MyExn - IL_0024: call instance int32 ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass ABC/MyExn - IL_0031: call instance int32 ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 - IL_0044: ldc.i4.0 - IL_0045: ret + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/MyExn + IL_001d: call instance int32 ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass ABC/MyExn + IL_0029: call instance int32 ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret + + IL_0039: ldc.i4.0 + IL_003a: ret + + IL_003b: ldc.i4.0 + IL_003c: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -711,8 +734,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -746,8 +768,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -761,8 +782,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -796,8 +816,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class ABC/ABC/Expr - NewNum(int32 item) cil managed + .method public static class ABC/ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -808,8 +827,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 0C 41 42 43 2B 41 42 43 2B 45 @@ -826,8 +844,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -838,8 +855,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -851,8 +867,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -866,8 +881,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -880,8 +894,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class ABC/ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -942,8 +955,7 @@ IL_0041: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1024,8 +1036,7 @@ IL_0050: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1072,8 +1083,7 @@ IL_002a: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1084,9 +1094,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1094,56 +1104,76 @@ .locals init (class ABC/ABC/Expr V_0, class ABC/ABC/Expr V_1, class ABC/ABC/Expr V_2, - class ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 ABC/ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 ABC/ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret } .method public hidebysig virtual final - instance bool Equals(class ABC/ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/Expr::Equals(class ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1180,8 +1210,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1226,8 +1255,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -1239,8 +1267,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -1263,8 +1290,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -1273,8 +1299,7 @@ IL_0006: ret } - .method public strict virtual instance string - get_Message() cil managed + .method public strict virtual instance string get_Message() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1287,8 +1312,7 @@ IL_0015: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1329,8 +1353,7 @@ IL_0028: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1341,72 +1364,92 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/ABC/MyExn - IL_0024: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass ABC/ABC/MyExn - IL_0031: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 - IL_0044: ldc.i4.0 - IL_0045: ret + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/ABC/MyExn + IL_001d: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass ABC/ABC/MyExn + IL_0029: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret + + IL_0039: ldc.i4.0 + IL_003a: ret + + IL_003b: ldc.i4.0 + IL_003c: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1449,8 +1492,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1484,8 +1526,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -1499,8 +1540,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -1527,8 +1567,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1556,8 +1595,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOff.il.netcore.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOff.il.netcore.release.bsl index 22604867419..bbc1bf0b3eb 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOff.il.netcore.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOff.il.netcore.release.bsl @@ -58,8 +58,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class ABC/Expr - NewNum(int32 item) cil managed + .method public static class ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -70,8 +69,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 08 41 42 43 2B 45 78 70 72 00 @@ -88,8 +86,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -100,8 +97,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -113,8 +109,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -128,8 +123,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -142,8 +136,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -195,8 +188,7 @@ IL_0035: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -268,8 +260,7 @@ IL_0045: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -310,8 +301,7 @@ IL_0025: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -322,9 +312,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -332,47 +322,67 @@ .locals init (class ABC/Expr V_0, class ABC/Expr V_1, class ABC/Expr V_2, - class ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret - - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret } .method public hidebysig virtual final - instance bool Equals(class ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/Expr::Equals(class ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -409,8 +419,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -455,8 +464,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -468,8 +476,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -492,8 +499,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -502,8 +508,7 @@ IL_0006: ret } - .method public strict virtual instance string - get_Message() cil managed + .method public strict virtual instance string get_Message() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -516,8 +521,7 @@ IL_0015: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -552,8 +556,7 @@ IL_0024: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -564,63 +567,83 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/MyExn - IL_0024: call instance int32 ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass ABC/MyExn - IL_002f: call instance int32 ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/MyExn + IL_001d: call instance int32 ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass ABC/MyExn + IL_0028: call instance int32 ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -663,8 +686,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -698,8 +720,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -713,8 +734,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -748,8 +768,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class ABC/ABC/Expr - NewNum(int32 item) cil managed + .method public static class ABC/ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -760,8 +779,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 0C 41 42 43 2B 41 42 43 2B 45 @@ -778,8 +796,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -790,8 +807,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -803,8 +819,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -818,8 +833,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -832,8 +846,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class ABC/ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -885,8 +898,7 @@ IL_0035: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -958,8 +970,7 @@ IL_0045: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1000,8 +1011,7 @@ IL_0025: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1012,9 +1022,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1022,47 +1032,67 @@ .locals init (class ABC/ABC/Expr V_0, class ABC/ABC/Expr V_1, class ABC/ABC/Expr V_2, - class ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 ABC/ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 ABC/ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 ABC/ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret - - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret } .method public hidebysig virtual final - instance bool Equals(class ABC/ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/Expr::Equals(class ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1099,8 +1129,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1145,8 +1174,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -1158,8 +1186,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -1182,8 +1209,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -1192,8 +1218,7 @@ IL_0006: ret } - .method public strict virtual instance string - get_Message() cil managed + .method public strict virtual instance string get_Message() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1206,8 +1231,7 @@ IL_0015: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1242,8 +1266,7 @@ IL_0024: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1254,63 +1277,83 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/ABC/MyExn - IL_0024: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass ABC/ABC/MyExn - IL_002f: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/ABC/MyExn + IL_001d: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass ABC/ABC/MyExn + IL_0028: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1353,8 +1396,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1388,8 +1430,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -1403,8 +1444,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -1431,8 +1471,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1460,8 +1499,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOn.il.net472.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOn.il.net472.debug.bsl index 3a5e5b10025..9e648689434 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOn.il.net472.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOn.il.net472.debug.bsl @@ -336,9 +336,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -346,52 +346,73 @@ .locals init (class ABC/Expr V_0, class ABC/Expr V_1, class ABC/Expr V_2, - class ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/Expr::Equals(class ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class ABC/Expr obj) cil managed @@ -585,68 +606,89 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/MyExn - IL_0024: call instance int32 ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass ABC/MyExn - IL_0031: call instance int32 ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/MyExn + IL_001d: call instance int32 ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass ABC/MyExn + IL_0029: call instance int32 ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0039: ldc.i4.0 + IL_003a: ret - IL_0044: ldc.i4.0 - IL_0045: ret + IL_003b: ldc.i4.0 + IL_003c: ret + + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed @@ -1052,9 +1094,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1062,52 +1104,73 @@ .locals init (class ABC/ABC/Expr V_0, class ABC/ABC/Expr V_1, class ABC/ABC/Expr V_2, - class ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 ABC/ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 ABC/ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/Expr::Equals(class ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class ABC/ABC/Expr obj) cil managed @@ -1301,68 +1364,89 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/ABC/MyExn - IL_0024: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass ABC/ABC/MyExn - IL_0031: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/ABC/MyExn + IL_001d: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass ABC/ABC/MyExn + IL_0029: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0039: ldc.i4.0 + IL_003a: ret - IL_0044: ldc.i4.0 - IL_0045: ret + IL_003b: ldc.i4.0 + IL_003c: ret + + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOn.il.net472.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOn.il.net472.release.bsl index 9fcc461f28d..858f37651d4 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOn.il.net472.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOn.il.net472.release.bsl @@ -312,9 +312,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -322,43 +322,64 @@ .locals init (class ABC/Expr V_0, class ABC/Expr V_1, class ABC/Expr V_2, - class ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/Expr::Equals(class ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class ABC/Expr obj) cil managed @@ -546,59 +567,80 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/MyExn - IL_0024: call instance int32 ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass ABC/MyExn - IL_002f: call instance int32 ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/MyExn + IL_001d: call instance int32 ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass ABC/MyExn + IL_0028: call instance int32 ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed @@ -980,9 +1022,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -990,43 +1032,64 @@ .locals init (class ABC/ABC/Expr V_0, class ABC/ABC/Expr V_1, class ABC/ABC/Expr V_2, - class ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 ABC/ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 ABC/ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 ABC/ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/Expr::Equals(class ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class ABC/ABC/Expr obj) cil managed @@ -1214,59 +1277,80 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/ABC/MyExn - IL_0024: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass ABC/ABC/MyExn - IL_002f: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/ABC/MyExn + IL_001d: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass ABC/ABC/MyExn + IL_0028: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOn.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOn.il.netcore.debug.bsl index 2ba585e199a..9404a1c69e8 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOn.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOn.il.netcore.debug.bsl @@ -336,9 +336,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -346,52 +346,73 @@ .locals init (class ABC/Expr V_0, class ABC/Expr V_1, class ABC/Expr V_2, - class ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/Expr::Equals(class ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class ABC/Expr obj) cil managed @@ -585,68 +606,89 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/MyExn - IL_0024: call instance int32 ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass ABC/MyExn - IL_0031: call instance int32 ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/MyExn + IL_001d: call instance int32 ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass ABC/MyExn + IL_0029: call instance int32 ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0039: ldc.i4.0 + IL_003a: ret - IL_0044: ldc.i4.0 - IL_0045: ret + IL_003b: ldc.i4.0 + IL_003c: ret + + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed @@ -1052,9 +1094,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1062,52 +1104,73 @@ .locals init (class ABC/ABC/Expr V_0, class ABC/ABC/Expr V_1, class ABC/ABC/Expr V_2, - class ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 ABC/ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 ABC/ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/Expr::Equals(class ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class ABC/ABC/Expr obj) cil managed @@ -1301,68 +1364,89 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/ABC/MyExn - IL_0024: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass ABC/ABC/MyExn - IL_0031: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/ABC/MyExn + IL_001d: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass ABC/ABC/MyExn + IL_0029: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0039: ldc.i4.0 + IL_003a: ret - IL_0044: ldc.i4.0 - IL_0045: ret + IL_003b: ldc.i4.0 + IL_003c: ret + + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOn.il.netcore.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOn.il.netcore.release.bsl index 13b2cef620c..c14fc627c7e 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOn.il.netcore.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule.fs.RealInternalSignatureOn.il.netcore.release.bsl @@ -312,9 +312,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -322,43 +322,64 @@ .locals init (class ABC/Expr V_0, class ABC/Expr V_1, class ABC/Expr V_2, - class ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/Expr::Equals(class ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class ABC/Expr obj) cil managed @@ -546,59 +567,80 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/MyExn - IL_0024: call instance int32 ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass ABC/MyExn - IL_002f: call instance int32 ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/MyExn + IL_001d: call instance int32 ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass ABC/MyExn + IL_0028: call instance int32 ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed @@ -980,9 +1022,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -990,43 +1032,64 @@ .locals init (class ABC/ABC/Expr V_0, class ABC/ABC/Expr V_1, class ABC/ABC/Expr V_2, - class ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 ABC/ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 ABC/ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 ABC/ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/Expr::Equals(class ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class ABC/ABC/Expr obj) cil managed @@ -1214,59 +1277,80 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/ABC/MyExn - IL_0024: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass ABC/ABC/MyExn - IL_002f: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/ABC/MyExn + IL_001d: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass ABC/ABC/MyExn + IL_0028: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOff.il.net472.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOff.il.net472.debug.bsl index e5e2885df7a..f050c79ecd1 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOff.il.net472.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOff.il.net472.debug.bsl @@ -58,8 +58,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class ABC/Expr - NewNum(int32 item) cil managed + .method public static class ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -70,8 +69,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 08 41 42 43 2B 45 78 70 72 00 @@ -88,8 +86,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -100,8 +97,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -113,8 +109,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -128,8 +123,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -142,8 +136,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -204,8 +197,7 @@ IL_0041: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -286,8 +278,7 @@ IL_0050: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -334,8 +325,7 @@ IL_002a: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -346,9 +336,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -356,56 +346,76 @@ .locals init (class ABC/Expr V_0, class ABC/Expr V_1, class ABC/Expr V_2, - class ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret } .method public hidebysig virtual final - instance bool Equals(class ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/Expr::Equals(class ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -442,8 +452,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -488,8 +497,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -501,8 +509,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -525,8 +532,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -535,8 +541,7 @@ IL_0006: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -577,8 +582,7 @@ IL_0028: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -589,72 +593,92 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/MyExn - IL_0024: call instance int32 ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass ABC/MyExn - IL_0031: call instance int32 ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 - IL_0044: ldc.i4.0 - IL_0045: ret + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/MyExn + IL_001d: call instance int32 ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass ABC/MyExn + IL_0029: call instance int32 ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret + + IL_0039: ldc.i4.0 + IL_003a: ret + + IL_003b: ldc.i4.0 + IL_003c: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -697,8 +721,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -732,8 +755,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -747,8 +769,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -782,8 +803,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class ABC/ABC/Expr - NewNum(int32 item) cil managed + .method public static class ABC/ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -794,8 +814,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 0C 41 42 43 2B 41 42 43 2B 45 @@ -812,8 +831,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -824,8 +842,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -837,8 +854,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -852,8 +868,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -866,8 +881,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class ABC/ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -928,8 +942,7 @@ IL_0041: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1010,8 +1023,7 @@ IL_0050: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1058,8 +1070,7 @@ IL_002a: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1070,9 +1081,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1080,56 +1091,76 @@ .locals init (class ABC/ABC/Expr V_0, class ABC/ABC/Expr V_1, class ABC/ABC/Expr V_2, - class ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 ABC/ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 ABC/ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret } .method public hidebysig virtual final - instance bool Equals(class ABC/ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/Expr::Equals(class ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1166,8 +1197,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1212,8 +1242,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -1225,8 +1254,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -1249,8 +1277,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -1259,8 +1286,7 @@ IL_0006: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1301,8 +1327,7 @@ IL_0028: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1313,72 +1338,92 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/ABC/MyExn - IL_0024: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass ABC/ABC/MyExn - IL_0031: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 - IL_0044: ldc.i4.0 - IL_0045: ret + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/ABC/MyExn + IL_001d: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass ABC/ABC/MyExn + IL_0029: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret + + IL_0039: ldc.i4.0 + IL_003a: ret + + IL_003b: ldc.i4.0 + IL_003c: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1421,8 +1466,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1456,8 +1500,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -1471,8 +1514,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -1499,8 +1541,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1528,8 +1569,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1622,8 +1662,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1634,8 +1673,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOff.il.net472.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOff.il.net472.release.bsl index 8b78edc5598..16c7d7f10fd 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOff.il.net472.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOff.il.net472.release.bsl @@ -58,8 +58,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class ABC/Expr - NewNum(int32 item) cil managed + .method public static class ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -70,8 +69,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 08 41 42 43 2B 45 78 70 72 00 @@ -88,8 +86,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -100,8 +97,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -113,8 +109,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -128,8 +123,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -142,8 +136,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -195,8 +188,7 @@ IL_0035: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -268,8 +260,7 @@ IL_0045: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -310,8 +301,7 @@ IL_0025: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -322,9 +312,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -332,47 +322,67 @@ .locals init (class ABC/Expr V_0, class ABC/Expr V_1, class ABC/Expr V_2, - class ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret - - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret } .method public hidebysig virtual final - instance bool Equals(class ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/Expr::Equals(class ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -409,8 +419,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -455,8 +464,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -468,8 +476,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -492,8 +499,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -502,8 +508,7 @@ IL_0006: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -538,8 +543,7 @@ IL_0024: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -550,63 +554,83 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/MyExn - IL_0024: call instance int32 ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass ABC/MyExn - IL_002f: call instance int32 ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/MyExn + IL_001d: call instance int32 ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass ABC/MyExn + IL_0028: call instance int32 ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -649,8 +673,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -684,8 +707,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -699,8 +721,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -734,8 +755,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class ABC/ABC/Expr - NewNum(int32 item) cil managed + .method public static class ABC/ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -746,8 +766,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 0C 41 42 43 2B 41 42 43 2B 45 @@ -764,8 +783,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -776,8 +794,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -789,8 +806,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -804,8 +820,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -818,8 +833,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class ABC/ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -871,8 +885,7 @@ IL_0035: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -944,8 +957,7 @@ IL_0045: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -986,8 +998,7 @@ IL_0025: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -998,9 +1009,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1008,47 +1019,67 @@ .locals init (class ABC/ABC/Expr V_0, class ABC/ABC/Expr V_1, class ABC/ABC/Expr V_2, - class ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 ABC/ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 ABC/ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 ABC/ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret - - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret } .method public hidebysig virtual final - instance bool Equals(class ABC/ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/Expr::Equals(class ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1085,8 +1116,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1131,8 +1161,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -1144,8 +1173,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -1168,8 +1196,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -1178,8 +1205,7 @@ IL_0006: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1214,8 +1240,7 @@ IL_0024: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1226,63 +1251,83 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/ABC/MyExn - IL_0024: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass ABC/ABC/MyExn - IL_002f: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/ABC/MyExn + IL_001d: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass ABC/ABC/MyExn + IL_0028: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1325,8 +1370,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1360,8 +1404,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -1375,8 +1418,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -1403,8 +1445,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1432,8 +1473,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1526,8 +1566,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1538,8 +1577,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOff.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOff.il.netcore.debug.bsl index e2e321b7a73..8d461cd2267 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOff.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOff.il.netcore.debug.bsl @@ -58,8 +58,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class ABC/Expr - NewNum(int32 item) cil managed + .method public static class ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -70,8 +69,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 08 41 42 43 2B 45 78 70 72 00 @@ -88,8 +86,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -100,8 +97,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -113,8 +109,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -128,8 +123,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -142,8 +136,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -204,8 +197,7 @@ IL_0041: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -286,8 +278,7 @@ IL_0050: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -334,8 +325,7 @@ IL_002a: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -346,9 +336,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -356,56 +346,76 @@ .locals init (class ABC/Expr V_0, class ABC/Expr V_1, class ABC/Expr V_2, - class ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret } .method public hidebysig virtual final - instance bool Equals(class ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/Expr::Equals(class ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -442,8 +452,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -488,8 +497,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -501,8 +509,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -525,8 +532,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -535,8 +541,7 @@ IL_0006: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -577,8 +582,7 @@ IL_0028: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -589,72 +593,92 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/MyExn - IL_0024: call instance int32 ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass ABC/MyExn - IL_0031: call instance int32 ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 - IL_0044: ldc.i4.0 - IL_0045: ret + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/MyExn + IL_001d: call instance int32 ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass ABC/MyExn + IL_0029: call instance int32 ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret + + IL_0039: ldc.i4.0 + IL_003a: ret + + IL_003b: ldc.i4.0 + IL_003c: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -697,8 +721,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -732,8 +755,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -747,8 +769,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -782,8 +803,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class ABC/ABC/Expr - NewNum(int32 item) cil managed + .method public static class ABC/ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -794,8 +814,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 0C 41 42 43 2B 41 42 43 2B 45 @@ -812,8 +831,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -824,8 +842,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -837,8 +854,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -852,8 +868,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -866,8 +881,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class ABC/ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -928,8 +942,7 @@ IL_0041: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1010,8 +1023,7 @@ IL_0050: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1058,8 +1070,7 @@ IL_002a: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1070,9 +1081,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1080,56 +1091,76 @@ .locals init (class ABC/ABC/Expr V_0, class ABC/ABC/Expr V_1, class ABC/ABC/Expr V_2, - class ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 ABC/ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 ABC/ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret } .method public hidebysig virtual final - instance bool Equals(class ABC/ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/Expr::Equals(class ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1166,8 +1197,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1212,8 +1242,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -1225,8 +1254,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -1249,8 +1277,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -1259,8 +1286,7 @@ IL_0006: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1301,8 +1327,7 @@ IL_0028: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1313,72 +1338,92 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/ABC/MyExn - IL_0024: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass ABC/ABC/MyExn - IL_0031: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 - IL_0044: ldc.i4.0 - IL_0045: ret + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/ABC/MyExn + IL_001d: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass ABC/ABC/MyExn + IL_0029: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret + + IL_0039: ldc.i4.0 + IL_003a: ret + + IL_003b: ldc.i4.0 + IL_003c: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1421,8 +1466,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1456,8 +1500,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -1471,8 +1514,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -1499,8 +1541,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1528,8 +1569,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOff.il.netcore.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOff.il.netcore.release.bsl index a135eb5e29c..dcdd02e7cb5 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOff.il.netcore.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOff.il.netcore.release.bsl @@ -58,8 +58,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class ABC/Expr - NewNum(int32 item) cil managed + .method public static class ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -70,8 +69,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 08 41 42 43 2B 45 78 70 72 00 @@ -88,8 +86,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -100,8 +97,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -113,8 +109,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -128,8 +123,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -142,8 +136,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -195,8 +188,7 @@ IL_0035: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -268,8 +260,7 @@ IL_0045: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -310,8 +301,7 @@ IL_0025: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -322,9 +312,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -332,47 +322,67 @@ .locals init (class ABC/Expr V_0, class ABC/Expr V_1, class ABC/Expr V_2, - class ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret - - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret } .method public hidebysig virtual final - instance bool Equals(class ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/Expr::Equals(class ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -409,8 +419,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -455,8 +464,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -468,8 +476,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -492,8 +499,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -502,8 +508,7 @@ IL_0006: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -538,8 +543,7 @@ IL_0024: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -550,63 +554,83 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/MyExn - IL_0024: call instance int32 ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass ABC/MyExn - IL_002f: call instance int32 ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/MyExn + IL_001d: call instance int32 ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass ABC/MyExn + IL_0028: call instance int32 ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -649,8 +673,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -684,8 +707,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -699,8 +721,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -734,8 +755,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class ABC/ABC/Expr - NewNum(int32 item) cil managed + .method public static class ABC/ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -746,8 +766,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 0C 41 42 43 2B 41 42 43 2B 45 @@ -764,8 +783,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -776,8 +794,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -789,8 +806,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -804,8 +820,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -818,8 +833,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class ABC/ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -871,8 +885,7 @@ IL_0035: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -944,8 +957,7 @@ IL_0045: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -986,8 +998,7 @@ IL_0025: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -998,9 +1009,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1008,47 +1019,67 @@ .locals init (class ABC/ABC/Expr V_0, class ABC/ABC/Expr V_1, class ABC/ABC/Expr V_2, - class ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 ABC/ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 ABC/ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 ABC/ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret - - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret } .method public hidebysig virtual final - instance bool Equals(class ABC/ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/Expr::Equals(class ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1085,8 +1116,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1131,8 +1161,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -1144,8 +1173,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -1168,8 +1196,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -1178,8 +1205,7 @@ IL_0006: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1214,8 +1240,7 @@ IL_0024: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1226,63 +1251,83 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/ABC/MyExn - IL_0024: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass ABC/ABC/MyExn - IL_002f: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/ABC/MyExn + IL_001d: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass ABC/ABC/MyExn + IL_0028: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1325,8 +1370,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1360,8 +1404,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -1375,8 +1418,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -1403,8 +1445,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1432,8 +1473,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOn.il.net472.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOn.il.net472.debug.bsl index 0f51d627320..646c1a4b962 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOn.il.net472.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOn.il.net472.debug.bsl @@ -336,9 +336,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -346,52 +346,73 @@ .locals init (class ABC/Expr V_0, class ABC/Expr V_1, class ABC/Expr V_2, - class ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/Expr::Equals(class ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class ABC/Expr obj) cil managed @@ -572,68 +593,89 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/MyExn - IL_0024: call instance int32 ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass ABC/MyExn - IL_0031: call instance int32 ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/MyExn + IL_001d: call instance int32 ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass ABC/MyExn + IL_0029: call instance int32 ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0039: ldc.i4.0 + IL_003a: ret - IL_0044: ldc.i4.0 - IL_0045: ret + IL_003b: ldc.i4.0 + IL_003c: ret + + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed @@ -1039,9 +1081,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1049,52 +1091,73 @@ .locals init (class ABC/ABC/Expr V_0, class ABC/ABC/Expr V_1, class ABC/ABC/Expr V_2, - class ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 ABC/ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 ABC/ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/Expr::Equals(class ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class ABC/ABC/Expr obj) cil managed @@ -1275,68 +1338,89 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/ABC/MyExn - IL_0024: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass ABC/ABC/MyExn - IL_0031: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/ABC/MyExn + IL_001d: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass ABC/ABC/MyExn + IL_0029: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0039: ldc.i4.0 + IL_003a: ret - IL_0044: ldc.i4.0 - IL_0045: ret + IL_003b: ldc.i4.0 + IL_003c: ret + + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOn.il.net472.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOn.il.net472.release.bsl index 26beffa3381..8562e74afca 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOn.il.net472.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOn.il.net472.release.bsl @@ -312,9 +312,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -322,43 +322,64 @@ .locals init (class ABC/Expr V_0, class ABC/Expr V_1, class ABC/Expr V_2, - class ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/Expr::Equals(class ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class ABC/Expr obj) cil managed @@ -533,59 +554,80 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/MyExn - IL_0024: call instance int32 ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass ABC/MyExn - IL_002f: call instance int32 ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/MyExn + IL_001d: call instance int32 ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass ABC/MyExn + IL_0028: call instance int32 ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed @@ -967,9 +1009,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -977,43 +1019,64 @@ .locals init (class ABC/ABC/Expr V_0, class ABC/ABC/Expr V_1, class ABC/ABC/Expr V_2, - class ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 ABC/ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 ABC/ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 ABC/ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/Expr::Equals(class ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class ABC/ABC/Expr obj) cil managed @@ -1188,59 +1251,80 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/ABC/MyExn - IL_0024: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass ABC/ABC/MyExn - IL_002f: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/ABC/MyExn + IL_001d: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass ABC/ABC/MyExn + IL_0028: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOn.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOn.il.netcore.debug.bsl index 61decc2a571..cdc87d07134 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOn.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOn.il.netcore.debug.bsl @@ -336,9 +336,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -346,52 +346,73 @@ .locals init (class ABC/Expr V_0, class ABC/Expr V_1, class ABC/Expr V_2, - class ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/Expr::Equals(class ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class ABC/Expr obj) cil managed @@ -572,68 +593,89 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/MyExn - IL_0024: call instance int32 ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass ABC/MyExn - IL_0031: call instance int32 ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/MyExn + IL_001d: call instance int32 ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass ABC/MyExn + IL_0029: call instance int32 ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0039: ldc.i4.0 + IL_003a: ret - IL_0044: ldc.i4.0 - IL_0045: ret + IL_003b: ldc.i4.0 + IL_003c: ret + + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed @@ -1039,9 +1081,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1049,52 +1091,73 @@ .locals init (class ABC/ABC/Expr V_0, class ABC/ABC/Expr V_1, class ABC/ABC/Expr V_2, - class ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 ABC/ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 ABC/ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/Expr::Equals(class ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class ABC/ABC/Expr obj) cil managed @@ -1275,68 +1338,89 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/ABC/MyExn - IL_0024: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass ABC/ABC/MyExn - IL_0031: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/ABC/MyExn + IL_001d: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass ABC/ABC/MyExn + IL_0029: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0039: ldc.i4.0 + IL_003a: ret - IL_0044: ldc.i4.0 - IL_0045: ret + IL_003b: ldc.i4.0 + IL_003c: ret + + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOn.il.netcore.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOn.il.netcore.release.bsl index 6ebfb734de4..73438f4703a 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOn.il.netcore.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelModule60.fs.RealInternalSignatureOn.il.netcore.release.bsl @@ -312,9 +312,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -322,43 +322,64 @@ .locals init (class ABC/Expr V_0, class ABC/Expr V_1, class ABC/Expr V_2, - class ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/Expr::Equals(class ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class ABC/Expr obj) cil managed @@ -533,59 +554,80 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/MyExn - IL_0024: call instance int32 ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass ABC/MyExn - IL_002f: call instance int32 ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/MyExn + IL_001d: call instance int32 ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass ABC/MyExn + IL_0028: call instance int32 ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed @@ -967,9 +1009,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -977,43 +1019,64 @@ .locals init (class ABC/ABC/Expr V_0, class ABC/ABC/Expr V_1, class ABC/ABC/Expr V_2, - class ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 ABC/ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 ABC/ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 ABC/ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 ABC/ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/Expr::Equals(class ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class ABC/ABC/Expr obj) cil managed @@ -1188,59 +1251,80 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass ABC/ABC/MyExn - IL_0024: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass ABC/ABC/MyExn - IL_002f: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass ABC/ABC/MyExn + IL_001d: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass ABC/ABC/MyExn + IL_0028: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOff.il.net472.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOff.il.net472.debug.bsl index 4d7249ed965..b80313a9d48 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOff.il.net472.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOff.il.net472.debug.bsl @@ -65,8 +65,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 08 58 59 5A 2E 45 78 70 72 00 @@ -83,8 +82,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -95,8 +93,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -108,8 +105,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -123,8 +119,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -137,8 +132,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class XYZ.Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class XYZ.Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -199,8 +193,7 @@ IL_0041: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -281,8 +274,7 @@ IL_0050: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -329,8 +321,7 @@ IL_002a: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -341,9 +332,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -351,56 +342,76 @@ .locals init (class XYZ.Expr V_0, class XYZ.Expr V_1, class XYZ.Expr V_2, - class XYZ.Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst XYZ.Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 XYZ.Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 XYZ.Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret } .method public hidebysig virtual final - instance bool Equals(class XYZ.Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.Expr::Equals(class XYZ.Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class XYZ.Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -437,8 +448,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -483,8 +493,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -496,8 +505,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -520,8 +528,7 @@ IL_0008: ret } - .method public hidebysig specialname instance int32 - get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -530,8 +537,7 @@ IL_0006: ret } - .method public strict virtual instance string - get_Message() cil managed + .method public strict virtual instance string get_Message() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -544,8 +550,7 @@ IL_0015: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -586,8 +591,7 @@ IL_0028: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -598,72 +602,92 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.MyExn - IL_0024: call instance int32 XYZ.MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass XYZ.MyExn - IL_0031: call instance int32 XYZ.MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.MyExn + IL_001d: call instance int32 XYZ.MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass XYZ.MyExn + IL_0029: call instance int32 XYZ.MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0039: ldc.i4.0 + IL_003a: ret - IL_0044: ldc.i4.0 - IL_0045: ret + IL_003b: ldc.i4.0 + IL_003c: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -706,8 +730,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -741,8 +764,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -756,8 +778,7 @@ IL_000f: ret } - .method public hidebysig specialname instance string - get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -791,8 +812,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class XYZ.ABC/Expr - NewNum(int32 item) cil managed + .method public static class XYZ.ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -803,8 +823,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 0C 58 59 5A 2E 41 42 43 2B 45 @@ -821,8 +840,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -833,8 +851,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -846,8 +863,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -861,8 +877,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -875,8 +890,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class XYZ.ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class XYZ.ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -937,8 +951,7 @@ IL_0041: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1019,8 +1032,7 @@ IL_0050: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1067,8 +1079,7 @@ IL_002a: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1079,9 +1090,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1089,56 +1100,76 @@ .locals init (class XYZ.ABC/Expr V_0, class XYZ.ABC/Expr V_1, class XYZ.ABC/Expr V_2, - class XYZ.ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 XYZ.ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 XYZ.ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret } .method public hidebysig virtual final - instance bool Equals(class XYZ.ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/Expr::Equals(class XYZ.ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1175,8 +1206,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1221,8 +1251,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -1234,8 +1263,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -1258,8 +1286,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -1268,8 +1295,7 @@ IL_0006: ret } - .method public strict virtual instance string - get_Message() cil managed + .method public strict virtual instance string get_Message() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1282,8 +1308,7 @@ IL_0015: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1324,8 +1349,7 @@ IL_0028: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1336,72 +1360,92 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass XYZ.ABC/MyExn - IL_0031: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass XYZ.ABC/MyExn + IL_0029: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret - IL_0044: ldc.i4.0 - IL_0045: ret + IL_0039: ldc.i4.0 + IL_003a: ret + + IL_003b: ldc.i4.0 + IL_003c: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1444,8 +1488,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1479,8 +1522,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -1494,8 +1536,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -1529,8 +1570,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class XYZ.ABC/ABC/Expr - NewNum(int32 item) cil managed + .method public static class XYZ.ABC/ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -1541,8 +1581,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 10 58 59 5A 2E 41 42 43 2B 41 @@ -1559,8 +1598,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1571,8 +1609,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1584,8 +1621,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1599,8 +1635,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1613,8 +1648,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class XYZ.ABC/ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class XYZ.ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1675,8 +1709,7 @@ IL_0041: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1757,8 +1790,7 @@ IL_0050: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1805,8 +1837,7 @@ IL_002a: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1817,9 +1848,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1827,56 +1858,76 @@ .locals init (class XYZ.ABC/ABC/Expr V_0, class XYZ.ABC/ABC/Expr V_1, class XYZ.ABC/ABC/Expr V_2, - class XYZ.ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 XYZ.ABC/ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret } .method public hidebysig virtual final - instance bool Equals(class XYZ.ABC/ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/Expr::Equals(class XYZ.ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1913,8 +1964,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1959,8 +2009,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -1972,8 +2021,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -1996,8 +2044,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -2006,8 +2053,7 @@ IL_0006: ret } - .method public strict virtual instance string - get_Message() cil managed + .method public strict virtual instance string get_Message() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -2020,8 +2066,7 @@ IL_0015: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -2062,8 +2107,7 @@ IL_0028: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -2074,72 +2118,92 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass XYZ.ABC/ABC/MyExn - IL_0031: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 - IL_0044: ldc.i4.0 - IL_0045: ret + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass XYZ.ABC/ABC/MyExn + IL_0029: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_0039: ldc.i4.0 + IL_003a: ret + + IL_003b: ldc.i4.0 + IL_003c: ret + + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -2182,8 +2246,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -2217,8 +2280,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -2232,8 +2294,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -2260,8 +2321,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2289,8 +2349,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2383,8 +2442,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2395,8 +2453,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOff.il.net472.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOff.il.net472.release.bsl index 2be8144663d..1a6d76fe566 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOff.il.net472.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOff.il.net472.release.bsl @@ -65,8 +65,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 08 58 59 5A 2E 45 78 70 72 00 @@ -83,8 +82,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -95,8 +93,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -108,8 +105,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -123,8 +119,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -137,8 +132,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class XYZ.Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class XYZ.Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -190,8 +184,7 @@ IL_0035: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -263,8 +256,7 @@ IL_0045: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -305,8 +297,7 @@ IL_0025: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -317,9 +308,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -327,47 +318,67 @@ .locals init (class XYZ.Expr V_0, class XYZ.Expr V_1, class XYZ.Expr V_2, - class XYZ.Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst XYZ.Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 XYZ.Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 XYZ.Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 XYZ.Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret - - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret } .method public hidebysig virtual final - instance bool Equals(class XYZ.Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.Expr::Equals(class XYZ.Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class XYZ.Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -404,8 +415,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -450,8 +460,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -463,8 +472,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -487,8 +495,7 @@ IL_0008: ret } - .method public hidebysig specialname instance int32 - get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -497,8 +504,7 @@ IL_0006: ret } - .method public strict virtual instance string - get_Message() cil managed + .method public strict virtual instance string get_Message() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -511,8 +517,7 @@ IL_0015: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -547,8 +552,7 @@ IL_0024: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -559,63 +563,83 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.MyExn - IL_0024: call instance int32 XYZ.MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass XYZ.MyExn - IL_002f: call instance int32 XYZ.MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.MyExn + IL_001d: call instance int32 XYZ.MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass XYZ.MyExn + IL_0028: call instance int32 XYZ.MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -658,8 +682,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -693,8 +716,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -708,8 +730,7 @@ IL_000f: ret } - .method public hidebysig specialname instance string - get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -743,8 +764,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class XYZ.ABC/Expr - NewNum(int32 item) cil managed + .method public static class XYZ.ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -755,8 +775,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 0C 58 59 5A 2E 41 42 43 2B 45 @@ -773,8 +792,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -785,8 +803,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -798,8 +815,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -813,8 +829,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -827,8 +842,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class XYZ.ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class XYZ.ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -880,8 +894,7 @@ IL_0035: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -953,8 +966,7 @@ IL_0045: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -995,8 +1007,7 @@ IL_0025: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1007,9 +1018,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1017,47 +1028,67 @@ .locals init (class XYZ.ABC/Expr V_0, class XYZ.ABC/Expr V_1, class XYZ.ABC/Expr V_2, - class XYZ.ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 XYZ.ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 XYZ.ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 XYZ.ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret - - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret } .method public hidebysig virtual final - instance bool Equals(class XYZ.ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/Expr::Equals(class XYZ.ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1094,8 +1125,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1140,8 +1170,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -1153,8 +1182,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -1177,8 +1205,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -1187,8 +1214,7 @@ IL_0006: ret } - .method public strict virtual instance string - get_Message() cil managed + .method public strict virtual instance string get_Message() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1201,8 +1227,7 @@ IL_0015: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1237,8 +1262,7 @@ IL_0024: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1249,63 +1273,83 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass XYZ.ABC/MyExn - IL_002f: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass XYZ.ABC/MyExn + IL_0028: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1348,8 +1392,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1383,8 +1426,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -1398,8 +1440,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -1433,8 +1474,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class XYZ.ABC/ABC/Expr - NewNum(int32 item) cil managed + .method public static class XYZ.ABC/ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -1445,8 +1485,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 10 58 59 5A 2E 41 42 43 2B 41 @@ -1463,8 +1502,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1475,8 +1513,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1488,8 +1525,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1503,8 +1539,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1517,8 +1552,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class XYZ.ABC/ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class XYZ.ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1570,8 +1604,7 @@ IL_0035: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1643,8 +1676,7 @@ IL_0045: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1685,8 +1717,7 @@ IL_0025: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1697,9 +1728,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1707,47 +1738,67 @@ .locals init (class XYZ.ABC/ABC/Expr V_0, class XYZ.ABC/ABC/Expr V_1, class XYZ.ABC/ABC/Expr V_2, - class XYZ.ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret - - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret } .method public hidebysig virtual final - instance bool Equals(class XYZ.ABC/ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/Expr::Equals(class XYZ.ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1784,8 +1835,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1830,8 +1880,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -1843,8 +1892,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -1867,8 +1915,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -1877,8 +1924,7 @@ IL_0006: ret } - .method public strict virtual instance string - get_Message() cil managed + .method public strict virtual instance string get_Message() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1891,8 +1937,7 @@ IL_0015: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1927,8 +1972,7 @@ IL_0024: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1939,63 +1983,83 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass XYZ.ABC/ABC/MyExn - IL_002f: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass XYZ.ABC/ABC/MyExn + IL_0028: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -2038,8 +2102,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -2073,8 +2136,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -2088,8 +2150,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -2116,8 +2177,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2145,8 +2205,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2239,8 +2298,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2251,8 +2309,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOff.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOff.il.netcore.debug.bsl index 80e5ad2941e..abb4380636f 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOff.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOff.il.netcore.debug.bsl @@ -65,8 +65,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 08 58 59 5A 2E 45 78 70 72 00 @@ -83,8 +82,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -95,8 +93,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -108,8 +105,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -123,8 +119,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -137,8 +132,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class XYZ.Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class XYZ.Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -199,8 +193,7 @@ IL_0041: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -281,8 +274,7 @@ IL_0050: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -329,8 +321,7 @@ IL_002a: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -341,9 +332,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -351,56 +342,76 @@ .locals init (class XYZ.Expr V_0, class XYZ.Expr V_1, class XYZ.Expr V_2, - class XYZ.Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst XYZ.Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 XYZ.Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 XYZ.Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret } .method public hidebysig virtual final - instance bool Equals(class XYZ.Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.Expr::Equals(class XYZ.Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class XYZ.Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -437,8 +448,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -483,8 +493,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -496,8 +505,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -520,8 +528,7 @@ IL_0008: ret } - .method public hidebysig specialname instance int32 - get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -530,8 +537,7 @@ IL_0006: ret } - .method public strict virtual instance string - get_Message() cil managed + .method public strict virtual instance string get_Message() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -544,8 +550,7 @@ IL_0015: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -586,8 +591,7 @@ IL_0028: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -598,72 +602,92 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.MyExn - IL_0024: call instance int32 XYZ.MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass XYZ.MyExn - IL_0031: call instance int32 XYZ.MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.MyExn + IL_001d: call instance int32 XYZ.MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass XYZ.MyExn + IL_0029: call instance int32 XYZ.MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0039: ldc.i4.0 + IL_003a: ret - IL_0044: ldc.i4.0 - IL_0045: ret + IL_003b: ldc.i4.0 + IL_003c: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -706,8 +730,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -741,8 +764,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -756,8 +778,7 @@ IL_000f: ret } - .method public hidebysig specialname instance string - get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -791,8 +812,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class XYZ.ABC/Expr - NewNum(int32 item) cil managed + .method public static class XYZ.ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -803,8 +823,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 0C 58 59 5A 2E 41 42 43 2B 45 @@ -821,8 +840,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -833,8 +851,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -846,8 +863,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -861,8 +877,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -875,8 +890,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class XYZ.ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class XYZ.ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -937,8 +951,7 @@ IL_0041: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1019,8 +1032,7 @@ IL_0050: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1067,8 +1079,7 @@ IL_002a: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1079,9 +1090,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1089,56 +1100,76 @@ .locals init (class XYZ.ABC/Expr V_0, class XYZ.ABC/Expr V_1, class XYZ.ABC/Expr V_2, - class XYZ.ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 XYZ.ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 XYZ.ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret } .method public hidebysig virtual final - instance bool Equals(class XYZ.ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/Expr::Equals(class XYZ.ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1175,8 +1206,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1221,8 +1251,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -1234,8 +1263,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -1258,8 +1286,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -1268,8 +1295,7 @@ IL_0006: ret } - .method public strict virtual instance string - get_Message() cil managed + .method public strict virtual instance string get_Message() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1282,8 +1308,7 @@ IL_0015: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1324,8 +1349,7 @@ IL_0028: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1336,72 +1360,92 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass XYZ.ABC/MyExn - IL_0031: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 - IL_0044: ldc.i4.0 - IL_0045: ret + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass XYZ.ABC/MyExn + IL_0029: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_0039: ldc.i4.0 + IL_003a: ret + + IL_003b: ldc.i4.0 + IL_003c: ret + + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1444,8 +1488,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1479,8 +1522,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -1494,8 +1536,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -1529,8 +1570,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class XYZ.ABC/ABC/Expr - NewNum(int32 item) cil managed + .method public static class XYZ.ABC/ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -1541,8 +1581,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 10 58 59 5A 2E 41 42 43 2B 41 @@ -1559,8 +1598,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1571,8 +1609,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1584,8 +1621,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1599,8 +1635,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1613,8 +1648,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class XYZ.ABC/ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class XYZ.ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1675,8 +1709,7 @@ IL_0041: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1757,8 +1790,7 @@ IL_0050: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1805,8 +1837,7 @@ IL_002a: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1817,9 +1848,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1827,56 +1858,76 @@ .locals init (class XYZ.ABC/ABC/Expr V_0, class XYZ.ABC/ABC/Expr V_1, class XYZ.ABC/ABC/Expr V_2, - class XYZ.ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 XYZ.ABC/ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret } .method public hidebysig virtual final - instance bool Equals(class XYZ.ABC/ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/Expr::Equals(class XYZ.ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1913,8 +1964,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1959,8 +2009,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -1972,8 +2021,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -1996,8 +2044,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -2006,8 +2053,7 @@ IL_0006: ret } - .method public strict virtual instance string - get_Message() cil managed + .method public strict virtual instance string get_Message() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -2020,8 +2066,7 @@ IL_0015: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -2062,8 +2107,7 @@ IL_0028: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -2074,72 +2118,92 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass XYZ.ABC/ABC/MyExn - IL_0031: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass XYZ.ABC/ABC/MyExn + IL_0029: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0039: ldc.i4.0 + IL_003a: ret - IL_0044: ldc.i4.0 - IL_0045: ret + IL_003b: ldc.i4.0 + IL_003c: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -2182,8 +2246,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -2217,8 +2280,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -2232,8 +2294,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -2260,8 +2321,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2289,8 +2349,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOff.il.netcore.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOff.il.netcore.release.bsl index a0f163ca85f..260a3e3b2b7 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOff.il.netcore.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOff.il.netcore.release.bsl @@ -65,8 +65,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 08 58 59 5A 2E 45 78 70 72 00 @@ -83,8 +82,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -95,8 +93,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -108,8 +105,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -123,8 +119,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -137,8 +132,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class XYZ.Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class XYZ.Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -190,8 +184,7 @@ IL_0035: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -263,8 +256,7 @@ IL_0045: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -305,8 +297,7 @@ IL_0025: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -317,9 +308,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -327,47 +318,67 @@ .locals init (class XYZ.Expr V_0, class XYZ.Expr V_1, class XYZ.Expr V_2, - class XYZ.Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst XYZ.Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 XYZ.Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 XYZ.Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 XYZ.Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret - - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret } .method public hidebysig virtual final - instance bool Equals(class XYZ.Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.Expr::Equals(class XYZ.Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class XYZ.Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -404,8 +415,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -450,8 +460,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -463,8 +472,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -487,8 +495,7 @@ IL_0008: ret } - .method public hidebysig specialname instance int32 - get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -497,8 +504,7 @@ IL_0006: ret } - .method public strict virtual instance string - get_Message() cil managed + .method public strict virtual instance string get_Message() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -511,8 +517,7 @@ IL_0015: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -547,8 +552,7 @@ IL_0024: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -559,63 +563,83 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.MyExn - IL_0024: call instance int32 XYZ.MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass XYZ.MyExn - IL_002f: call instance int32 XYZ.MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.MyExn + IL_001d: call instance int32 XYZ.MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass XYZ.MyExn + IL_0028: call instance int32 XYZ.MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -658,8 +682,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -693,8 +716,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -708,8 +730,7 @@ IL_000f: ret } - .method public hidebysig specialname instance string - get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -743,8 +764,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class XYZ.ABC/Expr - NewNum(int32 item) cil managed + .method public static class XYZ.ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -755,8 +775,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 0C 58 59 5A 2E 41 42 43 2B 45 @@ -773,8 +792,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -785,8 +803,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -798,8 +815,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -813,8 +829,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -827,8 +842,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class XYZ.ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class XYZ.ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -880,8 +894,7 @@ IL_0035: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -953,8 +966,7 @@ IL_0045: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -995,8 +1007,7 @@ IL_0025: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1007,9 +1018,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1017,47 +1028,67 @@ .locals init (class XYZ.ABC/Expr V_0, class XYZ.ABC/Expr V_1, class XYZ.ABC/Expr V_2, - class XYZ.ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 XYZ.ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 XYZ.ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 XYZ.ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret - - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret } .method public hidebysig virtual final - instance bool Equals(class XYZ.ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/Expr::Equals(class XYZ.ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1094,8 +1125,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1140,8 +1170,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -1153,8 +1182,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -1177,8 +1205,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -1187,8 +1214,7 @@ IL_0006: ret } - .method public strict virtual instance string - get_Message() cil managed + .method public strict virtual instance string get_Message() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1201,8 +1227,7 @@ IL_0015: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1237,8 +1262,7 @@ IL_0024: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1249,63 +1273,83 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass XYZ.ABC/MyExn - IL_002f: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass XYZ.ABC/MyExn + IL_0028: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1348,8 +1392,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1383,8 +1426,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -1398,8 +1440,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -1433,8 +1474,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class XYZ.ABC/ABC/Expr - NewNum(int32 item) cil managed + .method public static class XYZ.ABC/ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -1445,8 +1485,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 10 58 59 5A 2E 41 42 43 2B 41 @@ -1463,8 +1502,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1475,8 +1513,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1488,8 +1525,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1503,8 +1539,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1517,8 +1552,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class XYZ.ABC/ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class XYZ.ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1570,8 +1604,7 @@ IL_0035: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1643,8 +1676,7 @@ IL_0045: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1685,8 +1717,7 @@ IL_0025: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1697,9 +1728,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1707,47 +1738,67 @@ .locals init (class XYZ.ABC/ABC/Expr V_0, class XYZ.ABC/ABC/Expr V_1, class XYZ.ABC/ABC/Expr V_2, - class XYZ.ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret - - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret } .method public hidebysig virtual final - instance bool Equals(class XYZ.ABC/ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/Expr::Equals(class XYZ.ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1784,8 +1835,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1830,8 +1880,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -1843,8 +1892,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -1867,8 +1915,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -1877,8 +1924,7 @@ IL_0006: ret } - .method public strict virtual instance string - get_Message() cil managed + .method public strict virtual instance string get_Message() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1891,8 +1937,7 @@ IL_0015: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1927,8 +1972,7 @@ IL_0024: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1939,63 +1983,83 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass XYZ.ABC/ABC/MyExn - IL_002f: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass XYZ.ABC/ABC/MyExn + IL_0028: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -2038,8 +2102,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -2073,8 +2136,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -2088,8 +2150,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -2116,8 +2177,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2145,8 +2205,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOn.il.net472.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOn.il.net472.debug.bsl index 04222059db2..9ebef9ba065 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOn.il.net472.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOn.il.net472.debug.bsl @@ -332,9 +332,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -342,52 +342,73 @@ .locals init (class XYZ.Expr V_0, class XYZ.Expr V_1, class XYZ.Expr V_2, - class XYZ.Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst XYZ.Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 XYZ.Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 XYZ.Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.Expr::Equals(class XYZ.Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class XYZ.Expr obj) cil managed @@ -581,68 +602,89 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.MyExn - IL_0024: call instance int32 XYZ.MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass XYZ.MyExn - IL_0031: call instance int32 XYZ.MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.MyExn + IL_001d: call instance int32 XYZ.MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass XYZ.MyExn + IL_0029: call instance int32 XYZ.MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret + + IL_0039: ldc.i4.0 + IL_003a: ret + + IL_003b: ldc.i4.0 + IL_003c: ret - IL_0042: ldc.i4.0 - IL_0043: ret + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 - IL_0044: ldc.i4.0 - IL_0045: ret + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed @@ -1048,9 +1090,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1058,52 +1100,73 @@ .locals init (class XYZ.ABC/Expr V_0, class XYZ.ABC/Expr V_1, class XYZ.ABC/Expr V_2, - class XYZ.ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 XYZ.ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 XYZ.ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/Expr::Equals(class XYZ.ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/Expr obj) cil managed @@ -1297,68 +1360,89 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass XYZ.ABC/MyExn - IL_0031: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass XYZ.ABC/MyExn + IL_0029: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0039: ldc.i4.0 + IL_003a: ret + + IL_003b: ldc.i4.0 + IL_003c: ret + + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 - IL_0044: ldc.i4.0 - IL_0045: ret + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed @@ -1764,9 +1848,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1774,52 +1858,73 @@ .locals init (class XYZ.ABC/ABC/Expr V_0, class XYZ.ABC/ABC/Expr V_1, class XYZ.ABC/ABC/Expr V_2, - class XYZ.ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 XYZ.ABC/ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/Expr::Equals(class XYZ.ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/ABC/Expr obj) cil managed @@ -2013,68 +2118,89 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass XYZ.ABC/ABC/MyExn - IL_0031: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass XYZ.ABC/ABC/MyExn + IL_0029: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret + + IL_0039: ldc.i4.0 + IL_003a: ret + + IL_003b: ldc.i4.0 + IL_003c: ret + + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret + } - IL_0042: ldc.i4.0 - IL_0043: ret + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 - IL_0044: ldc.i4.0 - IL_0045: ret + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOn.il.net472.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOn.il.net472.release.bsl index ebdd0bcea99..805140d7920 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOn.il.net472.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOn.il.net472.release.bsl @@ -308,9 +308,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -318,43 +318,64 @@ .locals init (class XYZ.Expr V_0, class XYZ.Expr V_1, class XYZ.Expr V_2, - class XYZ.Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst XYZ.Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 XYZ.Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 XYZ.Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 XYZ.Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret + } - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.Expr::Equals(class XYZ.Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class XYZ.Expr obj) cil managed @@ -542,59 +563,80 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.MyExn - IL_0024: call instance int32 XYZ.MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass XYZ.MyExn - IL_002f: call instance int32 XYZ.MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.MyExn + IL_001d: call instance int32 XYZ.MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass XYZ.MyExn + IL_0028: call instance int32 XYZ.MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed @@ -976,9 +1018,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -986,43 +1028,64 @@ .locals init (class XYZ.ABC/Expr V_0, class XYZ.ABC/Expr V_1, class XYZ.ABC/Expr V_2, - class XYZ.ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 XYZ.ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 XYZ.ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 XYZ.ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret + } - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/Expr::Equals(class XYZ.ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/Expr obj) cil managed @@ -1210,59 +1273,80 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass XYZ.ABC/MyExn - IL_002f: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass XYZ.ABC/MyExn + IL_0028: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed @@ -1644,9 +1728,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1654,43 +1738,64 @@ .locals init (class XYZ.ABC/ABC/Expr V_0, class XYZ.ABC/ABC/Expr V_1, class XYZ.ABC/ABC/Expr V_2, - class XYZ.ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/Expr::Equals(class XYZ.ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/ABC/Expr obj) cil managed @@ -1878,59 +1983,80 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass XYZ.ABC/ABC/MyExn - IL_002f: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass XYZ.ABC/ABC/MyExn + IL_0028: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOn.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOn.il.netcore.debug.bsl index 91efa2ba6b5..cc1c279a5d1 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOn.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOn.il.netcore.debug.bsl @@ -332,9 +332,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -342,52 +342,73 @@ .locals init (class XYZ.Expr V_0, class XYZ.Expr V_1, class XYZ.Expr V_2, - class XYZ.Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst XYZ.Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 XYZ.Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 XYZ.Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.Expr::Equals(class XYZ.Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class XYZ.Expr obj) cil managed @@ -581,68 +602,89 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.MyExn - IL_0024: call instance int32 XYZ.MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass XYZ.MyExn - IL_0031: call instance int32 XYZ.MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 - IL_0044: ldc.i4.0 - IL_0045: ret + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.MyExn + IL_001d: call instance int32 XYZ.MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass XYZ.MyExn + IL_0029: call instance int32 XYZ.MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret + + IL_0039: ldc.i4.0 + IL_003a: ret + + IL_003b: ldc.i4.0 + IL_003c: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed @@ -1048,9 +1090,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1058,52 +1100,73 @@ .locals init (class XYZ.ABC/Expr V_0, class XYZ.ABC/Expr V_1, class XYZ.ABC/Expr V_2, - class XYZ.ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 XYZ.ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 XYZ.ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/Expr::Equals(class XYZ.ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/Expr obj) cil managed @@ -1297,68 +1360,89 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass XYZ.ABC/MyExn - IL_0031: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass XYZ.ABC/MyExn + IL_0029: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0039: ldc.i4.0 + IL_003a: ret - IL_0044: ldc.i4.0 - IL_0045: ret + IL_003b: ldc.i4.0 + IL_003c: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed @@ -1764,9 +1848,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1774,52 +1858,73 @@ .locals init (class XYZ.ABC/ABC/Expr V_0, class XYZ.ABC/ABC/Expr V_1, class XYZ.ABC/ABC/Expr V_2, - class XYZ.ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 XYZ.ABC/ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/Expr::Equals(class XYZ.ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/ABC/Expr obj) cil managed @@ -2013,68 +2118,89 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass XYZ.ABC/ABC/MyExn - IL_0031: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass XYZ.ABC/ABC/MyExn + IL_0029: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret - IL_0044: ldc.i4.0 - IL_0045: ret + IL_0039: ldc.i4.0 + IL_003a: ret + + IL_003b: ldc.i4.0 + IL_003c: ret + + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOn.il.netcore.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOn.il.netcore.release.bsl index 2d15f5a89d6..780a3194964 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOn.il.netcore.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace.fs.RealInternalSignatureOn.il.netcore.release.bsl @@ -308,9 +308,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -318,43 +318,64 @@ .locals init (class XYZ.Expr V_0, class XYZ.Expr V_1, class XYZ.Expr V_2, - class XYZ.Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst XYZ.Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 XYZ.Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 XYZ.Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 XYZ.Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret + } - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.Expr::Equals(class XYZ.Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class XYZ.Expr obj) cil managed @@ -542,59 +563,80 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.MyExn - IL_0024: call instance int32 XYZ.MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass XYZ.MyExn - IL_002f: call instance int32 XYZ.MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.MyExn + IL_001d: call instance int32 XYZ.MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass XYZ.MyExn + IL_0028: call instance int32 XYZ.MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed @@ -976,9 +1018,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -986,43 +1028,64 @@ .locals init (class XYZ.ABC/Expr V_0, class XYZ.ABC/Expr V_1, class XYZ.ABC/Expr V_2, - class XYZ.ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 XYZ.ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 XYZ.ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 XYZ.ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret + } - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/Expr::Equals(class XYZ.ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/Expr obj) cil managed @@ -1210,59 +1273,80 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass XYZ.ABC/MyExn - IL_002f: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass XYZ.ABC/MyExn + IL_0028: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed @@ -1644,9 +1728,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1654,43 +1738,64 @@ .locals init (class XYZ.ABC/ABC/Expr V_0, class XYZ.ABC/ABC/Expr V_1, class XYZ.ABC/ABC/Expr V_2, - class XYZ.ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/Expr::Equals(class XYZ.ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/ABC/Expr obj) cil managed @@ -1878,59 +1983,80 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass XYZ.ABC/ABC/MyExn - IL_002f: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass XYZ.ABC/ABC/MyExn + IL_0028: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOff.il.net472.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOff.il.net472.debug.bsl index fc789ac2336..e82fbe637eb 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOff.il.net472.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOff.il.net472.debug.bsl @@ -65,8 +65,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 08 58 59 5A 2E 45 78 70 72 00 @@ -83,8 +82,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -95,8 +93,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -108,8 +105,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -123,8 +119,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -137,8 +132,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class XYZ.Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class XYZ.Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -199,8 +193,7 @@ IL_0041: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -281,8 +274,7 @@ IL_0050: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -329,8 +321,7 @@ IL_002a: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -341,9 +332,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -351,56 +342,76 @@ .locals init (class XYZ.Expr V_0, class XYZ.Expr V_1, class XYZ.Expr V_2, - class XYZ.Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst XYZ.Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 XYZ.Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 XYZ.Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret } .method public hidebysig virtual final - instance bool Equals(class XYZ.Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.Expr::Equals(class XYZ.Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class XYZ.Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -437,8 +448,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -483,8 +493,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -496,8 +505,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -520,8 +528,7 @@ IL_0008: ret } - .method public hidebysig specialname instance int32 - get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -530,8 +537,7 @@ IL_0006: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -572,8 +578,7 @@ IL_0028: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -584,72 +589,92 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.MyExn - IL_0024: call instance int32 XYZ.MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass XYZ.MyExn - IL_0031: call instance int32 XYZ.MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.MyExn + IL_001d: call instance int32 XYZ.MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass XYZ.MyExn + IL_0029: call instance int32 XYZ.MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0039: ldc.i4.0 + IL_003a: ret - IL_0044: ldc.i4.0 - IL_0045: ret + IL_003b: ldc.i4.0 + IL_003c: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -692,8 +717,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -727,8 +751,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -742,8 +765,7 @@ IL_000f: ret } - .method public hidebysig specialname instance string - get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -777,8 +799,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class XYZ.ABC/Expr - NewNum(int32 item) cil managed + .method public static class XYZ.ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -789,8 +810,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 0C 58 59 5A 2E 41 42 43 2B 45 @@ -807,8 +827,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -819,8 +838,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -832,8 +850,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -847,8 +864,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -861,8 +877,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class XYZ.ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class XYZ.ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -923,8 +938,7 @@ IL_0041: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1005,8 +1019,7 @@ IL_0050: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1053,8 +1066,7 @@ IL_002a: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1065,9 +1077,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1075,56 +1087,76 @@ .locals init (class XYZ.ABC/Expr V_0, class XYZ.ABC/Expr V_1, class XYZ.ABC/Expr V_2, - class XYZ.ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 XYZ.ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 XYZ.ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret } .method public hidebysig virtual final - instance bool Equals(class XYZ.ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/Expr::Equals(class XYZ.ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1161,8 +1193,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1207,8 +1238,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -1220,8 +1250,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -1244,8 +1273,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -1254,8 +1282,7 @@ IL_0006: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1296,8 +1323,7 @@ IL_0028: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1308,72 +1334,92 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass XYZ.ABC/MyExn - IL_0031: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass XYZ.ABC/MyExn + IL_0029: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret - IL_0044: ldc.i4.0 - IL_0045: ret + IL_0039: ldc.i4.0 + IL_003a: ret + + IL_003b: ldc.i4.0 + IL_003c: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1416,8 +1462,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1451,8 +1496,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -1466,8 +1510,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -1501,8 +1544,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class XYZ.ABC/ABC/Expr - NewNum(int32 item) cil managed + .method public static class XYZ.ABC/ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -1513,8 +1555,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 10 58 59 5A 2E 41 42 43 2B 41 @@ -1531,8 +1572,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1543,8 +1583,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1556,8 +1595,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1571,8 +1609,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1585,8 +1622,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class XYZ.ABC/ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class XYZ.ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1647,8 +1683,7 @@ IL_0041: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1729,8 +1764,7 @@ IL_0050: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1777,8 +1811,7 @@ IL_002a: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1789,9 +1822,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1799,56 +1832,76 @@ .locals init (class XYZ.ABC/ABC/Expr V_0, class XYZ.ABC/ABC/Expr V_1, class XYZ.ABC/ABC/Expr V_2, - class XYZ.ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 XYZ.ABC/ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret } .method public hidebysig virtual final - instance bool Equals(class XYZ.ABC/ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/Expr::Equals(class XYZ.ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1885,8 +1938,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1931,8 +1983,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -1944,8 +1995,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -1968,8 +2018,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -1978,8 +2027,7 @@ IL_0006: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -2020,8 +2068,7 @@ IL_0028: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -2032,72 +2079,92 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass XYZ.ABC/ABC/MyExn - IL_0031: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 - IL_0044: ldc.i4.0 - IL_0045: ret + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass XYZ.ABC/ABC/MyExn + IL_0029: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_0039: ldc.i4.0 + IL_003a: ret + + IL_003b: ldc.i4.0 + IL_003c: ret + + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -2140,8 +2207,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -2175,8 +2241,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -2190,8 +2255,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -2218,8 +2282,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2247,8 +2310,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2341,8 +2403,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2353,8 +2414,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOff.il.net472.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOff.il.net472.release.bsl index b3623429e88..9185d1390a4 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOff.il.net472.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOff.il.net472.release.bsl @@ -65,8 +65,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 08 58 59 5A 2E 45 78 70 72 00 @@ -83,8 +82,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -95,8 +93,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -108,8 +105,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -123,8 +119,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -137,8 +132,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class XYZ.Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class XYZ.Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -190,8 +184,7 @@ IL_0035: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -263,8 +256,7 @@ IL_0045: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -305,8 +297,7 @@ IL_0025: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -317,9 +308,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -327,47 +318,67 @@ .locals init (class XYZ.Expr V_0, class XYZ.Expr V_1, class XYZ.Expr V_2, - class XYZ.Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst XYZ.Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 XYZ.Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 XYZ.Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 XYZ.Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret - - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret } .method public hidebysig virtual final - instance bool Equals(class XYZ.Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.Expr::Equals(class XYZ.Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class XYZ.Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -404,8 +415,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -450,8 +460,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -463,8 +472,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -487,8 +495,7 @@ IL_0008: ret } - .method public hidebysig specialname instance int32 - get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -497,8 +504,7 @@ IL_0006: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -533,8 +539,7 @@ IL_0024: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -545,63 +550,83 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.MyExn - IL_0024: call instance int32 XYZ.MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass XYZ.MyExn - IL_002f: call instance int32 XYZ.MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.MyExn + IL_001d: call instance int32 XYZ.MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass XYZ.MyExn + IL_0028: call instance int32 XYZ.MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -644,8 +669,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -679,8 +703,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -694,8 +717,7 @@ IL_000f: ret } - .method public hidebysig specialname instance string - get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -729,8 +751,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class XYZ.ABC/Expr - NewNum(int32 item) cil managed + .method public static class XYZ.ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -741,8 +762,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 0C 58 59 5A 2E 41 42 43 2B 45 @@ -759,8 +779,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -771,8 +790,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -784,8 +802,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -799,8 +816,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -813,8 +829,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class XYZ.ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class XYZ.ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -866,8 +881,7 @@ IL_0035: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -939,8 +953,7 @@ IL_0045: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -981,8 +994,7 @@ IL_0025: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -993,9 +1005,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1003,47 +1015,67 @@ .locals init (class XYZ.ABC/Expr V_0, class XYZ.ABC/Expr V_1, class XYZ.ABC/Expr V_2, - class XYZ.ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 XYZ.ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 XYZ.ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 XYZ.ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret - - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret } .method public hidebysig virtual final - instance bool Equals(class XYZ.ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/Expr::Equals(class XYZ.ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1080,8 +1112,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1126,8 +1157,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -1139,8 +1169,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -1163,8 +1192,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -1173,8 +1201,7 @@ IL_0006: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1209,8 +1236,7 @@ IL_0024: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1221,63 +1247,83 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass XYZ.ABC/MyExn - IL_002f: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass XYZ.ABC/MyExn + IL_0028: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1320,8 +1366,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1355,8 +1400,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -1370,8 +1414,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -1405,8 +1448,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class XYZ.ABC/ABC/Expr - NewNum(int32 item) cil managed + .method public static class XYZ.ABC/ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -1417,8 +1459,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 10 58 59 5A 2E 41 42 43 2B 41 @@ -1435,8 +1476,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1447,8 +1487,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1460,8 +1499,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1475,8 +1513,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1489,8 +1526,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class XYZ.ABC/ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class XYZ.ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1542,8 +1578,7 @@ IL_0035: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1615,8 +1650,7 @@ IL_0045: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1657,8 +1691,7 @@ IL_0025: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1669,9 +1702,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1679,47 +1712,67 @@ .locals init (class XYZ.ABC/ABC/Expr V_0, class XYZ.ABC/ABC/Expr V_1, class XYZ.ABC/ABC/Expr V_2, - class XYZ.ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret - - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret } .method public hidebysig virtual final - instance bool Equals(class XYZ.ABC/ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/Expr::Equals(class XYZ.ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1756,8 +1809,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1802,8 +1854,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -1815,8 +1866,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -1839,8 +1889,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -1849,8 +1898,7 @@ IL_0006: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1885,8 +1933,7 @@ IL_0024: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1897,63 +1944,83 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass XYZ.ABC/ABC/MyExn - IL_002f: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass XYZ.ABC/ABC/MyExn + IL_0028: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1996,8 +2063,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -2031,8 +2097,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -2046,8 +2111,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -2074,8 +2138,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2103,8 +2166,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2197,8 +2259,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2209,8 +2270,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOff.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOff.il.netcore.debug.bsl index 16ce2a4f3e6..8631986f992 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOff.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOff.il.netcore.debug.bsl @@ -65,8 +65,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 08 58 59 5A 2E 45 78 70 72 00 @@ -83,8 +82,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -95,8 +93,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -108,8 +105,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -123,8 +119,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -137,8 +132,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class XYZ.Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class XYZ.Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -199,8 +193,7 @@ IL_0041: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -281,8 +274,7 @@ IL_0050: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -329,8 +321,7 @@ IL_002a: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -341,9 +332,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -351,56 +342,76 @@ .locals init (class XYZ.Expr V_0, class XYZ.Expr V_1, class XYZ.Expr V_2, - class XYZ.Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst XYZ.Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 XYZ.Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 XYZ.Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret } .method public hidebysig virtual final - instance bool Equals(class XYZ.Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.Expr::Equals(class XYZ.Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class XYZ.Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -437,8 +448,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -483,8 +493,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -496,8 +505,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -520,8 +528,7 @@ IL_0008: ret } - .method public hidebysig specialname instance int32 - get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -530,8 +537,7 @@ IL_0006: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -572,8 +578,7 @@ IL_0028: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -584,72 +589,92 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.MyExn - IL_0024: call instance int32 XYZ.MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass XYZ.MyExn - IL_0031: call instance int32 XYZ.MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.MyExn + IL_001d: call instance int32 XYZ.MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass XYZ.MyExn + IL_0029: call instance int32 XYZ.MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0039: ldc.i4.0 + IL_003a: ret - IL_0044: ldc.i4.0 - IL_0045: ret + IL_003b: ldc.i4.0 + IL_003c: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -692,8 +717,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -727,8 +751,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -742,8 +765,7 @@ IL_000f: ret } - .method public hidebysig specialname instance string - get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -777,8 +799,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class XYZ.ABC/Expr - NewNum(int32 item) cil managed + .method public static class XYZ.ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -789,8 +810,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 0C 58 59 5A 2E 41 42 43 2B 45 @@ -807,8 +827,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -819,8 +838,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -832,8 +850,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -847,8 +864,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -861,8 +877,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class XYZ.ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class XYZ.ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -923,8 +938,7 @@ IL_0041: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1005,8 +1019,7 @@ IL_0050: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1053,8 +1066,7 @@ IL_002a: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1065,9 +1077,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1075,56 +1087,76 @@ .locals init (class XYZ.ABC/Expr V_0, class XYZ.ABC/Expr V_1, class XYZ.ABC/Expr V_2, - class XYZ.ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 XYZ.ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 XYZ.ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret } .method public hidebysig virtual final - instance bool Equals(class XYZ.ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/Expr::Equals(class XYZ.ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1161,8 +1193,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1207,8 +1238,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -1220,8 +1250,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -1244,8 +1273,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -1254,8 +1282,7 @@ IL_0006: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1296,8 +1323,7 @@ IL_0028: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1308,72 +1334,92 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass XYZ.ABC/MyExn - IL_0031: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 - IL_0044: ldc.i4.0 - IL_0045: ret + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass XYZ.ABC/MyExn + IL_0029: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_0039: ldc.i4.0 + IL_003a: ret + + IL_003b: ldc.i4.0 + IL_003c: ret + + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1416,8 +1462,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1451,8 +1496,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -1466,8 +1510,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -1501,8 +1544,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class XYZ.ABC/ABC/Expr - NewNum(int32 item) cil managed + .method public static class XYZ.ABC/ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -1513,8 +1555,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 10 58 59 5A 2E 41 42 43 2B 41 @@ -1531,8 +1572,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1543,8 +1583,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1556,8 +1595,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1571,8 +1609,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1585,8 +1622,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class XYZ.ABC/ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class XYZ.ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1647,8 +1683,7 @@ IL_0041: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1729,8 +1764,7 @@ IL_0050: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1777,8 +1811,7 @@ IL_002a: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1789,9 +1822,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1799,56 +1832,76 @@ .locals init (class XYZ.ABC/ABC/Expr V_0, class XYZ.ABC/ABC/Expr V_1, class XYZ.ABC/ABC/Expr V_2, - class XYZ.ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 XYZ.ABC/ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret } .method public hidebysig virtual final - instance bool Equals(class XYZ.ABC/ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/Expr::Equals(class XYZ.ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1885,8 +1938,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1931,8 +1983,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -1944,8 +1995,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -1968,8 +2018,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -1978,8 +2027,7 @@ IL_0006: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -2020,8 +2068,7 @@ IL_0028: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -2032,72 +2079,92 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass XYZ.ABC/ABC/MyExn - IL_0031: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass XYZ.ABC/ABC/MyExn + IL_0029: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0039: ldc.i4.0 + IL_003a: ret - IL_0044: ldc.i4.0 - IL_0045: ret + IL_003b: ldc.i4.0 + IL_003c: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -2140,8 +2207,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -2175,8 +2241,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -2190,8 +2255,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -2218,8 +2282,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2247,8 +2310,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOff.il.netcore.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOff.il.netcore.release.bsl index 75616777d14..89cceafa9eb 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOff.il.netcore.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOff.il.netcore.release.bsl @@ -65,8 +65,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 08 58 59 5A 2E 45 78 70 72 00 @@ -83,8 +82,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -95,8 +93,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -108,8 +105,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -123,8 +119,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -137,8 +132,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class XYZ.Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class XYZ.Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -190,8 +184,7 @@ IL_0035: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -263,8 +256,7 @@ IL_0045: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -305,8 +297,7 @@ IL_0025: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -317,9 +308,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -327,47 +318,67 @@ .locals init (class XYZ.Expr V_0, class XYZ.Expr V_1, class XYZ.Expr V_2, - class XYZ.Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst XYZ.Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 XYZ.Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 XYZ.Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 XYZ.Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret - - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret } .method public hidebysig virtual final - instance bool Equals(class XYZ.Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.Expr::Equals(class XYZ.Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class XYZ.Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -404,8 +415,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -450,8 +460,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -463,8 +472,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -487,8 +495,7 @@ IL_0008: ret } - .method public hidebysig specialname instance int32 - get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -497,8 +504,7 @@ IL_0006: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -533,8 +539,7 @@ IL_0024: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -545,63 +550,83 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.MyExn - IL_0024: call instance int32 XYZ.MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass XYZ.MyExn - IL_002f: call instance int32 XYZ.MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.MyExn + IL_001d: call instance int32 XYZ.MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass XYZ.MyExn + IL_0028: call instance int32 XYZ.MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -644,8 +669,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -679,8 +703,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -694,8 +717,7 @@ IL_000f: ret } - .method public hidebysig specialname instance string - get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -729,8 +751,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class XYZ.ABC/Expr - NewNum(int32 item) cil managed + .method public static class XYZ.ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -741,8 +762,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 0C 58 59 5A 2E 41 42 43 2B 45 @@ -759,8 +779,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -771,8 +790,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -784,8 +802,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -799,8 +816,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -813,8 +829,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class XYZ.ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class XYZ.ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -866,8 +881,7 @@ IL_0035: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -939,8 +953,7 @@ IL_0045: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -981,8 +994,7 @@ IL_0025: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -993,9 +1005,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1003,47 +1015,67 @@ .locals init (class XYZ.ABC/Expr V_0, class XYZ.ABC/Expr V_1, class XYZ.ABC/Expr V_2, - class XYZ.ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 XYZ.ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 XYZ.ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 XYZ.ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret - - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret } .method public hidebysig virtual final - instance bool Equals(class XYZ.ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/Expr::Equals(class XYZ.ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1080,8 +1112,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1126,8 +1157,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -1139,8 +1169,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -1163,8 +1192,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -1173,8 +1201,7 @@ IL_0006: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1209,8 +1236,7 @@ IL_0024: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1221,63 +1247,83 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass XYZ.ABC/MyExn - IL_002f: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass XYZ.ABC/MyExn + IL_0028: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1320,8 +1366,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1355,8 +1400,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -1370,8 +1414,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -1405,8 +1448,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class XYZ.ABC/ABC/Expr - NewNum(int32 item) cil managed + .method public static class XYZ.ABC/ABC/Expr NewNum(int32 item) cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -1417,8 +1459,7 @@ IL_0006: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 item) cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 60 06 00 00 10 58 59 5A 2E 41 42 43 2B 41 @@ -1435,8 +1476,7 @@ IL_000d: ret } - .method public hidebysig instance int32 - get_Item() cil managed + .method public hidebysig instance int32 get_Item() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1447,8 +1487,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1460,8 +1499,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1475,8 +1513,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1489,8 +1526,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class XYZ.ABC/ABC/Expr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class XYZ.ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1542,8 +1578,7 @@ IL_0035: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1615,8 +1650,7 @@ IL_0045: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1657,8 +1691,7 @@ IL_0025: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1669,9 +1702,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1679,47 +1712,67 @@ .locals init (class XYZ.ABC/ABC/Expr V_0, class XYZ.ABC/ABC/Expr V_1, class XYZ.ABC/ABC/Expr V_2, - class XYZ.ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret - - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret } .method public hidebysig virtual final - instance bool Equals(class XYZ.ABC/ABC/Expr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/Expr::Equals(class XYZ.ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/ABC/Expr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1756,8 +1809,7 @@ IL_0024: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1802,8 +1854,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 05 00 00 00 00 00 ) .field assembly int32 Data0@ - .method public specialname rtspecialname - instance void .ctor(int32 data0) cil managed + .method public specialname rtspecialname instance void .ctor(int32 data0) cil managed { .maxstack 8 @@ -1815,8 +1866,7 @@ IL_000d: ret } - .method public specialname rtspecialname - instance void .ctor() cil managed + .method public specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 @@ -1839,8 +1889,7 @@ IL_0008: ret } - .method public hidebysig specialname - instance int32 get_Data0() cil managed + .method public hidebysig specialname instance int32 get_Data0() cil managed { .maxstack 8 @@ -1849,8 +1898,7 @@ IL_0006: ret } - .method public hidebysig virtual instance int32 - GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1885,8 +1933,7 @@ IL_0024: ret } - .method public hidebysig virtual instance int32 - GetHashCode() cil managed + .method public hidebysig virtual instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1897,63 +1944,83 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass XYZ.ABC/ABC/MyExn - IL_002f: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass XYZ.ABC/ABC/MyExn + IL_0028: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } - .method public hidebysig instance bool - Equals(class [runtime]System.Exception obj) cil managed + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1996,8 +2063,7 @@ IL_0037: ret } - .method public hidebysig virtual instance bool - Equals(object obj) cil managed + .method public hidebysig virtual instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -2031,8 +2097,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly string x - .method public specialname rtspecialname - instance void .ctor(string x) cil managed + .method public specialname rtspecialname instance void .ctor(string x) cil managed { .maxstack 8 @@ -2046,8 +2111,7 @@ IL_000f: ret } - .method public hidebysig specialname - instance string get_X() cil managed + .method public hidebysig specialname instance string get_X() cil managed { .maxstack 8 @@ -2074,8 +2138,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -2103,8 +2166,7 @@ IL_0003: ret } - .method public specialname static string - get_greeting() cil managed + .method public specialname static string get_greeting() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOn.il.net472.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOn.il.net472.debug.bsl index 755a63232ef..cc1c8fd2ee3 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOn.il.net472.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOn.il.net472.debug.bsl @@ -332,9 +332,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -342,52 +342,73 @@ .locals init (class XYZ.Expr V_0, class XYZ.Expr V_1, class XYZ.Expr V_2, - class XYZ.Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst XYZ.Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 XYZ.Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 XYZ.Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.Expr::Equals(class XYZ.Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class XYZ.Expr obj) cil managed @@ -568,68 +589,89 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.MyExn - IL_0024: call instance int32 XYZ.MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass XYZ.MyExn - IL_0031: call instance int32 XYZ.MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.MyExn + IL_001d: call instance int32 XYZ.MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass XYZ.MyExn + IL_0029: call instance int32 XYZ.MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret + + IL_0039: ldc.i4.0 + IL_003a: ret + + IL_003b: ldc.i4.0 + IL_003c: ret - IL_0042: ldc.i4.0 - IL_0043: ret + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 - IL_0044: ldc.i4.0 - IL_0045: ret + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed @@ -1035,9 +1077,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1045,52 +1087,73 @@ .locals init (class XYZ.ABC/Expr V_0, class XYZ.ABC/Expr V_1, class XYZ.ABC/Expr V_2, - class XYZ.ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 XYZ.ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 XYZ.ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/Expr::Equals(class XYZ.ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/Expr obj) cil managed @@ -1271,68 +1334,89 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass XYZ.ABC/MyExn - IL_0031: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass XYZ.ABC/MyExn + IL_0029: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0039: ldc.i4.0 + IL_003a: ret + + IL_003b: ldc.i4.0 + IL_003c: ret + + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 - IL_0044: ldc.i4.0 - IL_0045: ret + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed @@ -1738,9 +1822,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1748,52 +1832,73 @@ .locals init (class XYZ.ABC/ABC/Expr V_0, class XYZ.ABC/ABC/Expr V_1, class XYZ.ABC/ABC/Expr V_2, - class XYZ.ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 XYZ.ABC/ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/Expr::Equals(class XYZ.ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/ABC/Expr obj) cil managed @@ -1974,68 +2079,89 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass XYZ.ABC/ABC/MyExn - IL_0031: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass XYZ.ABC/ABC/MyExn + IL_0029: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret + + IL_0039: ldc.i4.0 + IL_003a: ret + + IL_003b: ldc.i4.0 + IL_003c: ret + + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret + } - IL_0042: ldc.i4.0 - IL_0043: ret + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 - IL_0044: ldc.i4.0 - IL_0045: ret + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOn.il.net472.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOn.il.net472.release.bsl index aa3fff8667d..a6fc399ca9a 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOn.il.net472.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOn.il.net472.release.bsl @@ -308,9 +308,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -318,43 +318,64 @@ .locals init (class XYZ.Expr V_0, class XYZ.Expr V_1, class XYZ.Expr V_2, - class XYZ.Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst XYZ.Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 XYZ.Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 XYZ.Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 XYZ.Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret + } - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.Expr::Equals(class XYZ.Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class XYZ.Expr obj) cil managed @@ -529,59 +550,80 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.MyExn - IL_0024: call instance int32 XYZ.MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass XYZ.MyExn - IL_002f: call instance int32 XYZ.MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.MyExn + IL_001d: call instance int32 XYZ.MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass XYZ.MyExn + IL_0028: call instance int32 XYZ.MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed @@ -963,9 +1005,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -973,43 +1015,64 @@ .locals init (class XYZ.ABC/Expr V_0, class XYZ.ABC/Expr V_1, class XYZ.ABC/Expr V_2, - class XYZ.ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 XYZ.ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 XYZ.ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 XYZ.ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret + } - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/Expr::Equals(class XYZ.ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/Expr obj) cil managed @@ -1184,59 +1247,80 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass XYZ.ABC/MyExn - IL_002f: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass XYZ.ABC/MyExn + IL_0028: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed @@ -1618,9 +1702,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1628,43 +1712,64 @@ .locals init (class XYZ.ABC/ABC/Expr V_0, class XYZ.ABC/ABC/Expr V_1, class XYZ.ABC/ABC/Expr V_2, - class XYZ.ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/Expr::Equals(class XYZ.ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/ABC/Expr obj) cil managed @@ -1839,59 +1944,80 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass XYZ.ABC/ABC/MyExn - IL_002f: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass XYZ.ABC/ABC/MyExn + IL_0028: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOn.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOn.il.netcore.debug.bsl index 0fe76543a75..96bd1d8d074 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOn.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOn.il.netcore.debug.bsl @@ -332,9 +332,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -342,52 +342,73 @@ .locals init (class XYZ.Expr V_0, class XYZ.Expr V_1, class XYZ.Expr V_2, - class XYZ.Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst XYZ.Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 XYZ.Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 XYZ.Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.Expr::Equals(class XYZ.Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class XYZ.Expr obj) cil managed @@ -568,68 +589,89 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.MyExn - IL_0024: call instance int32 XYZ.MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass XYZ.MyExn - IL_0031: call instance int32 XYZ.MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 - IL_0044: ldc.i4.0 - IL_0045: ret + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.MyExn + IL_001d: call instance int32 XYZ.MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass XYZ.MyExn + IL_0029: call instance int32 XYZ.MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret + + IL_0039: ldc.i4.0 + IL_003a: ret + + IL_003b: ldc.i4.0 + IL_003c: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed @@ -1035,9 +1077,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1045,52 +1087,73 @@ .locals init (class XYZ.ABC/Expr V_0, class XYZ.ABC/Expr V_1, class XYZ.ABC/Expr V_2, - class XYZ.ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 XYZ.ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 XYZ.ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/Expr::Equals(class XYZ.ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/Expr obj) cil managed @@ -1271,68 +1334,89 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass XYZ.ABC/MyExn - IL_0031: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass XYZ.ABC/MyExn + IL_0029: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0039: ldc.i4.0 + IL_003a: ret - IL_0044: ldc.i4.0 - IL_0045: ret + IL_003b: ldc.i4.0 + IL_003c: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed @@ -1738,9 +1822,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1748,52 +1832,73 @@ .locals init (class XYZ.ABC/ABC/Expr V_0, class XYZ.ABC/ABC/Expr V_1, class XYZ.ABC/ABC/Expr V_2, - class XYZ.ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, - class [runtime]System.Collections.IEqualityComparer V_7) + class [runtime]System.Collections.IEqualityComparer V_6) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0035 + IL_0001: brfalse.s IL_002c IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0033 + IL_0004: brfalse.s IL_002a - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/ABC/Expr::item IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 XYZ.ABC/ABC/Expr::item IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret - - IL_0035: ldarg.1 - IL_0036: ldnull - IL_0037: cgt.un - IL_0039: ldc.i4.0 - IL_003a: ceq - IL_003c: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: ret + + IL_002a: ldc.i4.0 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/Expr::Equals(class XYZ.ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/ABC/Expr obj) cil managed @@ -1974,68 +2079,89 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3, + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2, + int32 V_3, int32 V_4, - int32 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + class [runtime]System.Collections.IEqualityComparer V_5) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0046 + IL_0001: brfalse.s IL_003d IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0044 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0042 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0029: stloc.s V_4 - IL_002b: ldloc.1 - IL_002c: castclass XYZ.ABC/ABC/MyExn - IL_0031: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0036: stloc.s V_5 - IL_0038: ldloc.3 - IL_0039: stloc.s V_6 - IL_003b: ldloc.s V_4 - IL_003d: ldloc.s V_5 - IL_003f: ceq - IL_0041: ret + IL_0004: brfalse.s IL_003b + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0039 - IL_0042: ldc.i4.0 - IL_0043: ret + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_0022: stloc.3 + IL_0023: ldloc.0 + IL_0024: castclass XYZ.ABC/ABC/MyExn + IL_0029: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_002e: stloc.s V_4 + IL_0030: ldloc.2 + IL_0031: stloc.s V_5 + IL_0033: ldloc.3 + IL_0034: ldloc.s V_4 + IL_0036: ceq + IL_0038: ret - IL_0044: ldc.i4.0 - IL_0045: ret + IL_0039: ldc.i4.0 + IL_003a: ret + + IL_003b: ldc.i4.0 + IL_003c: ret + + IL_003d: ldarg.1 + IL_003e: ldnull + IL_003f: cgt.un + IL_0041: ldc.i4.0 + IL_0042: ceq + IL_0044: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret - IL_0046: ldarg.1 - IL_0047: ldnull - IL_0048: cgt.un - IL_004a: ldc.i4.0 - IL_004b: ceq - IL_004d: ret + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOn.il.netcore.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOn.il.netcore.release.bsl index 34f7be115da..76db58211b5 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOn.il.netcore.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SerializableAttribute/ToplevelNamespace60.fs.RealInternalSignatureOn.il.netcore.release.bsl @@ -308,9 +308,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -318,43 +318,64 @@ .locals init (class XYZ.Expr V_0, class XYZ.Expr V_1, class XYZ.Expr V_2, - class XYZ.Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst XYZ.Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 XYZ.Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 XYZ.Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 XYZ.Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret + } - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.Expr::Equals(class XYZ.Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class XYZ.Expr obj) cil managed @@ -529,59 +550,80 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.MyExn - IL_0024: call instance int32 XYZ.MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass XYZ.MyExn - IL_002f: call instance int32 XYZ.MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.MyExn + IL_001d: call instance int32 XYZ.MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass XYZ.MyExn + IL_0028: call instance int32 XYZ.MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed @@ -963,9 +1005,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -973,43 +1015,64 @@ .locals init (class XYZ.ABC/Expr V_0, class XYZ.ABC/Expr V_1, class XYZ.ABC/Expr V_2, - class XYZ.ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 XYZ.ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 XYZ.ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 XYZ.ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret + } - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/Expr::Equals(class XYZ.ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/Expr obj) cil managed @@ -1184,59 +1247,80 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass XYZ.ABC/MyExn - IL_002f: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass XYZ.ABC/MyExn + IL_0028: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed @@ -1618,9 +1702,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class XYZ.ABC/ABC/Expr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -1628,43 +1712,64 @@ .locals init (class XYZ.ABC/ABC/Expr V_0, class XYZ.ABC/ABC/Expr V_1, class XYZ.ABC/ABC/Expr V_2, - class XYZ.ABC/ABC/Expr V_3, - class [runtime]System.Collections.IEqualityComparer V_4) + class [runtime]System.Collections.IEqualityComparer V_3) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0029 + IL_0001: brfalse.s IL_0021 IL_0003: ldarg.1 - IL_0004: isinst XYZ.ABC/ABC/Expr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0027 + IL_0004: brfalse.s IL_001f - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_001e: ldloc.3 - IL_001f: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_0024: ceq - IL_0026: ret - - IL_0027: ldc.i4.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_0016: ldloc.2 + IL_0017: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_001c: ceq + IL_001e: ret + + IL_001f: ldc.i4.0 + IL_0020: ret + + IL_0021: ldarg.1 + IL_0022: ldnull + IL_0023: cgt.un + IL_0025: ldc.i4.0 + IL_0026: ceq IL_0028: ret + } + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class XYZ.ABC/ABC/Expr V_0) + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 - IL_0029: ldarg.1 - IL_002a: ldnull - IL_002b: cgt.un - IL_002d: ldc.i4.0 - IL_002e: ceq - IL_0030: ret + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/Expr::Equals(class XYZ.ABC/ABC/Expr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/ABC/Expr obj) cil managed @@ -1839,59 +1944,80 @@ IL_000b: ret } - .method public hidebysig virtual instance bool - Equals(object obj, + .method public hidebysig instance bool + Equals(class [runtime]System.Exception obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class [runtime]System.Exception V_0, - class [runtime]System.Exception V_1, - object V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + object V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003b + IL_0001: brfalse.s IL_0034 IL_0003: ldarg.1 - IL_0004: isinst [runtime]System.Exception - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0039 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldloc.0 - IL_0010: stloc.2 - IL_0011: ldloc.2 - IL_0012: isinst XYZ.ABC/ABC/MyExn - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: brfalse.s IL_0037 - - IL_001c: ldarg.2 - IL_001d: stloc.3 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass XYZ.ABC/ABC/MyExn - IL_002f: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret - - IL_0037: ldc.i4.0 - IL_0038: ret - - IL_0039: ldc.i4.0 - IL_003a: ret - - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_0004: brfalse.s IL_0032 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.1 + IL_0009: stloc.1 + IL_000a: ldloc.1 + IL_000b: isinst XYZ.ABC/ABC/MyExn + IL_0010: ldnull + IL_0011: cgt.un + IL_0013: brfalse.s IL_0030 + + IL_0015: ldarg.2 + IL_0016: stloc.2 + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_0022: ldloc.0 + IL_0023: castclass XYZ.ABC/ABC/MyExn + IL_0028: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret + + IL_0030: ldc.i4.0 + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret + } + + .method public hidebysig virtual instance bool + Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class [runtime]System.Exception V_0) + IL_0000: ldarg.1 + IL_0001: isinst [runtime]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool XYZ.ABC/ABC/MyExn::Equals(class [runtime]System.Exception, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } .method public hidebysig instance bool Equals(class [runtime]System.Exception obj) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOff.il.net472.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOff.il.net472.debug.bsl index 51b8a21e0cd..84f5ee8cabc 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOff.il.net472.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOff.il.net472.debug.bsl @@ -60,8 +60,7 @@ .field static assembly int32 x .field static assembly int32 init@4 .field assembly valuetype [runtime]System.DateTime s - .method public hidebysig virtual final - instance int32 CompareTo(valuetype assembly/C obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(valuetype assembly/C obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -90,8 +89,7 @@ IL_0021: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -138,8 +136,7 @@ IL_0026: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -167,8 +164,7 @@ IL_001e: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -179,55 +175,69 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype assembly/C obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype assembly/C& V_0, + class [runtime]System.Collections.IEqualityComparer V_1, + valuetype [runtime]System.DateTime V_2, + valuetype [runtime]System.DateTime V_3, + class [runtime]System.Collections.IEqualityComparer V_4) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldarg.2 + IL_0004: stloc.1 + IL_0005: ldarg.0 + IL_0006: ldfld valuetype [runtime]System.DateTime assembly/C::s + IL_000b: stloc.2 + IL_000c: ldloc.0 + IL_000d: ldfld valuetype [runtime]System.DateTime assembly/C::s + IL_0012: stloc.3 + IL_0013: ldloc.1 + IL_0014: stloc.s V_4 + IL_0016: ldloc.2 + IL_0017: ldloc.3 + IL_0018: call bool [netstandard]System.DateTime::Equals(valuetype [netstandard]System.DateTime, + valuetype [netstandard]System.DateTime) + IL_001d: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 + .maxstack 5 .locals init (object V_0, - valuetype assembly/C V_1, - valuetype assembly/C& V_2, - class [runtime]System.Collections.IEqualityComparer V_3, - valuetype [runtime]System.DateTime V_4, - valuetype [runtime]System.DateTime V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + valuetype assembly/C V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst assembly/C IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_0036 + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any assembly/C IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldarg.2 - IL_0018: stloc.3 - IL_0019: ldarg.0 - IL_001a: ldfld valuetype [runtime]System.DateTime assembly/C::s - IL_001f: stloc.s V_4 - IL_0021: ldloc.2 - IL_0022: ldfld valuetype [runtime]System.DateTime assembly/C::s - IL_0027: stloc.s V_5 - IL_0029: ldloc.3 - IL_002a: stloc.s V_6 - IL_002c: ldloc.s V_4 - IL_002e: ldloc.s V_5 - IL_0030: call bool [netstandard]System.DateTime::Equals(valuetype [netstandard]System.DateTime, - valuetype [netstandard]System.DateTime) - IL_0035: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool assembly/C::Equals(valuetype assembly/C, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret - IL_0036: ldc.i4.0 - IL_0037: ret + IL_001d: ldc.i4.0 + IL_001e: ret } - .method public specialname rtspecialname - instance void .ctor(valuetype [runtime]System.DateTime s) cil managed + .method public specialname rtspecialname instance void .ctor(valuetype [runtime]System.DateTime s) cil managed { .maxstack 8 @@ -261,8 +271,7 @@ IL_0025: ret } - .method public hidebysig virtual final - instance bool Equals(valuetype assembly/C obj) cil managed + .method public hidebysig virtual final instance bool Equals(valuetype assembly/C obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -279,8 +288,7 @@ IL_0014: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -307,8 +315,7 @@ IL_001d: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 8 diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOff.il.net472.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOff.il.net472.release.bsl index 586686c9d92..69f1f751870 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOff.il.net472.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOff.il.net472.release.bsl @@ -60,8 +60,7 @@ .field static assembly int32 x .field static assembly int32 init@4 .field assembly valuetype [runtime]System.DateTime s - .method public hidebysig virtual final - instance int32 CompareTo(valuetype assembly/C obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(valuetype assembly/C obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -81,8 +80,7 @@ IL_001a: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -120,8 +118,7 @@ IL_001d: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -149,8 +146,7 @@ IL_001e: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -161,46 +157,60 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype assembly/C obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype assembly/C& V_0, + class [runtime]System.Collections.IEqualityComparer V_1) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldarg.2 + IL_0004: stloc.1 + IL_0005: ldarg.0 + IL_0006: ldfld valuetype [runtime]System.DateTime assembly/C::s + IL_000b: ldloc.0 + IL_000c: ldfld valuetype [runtime]System.DateTime assembly/C::s + IL_0011: call bool [netstandard]System.DateTime::Equals(valuetype [netstandard]System.DateTime, + valuetype [netstandard]System.DateTime) + IL_0016: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 + .maxstack 5 .locals init (object V_0, - valuetype assembly/C V_1, - valuetype assembly/C& V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + valuetype assembly/C V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst assembly/C IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_002b + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any assembly/C IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldarg.2 - IL_0018: stloc.3 - IL_0019: ldarg.0 - IL_001a: ldfld valuetype [runtime]System.DateTime assembly/C::s - IL_001f: ldloc.2 - IL_0020: ldfld valuetype [runtime]System.DateTime assembly/C::s - IL_0025: call bool [netstandard]System.DateTime::Equals(valuetype [netstandard]System.DateTime, - valuetype [netstandard]System.DateTime) - IL_002a: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool assembly/C::Equals(valuetype assembly/C, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret - IL_002b: ldc.i4.0 - IL_002c: ret + IL_001d: ldc.i4.0 + IL_001e: ret } - .method public specialname rtspecialname - instance void .ctor(valuetype [runtime]System.DateTime s) cil managed + .method public specialname rtspecialname instance void .ctor(valuetype [runtime]System.DateTime s) cil managed { .maxstack 8 @@ -234,8 +244,7 @@ IL_0025: ret } - .method public hidebysig virtual final - instance bool Equals(valuetype assembly/C obj) cil managed + .method public hidebysig virtual final instance bool Equals(valuetype assembly/C obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -252,8 +261,7 @@ IL_0014: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -280,8 +288,7 @@ IL_001d: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 8 diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOff.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOff.il.netcore.debug.bsl index 8a87cf89cdf..e796428b44a 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOff.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOff.il.netcore.debug.bsl @@ -60,8 +60,7 @@ .field static assembly int32 x .field static assembly int32 init@4 .field assembly valuetype [runtime]System.DateTime s - .method public hidebysig virtual final - instance int32 CompareTo(valuetype assembly/C obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(valuetype assembly/C obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -90,8 +89,7 @@ IL_0021: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -138,8 +136,7 @@ IL_0026: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -167,8 +164,7 @@ IL_001e: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -179,55 +175,69 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype assembly/C obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype assembly/C& V_0, + class [runtime]System.Collections.IEqualityComparer V_1, + valuetype [runtime]System.DateTime V_2, + valuetype [runtime]System.DateTime V_3, + class [runtime]System.Collections.IEqualityComparer V_4) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldarg.2 + IL_0004: stloc.1 + IL_0005: ldarg.0 + IL_0006: ldfld valuetype [runtime]System.DateTime assembly/C::s + IL_000b: stloc.2 + IL_000c: ldloc.0 + IL_000d: ldfld valuetype [runtime]System.DateTime assembly/C::s + IL_0012: stloc.3 + IL_0013: ldloc.1 + IL_0014: stloc.s V_4 + IL_0016: ldloc.2 + IL_0017: ldloc.3 + IL_0018: call bool [netstandard]System.DateTime::Equals(valuetype [netstandard]System.DateTime, + valuetype [netstandard]System.DateTime) + IL_001d: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 + .maxstack 5 .locals init (object V_0, - valuetype assembly/C V_1, - valuetype assembly/C& V_2, - class [runtime]System.Collections.IEqualityComparer V_3, - valuetype [runtime]System.DateTime V_4, - valuetype [runtime]System.DateTime V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + valuetype assembly/C V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst assembly/C IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_0036 + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any assembly/C IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldarg.2 - IL_0018: stloc.3 - IL_0019: ldarg.0 - IL_001a: ldfld valuetype [runtime]System.DateTime assembly/C::s - IL_001f: stloc.s V_4 - IL_0021: ldloc.2 - IL_0022: ldfld valuetype [runtime]System.DateTime assembly/C::s - IL_0027: stloc.s V_5 - IL_0029: ldloc.3 - IL_002a: stloc.s V_6 - IL_002c: ldloc.s V_4 - IL_002e: ldloc.s V_5 - IL_0030: call bool [netstandard]System.DateTime::Equals(valuetype [netstandard]System.DateTime, - valuetype [netstandard]System.DateTime) - IL_0035: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool assembly/C::Equals(valuetype assembly/C, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret - IL_0036: ldc.i4.0 - IL_0037: ret + IL_001d: ldc.i4.0 + IL_001e: ret } - .method public specialname rtspecialname - instance void .ctor(valuetype [runtime]System.DateTime s) cil managed + .method public specialname rtspecialname instance void .ctor(valuetype [runtime]System.DateTime s) cil managed { .maxstack 8 @@ -261,8 +271,7 @@ IL_0025: ret } - .method public hidebysig virtual final - instance bool Equals(valuetype assembly/C obj) cil managed + .method public hidebysig virtual final instance bool Equals(valuetype assembly/C obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -279,8 +288,7 @@ IL_0014: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -307,8 +315,7 @@ IL_001d: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 8 diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOff.il.netcore.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOff.il.netcore.release.bsl index 5dd4f4504a6..3e8ccc7efff 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOff.il.netcore.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOff.il.netcore.release.bsl @@ -60,8 +60,7 @@ .field static assembly int32 x .field static assembly int32 init@4 .field assembly valuetype [runtime]System.DateTime s - .method public hidebysig virtual final - instance int32 CompareTo(valuetype assembly/C obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(valuetype assembly/C obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -81,8 +80,7 @@ IL_001a: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -120,8 +118,7 @@ IL_001d: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -149,8 +146,7 @@ IL_001e: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -161,46 +157,60 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype assembly/C obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype assembly/C& V_0, + class [runtime]System.Collections.IEqualityComparer V_1) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldarg.2 + IL_0004: stloc.1 + IL_0005: ldarg.0 + IL_0006: ldfld valuetype [runtime]System.DateTime assembly/C::s + IL_000b: ldloc.0 + IL_000c: ldfld valuetype [runtime]System.DateTime assembly/C::s + IL_0011: call bool [netstandard]System.DateTime::Equals(valuetype [netstandard]System.DateTime, + valuetype [netstandard]System.DateTime) + IL_0016: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 + .maxstack 5 .locals init (object V_0, - valuetype assembly/C V_1, - valuetype assembly/C& V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + valuetype assembly/C V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst assembly/C IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_002b + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any assembly/C IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldarg.2 - IL_0018: stloc.3 - IL_0019: ldarg.0 - IL_001a: ldfld valuetype [runtime]System.DateTime assembly/C::s - IL_001f: ldloc.2 - IL_0020: ldfld valuetype [runtime]System.DateTime assembly/C::s - IL_0025: call bool [netstandard]System.DateTime::Equals(valuetype [netstandard]System.DateTime, - valuetype [netstandard]System.DateTime) - IL_002a: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool assembly/C::Equals(valuetype assembly/C, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret - IL_002b: ldc.i4.0 - IL_002c: ret + IL_001d: ldc.i4.0 + IL_001e: ret } - .method public specialname rtspecialname - instance void .ctor(valuetype [runtime]System.DateTime s) cil managed + .method public specialname rtspecialname instance void .ctor(valuetype [runtime]System.DateTime s) cil managed { .maxstack 8 @@ -234,8 +244,7 @@ IL_0025: ret } - .method public hidebysig virtual final - instance bool Equals(valuetype assembly/C obj) cil managed + .method public hidebysig virtual final instance bool Equals(valuetype assembly/C obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -252,8 +261,7 @@ IL_0014: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -280,8 +288,7 @@ IL_001d: ret } - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 8 diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOn.il.net472.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOn.il.net472.debug.bsl index b533fbc20e4..554948cacf4 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOn.il.net472.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOn.il.net472.debug.bsl @@ -175,51 +175,66 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype assembly/C obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype assembly/C& V_0, + class [runtime]System.Collections.IEqualityComparer V_1, + valuetype [runtime]System.DateTime V_2, + valuetype [runtime]System.DateTime V_3, + class [runtime]System.Collections.IEqualityComparer V_4) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldarg.2 + IL_0004: stloc.1 + IL_0005: ldarg.0 + IL_0006: ldfld valuetype [runtime]System.DateTime assembly/C::s + IL_000b: stloc.2 + IL_000c: ldloc.0 + IL_000d: ldfld valuetype [runtime]System.DateTime assembly/C::s + IL_0012: stloc.3 + IL_0013: ldloc.1 + IL_0014: stloc.s V_4 + IL_0016: ldloc.2 + IL_0017: ldloc.3 + IL_0018: call bool [netstandard]System.DateTime::Equals(valuetype [netstandard]System.DateTime, + valuetype [netstandard]System.DateTime) + IL_001d: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 + .maxstack 5 .locals init (object V_0, - valuetype assembly/C V_1, - valuetype assembly/C& V_2, - class [runtime]System.Collections.IEqualityComparer V_3, - valuetype [runtime]System.DateTime V_4, - valuetype [runtime]System.DateTime V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + valuetype assembly/C V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst assembly/C IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_0036 + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any assembly/C IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldarg.2 - IL_0018: stloc.3 - IL_0019: ldarg.0 - IL_001a: ldfld valuetype [runtime]System.DateTime assembly/C::s - IL_001f: stloc.s V_4 - IL_0021: ldloc.2 - IL_0022: ldfld valuetype [runtime]System.DateTime assembly/C::s - IL_0027: stloc.s V_5 - IL_0029: ldloc.3 - IL_002a: stloc.s V_6 - IL_002c: ldloc.s V_4 - IL_002e: ldloc.s V_5 - IL_0030: call bool [netstandard]System.DateTime::Equals(valuetype [netstandard]System.DateTime, - valuetype [netstandard]System.DateTime) - IL_0035: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool assembly/C::Equals(valuetype assembly/C, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret - IL_0036: ldc.i4.0 - IL_0037: ret + IL_001d: ldc.i4.0 + IL_001e: ret } .method public specialname rtspecialname instance void .ctor(valuetype [runtime]System.DateTime s) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOn.il.net472.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOn.il.net472.release.bsl index 029cf56bad8..0e8d5587869 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOn.il.net472.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOn.il.net472.release.bsl @@ -157,42 +157,57 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype assembly/C obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype assembly/C& V_0, + class [runtime]System.Collections.IEqualityComparer V_1) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldarg.2 + IL_0004: stloc.1 + IL_0005: ldarg.0 + IL_0006: ldfld valuetype [runtime]System.DateTime assembly/C::s + IL_000b: ldloc.0 + IL_000c: ldfld valuetype [runtime]System.DateTime assembly/C::s + IL_0011: call bool [netstandard]System.DateTime::Equals(valuetype [netstandard]System.DateTime, + valuetype [netstandard]System.DateTime) + IL_0016: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 + .maxstack 5 .locals init (object V_0, - valuetype assembly/C V_1, - valuetype assembly/C& V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + valuetype assembly/C V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst assembly/C IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_002b + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any assembly/C IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldarg.2 - IL_0018: stloc.3 - IL_0019: ldarg.0 - IL_001a: ldfld valuetype [runtime]System.DateTime assembly/C::s - IL_001f: ldloc.2 - IL_0020: ldfld valuetype [runtime]System.DateTime assembly/C::s - IL_0025: call bool [netstandard]System.DateTime::Equals(valuetype [netstandard]System.DateTime, - valuetype [netstandard]System.DateTime) - IL_002a: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool assembly/C::Equals(valuetype assembly/C, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret - IL_002b: ldc.i4.0 - IL_002c: ret + IL_001d: ldc.i4.0 + IL_001e: ret } .method public specialname rtspecialname instance void .ctor(valuetype [runtime]System.DateTime s) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOn.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOn.il.netcore.debug.bsl index 89fbc9a2786..cdd468d2996 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOn.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOn.il.netcore.debug.bsl @@ -175,51 +175,66 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype assembly/C obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype assembly/C& V_0, + class [runtime]System.Collections.IEqualityComparer V_1, + valuetype [runtime]System.DateTime V_2, + valuetype [runtime]System.DateTime V_3, + class [runtime]System.Collections.IEqualityComparer V_4) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldarg.2 + IL_0004: stloc.1 + IL_0005: ldarg.0 + IL_0006: ldfld valuetype [runtime]System.DateTime assembly/C::s + IL_000b: stloc.2 + IL_000c: ldloc.0 + IL_000d: ldfld valuetype [runtime]System.DateTime assembly/C::s + IL_0012: stloc.3 + IL_0013: ldloc.1 + IL_0014: stloc.s V_4 + IL_0016: ldloc.2 + IL_0017: ldloc.3 + IL_0018: call bool [netstandard]System.DateTime::Equals(valuetype [netstandard]System.DateTime, + valuetype [netstandard]System.DateTime) + IL_001d: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 + .maxstack 5 .locals init (object V_0, - valuetype assembly/C V_1, - valuetype assembly/C& V_2, - class [runtime]System.Collections.IEqualityComparer V_3, - valuetype [runtime]System.DateTime V_4, - valuetype [runtime]System.DateTime V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + valuetype assembly/C V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst assembly/C IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_0036 + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any assembly/C IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldarg.2 - IL_0018: stloc.3 - IL_0019: ldarg.0 - IL_001a: ldfld valuetype [runtime]System.DateTime assembly/C::s - IL_001f: stloc.s V_4 - IL_0021: ldloc.2 - IL_0022: ldfld valuetype [runtime]System.DateTime assembly/C::s - IL_0027: stloc.s V_5 - IL_0029: ldloc.3 - IL_002a: stloc.s V_6 - IL_002c: ldloc.s V_4 - IL_002e: ldloc.s V_5 - IL_0030: call bool [netstandard]System.DateTime::Equals(valuetype [netstandard]System.DateTime, - valuetype [netstandard]System.DateTime) - IL_0035: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool assembly/C::Equals(valuetype assembly/C, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret - IL_0036: ldc.i4.0 - IL_0037: ret + IL_001d: ldc.i4.0 + IL_001e: ret } .method public specialname rtspecialname instance void .ctor(valuetype [runtime]System.DateTime s) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOn.il.netcore.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOn.il.netcore.release.bsl index 19c8b0f37a8..ab9182b9e71 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOn.il.netcore.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/StaticInit/StaticInit_Struct01.fs.RealInternalSignatureOn.il.netcore.release.bsl @@ -157,42 +157,57 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype assembly/C obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype assembly/C& V_0, + class [runtime]System.Collections.IEqualityComparer V_1) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldarg.2 + IL_0004: stloc.1 + IL_0005: ldarg.0 + IL_0006: ldfld valuetype [runtime]System.DateTime assembly/C::s + IL_000b: ldloc.0 + IL_000c: ldfld valuetype [runtime]System.DateTime assembly/C::s + IL_0011: call bool [netstandard]System.DateTime::Equals(valuetype [netstandard]System.DateTime, + valuetype [netstandard]System.DateTime) + IL_0016: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 + .maxstack 5 .locals init (object V_0, - valuetype assembly/C V_1, - valuetype assembly/C& V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + valuetype assembly/C V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst assembly/C IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_002b + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any assembly/C IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldarg.2 - IL_0018: stloc.3 - IL_0019: ldarg.0 - IL_001a: ldfld valuetype [runtime]System.DateTime assembly/C::s - IL_001f: ldloc.2 - IL_0020: ldfld valuetype [runtime]System.DateTime assembly/C::s - IL_0025: call bool [netstandard]System.DateTime::Equals(valuetype [netstandard]System.DateTime, - valuetype [netstandard]System.DateTime) - IL_002a: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool assembly/C::Equals(valuetype assembly/C, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret - IL_002b: ldc.i4.0 - IL_002c: ret + IL_001d: ldc.i4.0 + IL_001e: ret } .method public specialname rtspecialname instance void .ctor(valuetype [runtime]System.DateTime s) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch06.fs.il.net472.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch06.fs.il.net472.debug.bsl index fb7c3431ced..d3655908f72 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch06.fs.il.net472.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch06.fs.il.net472.debug.bsl @@ -73,8 +73,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 8 @@ -87,8 +86,7 @@ IL_0016: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 _tag) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 _tag) cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 E0 07 00 00 15 53 74 65 70 70 69 6E 67 4D @@ -105,8 +103,7 @@ IL_000d: ret } - .method public static class assembly/Discr - get_CaseA() cil managed + .method public static class assembly/Discr get_CaseA() cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -116,8 +113,7 @@ IL_0005: ret } - .method public hidebysig instance bool - get_IsCaseA() cil managed + .method public hidebysig instance bool get_IsCaseA() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -130,8 +126,7 @@ IL_0009: ret } - .method public static class assembly/Discr - get_CaseB() cil managed + .method public static class assembly/Discr get_CaseB() cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 01 00 00 00 00 00 ) @@ -141,8 +136,7 @@ IL_0005: ret } - .method public hidebysig instance bool - get_IsCaseB() cil managed + .method public hidebysig instance bool get_IsCaseB() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -155,8 +149,7 @@ IL_0009: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -167,8 +160,7 @@ IL_0006: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -182,8 +174,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -196,8 +187,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/Discr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/Discr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -241,8 +231,7 @@ IL_0026: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -306,8 +295,7 @@ IL_0037: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -326,8 +314,7 @@ IL_000d: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -338,52 +325,72 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/Discr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/Discr V_0, - class assembly/Discr V_1, - int32 V_2, - int32 V_3) + int32 V_1, + int32 V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0024 + IL_0001: brfalse.s IL_001d IL_0003: ldarg.1 - IL_0004: isinst assembly/Discr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0022 + IL_0004: brfalse.s IL_001b - IL_000d: ldloc.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: ldfld int32 assembly/Discr::_tag IL_000e: stloc.1 - IL_000f: ldarg.0 + IL_000f: ldloc.0 IL_0010: ldfld int32 assembly/Discr::_tag IL_0015: stloc.2 IL_0016: ldloc.1 - IL_0017: ldfld int32 assembly/Discr::_tag - IL_001c: stloc.3 - IL_001d: ldloc.2 - IL_001e: ldloc.3 - IL_001f: ceq - IL_0021: ret - - IL_0022: ldc.i4.0 - IL_0023: ret - - IL_0024: ldarg.1 - IL_0025: ldnull - IL_0026: cgt.un - IL_0028: ldc.i4.0 - IL_0029: ceq - IL_002b: ret + IL_0017: ldloc.2 + IL_0018: ceq + IL_001a: ret + + IL_001b: ldc.i4.0 + IL_001c: ret + + IL_001d: ldarg.1 + IL_001e: ldnull + IL_001f: cgt.un + IL_0021: ldc.i4.0 + IL_0022: ceq + IL_0024: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/Discr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/Discr V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/Discr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/Discr::Equals(class assembly/Discr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/Discr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -418,8 +425,7 @@ IL_0022: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -569,8 +575,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -581,8 +586,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch06.fs.il.net472.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch06.fs.il.net472.release.bsl index fb7c3431ced..d3655908f72 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch06.fs.il.net472.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch06.fs.il.net472.release.bsl @@ -73,8 +73,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 8 @@ -87,8 +86,7 @@ IL_0016: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 _tag) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 _tag) cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 E0 07 00 00 15 53 74 65 70 70 69 6E 67 4D @@ -105,8 +103,7 @@ IL_000d: ret } - .method public static class assembly/Discr - get_CaseA() cil managed + .method public static class assembly/Discr get_CaseA() cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -116,8 +113,7 @@ IL_0005: ret } - .method public hidebysig instance bool - get_IsCaseA() cil managed + .method public hidebysig instance bool get_IsCaseA() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -130,8 +126,7 @@ IL_0009: ret } - .method public static class assembly/Discr - get_CaseB() cil managed + .method public static class assembly/Discr get_CaseB() cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 01 00 00 00 00 00 ) @@ -141,8 +136,7 @@ IL_0005: ret } - .method public hidebysig instance bool - get_IsCaseB() cil managed + .method public hidebysig instance bool get_IsCaseB() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -155,8 +149,7 @@ IL_0009: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -167,8 +160,7 @@ IL_0006: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -182,8 +174,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -196,8 +187,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/Discr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/Discr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -241,8 +231,7 @@ IL_0026: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -306,8 +295,7 @@ IL_0037: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -326,8 +314,7 @@ IL_000d: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -338,52 +325,72 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/Discr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/Discr V_0, - class assembly/Discr V_1, - int32 V_2, - int32 V_3) + int32 V_1, + int32 V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0024 + IL_0001: brfalse.s IL_001d IL_0003: ldarg.1 - IL_0004: isinst assembly/Discr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0022 + IL_0004: brfalse.s IL_001b - IL_000d: ldloc.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: ldfld int32 assembly/Discr::_tag IL_000e: stloc.1 - IL_000f: ldarg.0 + IL_000f: ldloc.0 IL_0010: ldfld int32 assembly/Discr::_tag IL_0015: stloc.2 IL_0016: ldloc.1 - IL_0017: ldfld int32 assembly/Discr::_tag - IL_001c: stloc.3 - IL_001d: ldloc.2 - IL_001e: ldloc.3 - IL_001f: ceq - IL_0021: ret - - IL_0022: ldc.i4.0 - IL_0023: ret - - IL_0024: ldarg.1 - IL_0025: ldnull - IL_0026: cgt.un - IL_0028: ldc.i4.0 - IL_0029: ceq - IL_002b: ret + IL_0017: ldloc.2 + IL_0018: ceq + IL_001a: ret + + IL_001b: ldc.i4.0 + IL_001c: ret + + IL_001d: ldarg.1 + IL_001e: ldnull + IL_001f: cgt.un + IL_0021: ldc.i4.0 + IL_0022: ceq + IL_0024: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/Discr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/Discr V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/Discr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/Discr::Equals(class assembly/Discr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/Discr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -418,8 +425,7 @@ IL_0022: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -569,8 +575,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -581,8 +586,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch06.fs.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch06.fs.il.netcore.debug.bsl index b9de7f3d8ea..8b372ef39f1 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch06.fs.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch06.fs.il.netcore.debug.bsl @@ -74,8 +74,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 8 @@ -88,8 +87,7 @@ IL_0016: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 _tag) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 _tag) cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 E0 07 00 00 15 53 74 65 70 70 69 6E 67 4D @@ -106,8 +104,7 @@ IL_000d: ret } - .method public static class assembly/Discr - get_CaseA() cil managed + .method public static class assembly/Discr get_CaseA() cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -117,8 +114,7 @@ IL_0005: ret } - .method public hidebysig instance bool - get_IsCaseA() cil managed + .method public hidebysig instance bool get_IsCaseA() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -131,8 +127,7 @@ IL_0009: ret } - .method public static class assembly/Discr - get_CaseB() cil managed + .method public static class assembly/Discr get_CaseB() cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 01 00 00 00 00 00 ) @@ -142,8 +137,7 @@ IL_0005: ret } - .method public hidebysig instance bool - get_IsCaseB() cil managed + .method public hidebysig instance bool get_IsCaseB() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -156,8 +150,7 @@ IL_0009: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -168,8 +161,7 @@ IL_0006: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -183,8 +175,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -197,8 +188,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/Discr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/Discr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -242,8 +232,7 @@ IL_0026: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -307,8 +296,7 @@ IL_0037: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -327,8 +315,7 @@ IL_000d: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -339,52 +326,72 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/Discr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/Discr V_0, - class assembly/Discr V_1, - int32 V_2, - int32 V_3) + int32 V_1, + int32 V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0024 + IL_0001: brfalse.s IL_001d IL_0003: ldarg.1 - IL_0004: isinst assembly/Discr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0022 + IL_0004: brfalse.s IL_001b - IL_000d: ldloc.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: ldfld int32 assembly/Discr::_tag IL_000e: stloc.1 - IL_000f: ldarg.0 + IL_000f: ldloc.0 IL_0010: ldfld int32 assembly/Discr::_tag IL_0015: stloc.2 IL_0016: ldloc.1 - IL_0017: ldfld int32 assembly/Discr::_tag - IL_001c: stloc.3 - IL_001d: ldloc.2 - IL_001e: ldloc.3 - IL_001f: ceq - IL_0021: ret - - IL_0022: ldc.i4.0 - IL_0023: ret - - IL_0024: ldarg.1 - IL_0025: ldnull - IL_0026: cgt.un - IL_0028: ldc.i4.0 - IL_0029: ceq - IL_002b: ret + IL_0017: ldloc.2 + IL_0018: ceq + IL_001a: ret + + IL_001b: ldc.i4.0 + IL_001c: ret + + IL_001d: ldarg.1 + IL_001e: ldnull + IL_001f: cgt.un + IL_0021: ldc.i4.0 + IL_0022: ceq + IL_0024: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/Discr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/Discr V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/Discr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/Discr::Equals(class assembly/Discr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/Discr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -419,8 +426,7 @@ IL_0022: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch06.fs.il.netcore.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch06.fs.il.netcore.release.bsl index 1e58b7f7a8d..6a5e70088ad 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch06.fs.il.netcore.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch06.fs.il.netcore.release.bsl @@ -1,523 +1,529 @@ - - - - -.assembly extern runtime { } -.assembly extern FSharp.Core { } -.assembly extern runtime { } -.assembly assembly -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, - int32, - int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) - + + + + +.assembly extern runtime { } +.assembly extern FSharp.Core { } +.assembly extern runtime { } +.assembly assembly +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, + int32, + int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + - - .hash algorithm 0x00008004 - .ver 0:0:0:0 -} -.mresource public FSharpSignatureData.assembly -{ + + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.mresource public FSharpSignatureData.assembly +{ -} -.mresource public FSharpOptimizationData.assembly -{ +} +.mresource public FSharpOptimizationData.assembly +{ -} -.module assembly.exe +} +.module assembly.exe -.imagebase {value} -.file alignment 0x00000200 -.stackreserve 0x00100000 +.imagebase {value} +.file alignment 0x00000200 +.stackreserve 0x00100000 .subsystem 0x0003 .corflags 0x00000001 - - - - -.class public abstract auto ansi sealed assembly - extends [runtime]System.Object -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) - .class auto autochar serializable sealed nested public beforefieldinit Discr - extends [runtime]System.Object - implements class [runtime]System.IEquatable`1, - [runtime]System.Collections.IStructuralEquatable, - class [runtime]System.IComparable`1, - [runtime]System.IComparable, - [runtime]System.Collections.IStructuralComparable - { + + + + +.class public abstract auto ansi sealed assembly + extends [runtime]System.Object +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class auto autochar serializable sealed nested public beforefieldinit Discr + extends [runtime]System.Object + implements class [runtime]System.IEquatable`1, + [runtime]System.Collections.IStructuralEquatable, + class [runtime]System.IComparable`1, + [runtime]System.IComparable, + [runtime]System.Collections.IStructuralComparable + { .custom instance void [runtime]System.Diagnostics.DebuggerDisplayAttribute::.ctor(string) = ( 01 00 15 7B 5F 5F 44 65 62 75 67 44 69 73 70 6C 61 79 28 29 2C 6E 71 7D 00 00 ) - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 01 00 00 00 00 00 ) - .class abstract auto ansi sealed nested public Tags - extends [runtime]System.Object - { - .field public static literal int32 CaseA = int32(0x00000000) - .field public static literal int32 CaseB = int32(0x00000001) + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 01 00 00 00 00 00 ) + .class abstract auto ansi sealed nested public Tags + extends [runtime]System.Object + { + .field public static literal int32 CaseA = int32(0x00000000) + .field public static literal int32 CaseB = int32(0x00000001) } - - .field assembly initonly int32 _tag - .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .field static assembly initonly class assembly/Discr _unique_CaseA - .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .field static assembly initonly class assembly/Discr _unique_CaseB - .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method private specialname rtspecialname static - void .cctor() cil managed - { + + .field assembly initonly int32 _tag + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .field static assembly initonly class assembly/Discr _unique_CaseA + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .field static assembly initonly class assembly/Discr _unique_CaseB + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method private specialname rtspecialname static void .cctor() cil managed + { - .maxstack 8 - IL_0000: ldc.i4.0 - IL_0001: newobj instance void assembly/Discr::.ctor(int32) - IL_0006: stsfld class assembly/Discr assembly/Discr::_unique_CaseA - IL_000b: ldc.i4.1 - IL_000c: newobj instance void assembly/Discr::.ctor(int32) - IL_0011: stsfld class assembly/Discr assembly/Discr::_unique_CaseB - IL_0016: ret + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void assembly/Discr::.ctor(int32) + IL_0006: stsfld class assembly/Discr assembly/Discr::_unique_CaseA + IL_000b: ldc.i4.1 + IL_000c: newobj instance void assembly/Discr::.ctor(int32) + IL_0011: stsfld class assembly/Discr assembly/Discr::_unique_CaseB + IL_0016: ret } - - .method assembly specialname rtspecialname - instance void .ctor(int32 _tag) cil managed - { - .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, + + .method assembly specialname rtspecialname instance void .ctor(int32 _tag) cil managed + { + .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 E0 07 00 00 15 53 74 65 70 70 69 6E 67 4D 61 74 63 68 30 36 2B 44 69 73 63 72 00 00 ) - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: call instance void [runtime]System.Object::.ctor() - IL_0006: ldarg.0 - IL_0007: ldarg.1 - IL_0008: stfld int32 assembly/Discr::_tag - IL_000d: ret + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [runtime]System.Object::.ctor() + IL_0006: ldarg.0 + IL_0007: ldarg.1 + IL_0008: stfld int32 assembly/Discr::_tag + IL_000d: ret } - - .method public static class assembly/Discr - get_CaseA() cil managed - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, - int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) + + .method public static class assembly/Discr get_CaseA() cil managed + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) - .maxstack 8 - IL_0000: ldsfld class assembly/Discr assembly/Discr::_unique_CaseA - IL_0005: ret + .maxstack 8 + IL_0000: ldsfld class assembly/Discr assembly/Discr::_unique_CaseA + IL_0005: ret } - - .method public hidebysig instance bool - get_IsCaseA() cil managed - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .method public hidebysig instance bool get_IsCaseA() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: call instance int32 assembly/Discr::get_Tag() - IL_0006: ldc.i4.0 - IL_0007: ceq - IL_0009: ret + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance int32 assembly/Discr::get_Tag() + IL_0006: ldc.i4.0 + IL_0007: ceq + IL_0009: ret } - - .method public static class assembly/Discr - get_CaseB() cil managed - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, - int32) = ( 01 00 08 00 00 00 01 00 00 00 00 00 ) + + .method public static class assembly/Discr get_CaseB() cil managed + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32) = ( 01 00 08 00 00 00 01 00 00 00 00 00 ) - .maxstack 8 - IL_0000: ldsfld class assembly/Discr assembly/Discr::_unique_CaseB - IL_0005: ret + .maxstack 8 + IL_0000: ldsfld class assembly/Discr assembly/Discr::_unique_CaseB + IL_0005: ret } - - .method public hidebysig instance bool - get_IsCaseB() cil managed - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .method public hidebysig instance bool get_IsCaseB() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: call instance int32 assembly/Discr::get_Tag() - IL_0006: ldc.i4.1 - IL_0007: ceq - IL_0009: ret + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance int32 assembly/Discr::get_Tag() + IL_0006: ldc.i4.1 + IL_0007: ceq + IL_0009: ret } - - .method public hidebysig instance int32 - get_Tag() cil managed - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .method public hidebysig instance int32 get_Tag() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: ldfld int32 assembly/Discr::_tag - IL_0006: ret + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/Discr::_tag + IL_0006: ret } - - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 8 - IL_0000: ldstr "%+0.8A" - IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,string>::.ctor(string) - IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_000f: ldarg.0 - IL_0010: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0) - IL_0015: ret + .maxstack 8 + IL_0000: ldstr "%+0.8A" + IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,string>::.ctor(string) + IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_000f: ldarg.0 + IL_0010: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0) + IL_0015: ret } - - .method public strict virtual instance string - ToString() cil managed - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .method public strict virtual instance string ToString() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 8 - IL_0000: ldstr "%+A" - IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,class assembly/Discr>::.ctor(string) - IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_000f: ldarg.0 - IL_0010: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0) - IL_0015: ret + .maxstack 8 + IL_0000: ldstr "%+A" + IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,class assembly/Discr>::.ctor(string) + IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_000f: ldarg.0 + IL_0010: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0) + IL_0015: ret } - - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/Discr obj) cil managed - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .method public hidebysig virtual final instance int32 CompareTo(class assembly/Discr obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 - .locals init (int32 V_0, - int32 V_1) - IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0020 - - IL_0003: ldarg.1 - IL_0004: brfalse.s IL_001e - - IL_0006: ldarg.0 - IL_0007: ldfld int32 assembly/Discr::_tag - IL_000c: stloc.0 - IL_000d: ldarg.1 - IL_000e: ldfld int32 assembly/Discr::_tag - IL_0013: stloc.1 - IL_0014: ldloc.0 - IL_0015: ldloc.1 - IL_0016: bne.un.s IL_001a - - IL_0018: ldc.i4.0 - IL_0019: ret - - IL_001a: ldloc.0 - IL_001b: ldloc.1 - IL_001c: sub - IL_001d: ret - - IL_001e: ldc.i4.1 - IL_001f: ret - - IL_0020: ldarg.1 - IL_0021: brfalse.s IL_0025 - - IL_0023: ldc.i4.m1 - IL_0024: ret - - IL_0025: ldc.i4.0 - IL_0026: ret + .maxstack 4 + .locals init (int32 V_0, + int32 V_1) + IL_0000: ldarg.0 + IL_0001: brfalse.s IL_0020 + + IL_0003: ldarg.1 + IL_0004: brfalse.s IL_001e + + IL_0006: ldarg.0 + IL_0007: ldfld int32 assembly/Discr::_tag + IL_000c: stloc.0 + IL_000d: ldarg.1 + IL_000e: ldfld int32 assembly/Discr::_tag + IL_0013: stloc.1 + IL_0014: ldloc.0 + IL_0015: ldloc.1 + IL_0016: bne.un.s IL_001a + + IL_0018: ldc.i4.0 + IL_0019: ret + + IL_001a: ldloc.0 + IL_001b: ldloc.1 + IL_001c: sub + IL_001d: ret + + IL_001e: ldc.i4.1 + IL_001f: ret + + IL_0020: ldarg.1 + IL_0021: brfalse.s IL_0025 + + IL_0023: ldc.i4.m1 + IL_0024: ret + + IL_0025: ldc.i4.0 + IL_0026: ret } - - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: ldarg.1 - IL_0002: unbox.any assembly/Discr - IL_0007: callvirt instance int32 assembly/Discr::CompareTo(class assembly/Discr) - IL_000c: ret + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any assembly/Discr + IL_0007: callvirt instance int32 assembly/Discr::CompareTo(class assembly/Discr) + IL_000c: ret } - - .method public hidebysig virtual final - instance int32 CompareTo(object obj, - class [runtime]System.Collections.IComparer comp) cil managed - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [runtime]System.Collections.IComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 - .locals init (class assembly/Discr V_0, - int32 V_1, - int32 V_2) - IL_0000: ldarg.1 - IL_0001: unbox.any assembly/Discr - IL_0006: stloc.0 - IL_0007: ldarg.0 - IL_0008: brfalse.s IL_002c - - IL_000a: ldarg.1 - IL_000b: unbox.any assembly/Discr - IL_0010: brfalse.s IL_002a - - IL_0012: ldarg.0 - IL_0013: ldfld int32 assembly/Discr::_tag - IL_0018: stloc.1 - IL_0019: ldloc.0 - IL_001a: ldfld int32 assembly/Discr::_tag - IL_001f: stloc.2 - IL_0020: ldloc.1 - IL_0021: ldloc.2 - IL_0022: bne.un.s IL_0026 - - IL_0024: ldc.i4.0 - IL_0025: ret - - IL_0026: ldloc.1 - IL_0027: ldloc.2 - IL_0028: sub - IL_0029: ret - - IL_002a: ldc.i4.1 - IL_002b: ret - - IL_002c: ldarg.1 - IL_002d: unbox.any assembly/Discr - IL_0032: brfalse.s IL_0036 - - IL_0034: ldc.i4.m1 - IL_0035: ret - - IL_0036: ldc.i4.0 - IL_0037: ret + .maxstack 4 + .locals init (class assembly/Discr V_0, + int32 V_1, + int32 V_2) + IL_0000: ldarg.1 + IL_0001: unbox.any assembly/Discr + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: brfalse.s IL_002c + + IL_000a: ldarg.1 + IL_000b: unbox.any assembly/Discr + IL_0010: brfalse.s IL_002a + + IL_0012: ldarg.0 + IL_0013: ldfld int32 assembly/Discr::_tag + IL_0018: stloc.1 + IL_0019: ldloc.0 + IL_001a: ldfld int32 assembly/Discr::_tag + IL_001f: stloc.2 + IL_0020: ldloc.1 + IL_0021: ldloc.2 + IL_0022: bne.un.s IL_0026 + + IL_0024: ldc.i4.0 + IL_0025: ret + + IL_0026: ldloc.1 + IL_0027: ldloc.2 + IL_0028: sub + IL_0029: ret + + IL_002a: ldc.i4.1 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: unbox.any assembly/Discr + IL_0032: brfalse.s IL_0036 + + IL_0034: ldc.i4.m1 + IL_0035: ret + + IL_0036: ldc.i4.0 + IL_0037: ret } - - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 3 - .locals init (int32 V_0) - IL_0000: ldarg.0 - IL_0001: brfalse.s IL_000c - - IL_0003: ldc.i4.0 - IL_0004: stloc.0 - IL_0005: ldarg.0 - IL_0006: ldfld int32 assembly/Discr::_tag - IL_000b: ret - - IL_000c: ldc.i4.0 - IL_000d: ret + .maxstack 3 + .locals init (int32 V_0) + IL_0000: ldarg.0 + IL_0001: brfalse.s IL_000c + + IL_0003: ldc.i4.0 + IL_0004: stloc.0 + IL_0005: ldarg.0 + IL_0006: ldfld int32 assembly/Discr::_tag + IL_000b: ret + + IL_000c: ldc.i4.0 + IL_000d: ret } - - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .method public hidebysig virtual final instance int32 GetHashCode() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() - IL_0006: callvirt instance int32 assembly/Discr::GetHashCode(class [runtime]System.Collections.IEqualityComparer) - IL_000b: ret + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: callvirt instance int32 assembly/Discr::GetHashCode(class [runtime]System.Collections.IEqualityComparer) + IL_000b: ret } - - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .method public hidebysig instance bool + Equals(class assembly/Discr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 - .locals init (class assembly/Discr V_0, - class assembly/Discr V_1, - int32 V_2, - int32 V_3) - IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0024 - - IL_0003: ldarg.1 - IL_0004: isinst assembly/Discr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0022 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: ldfld int32 assembly/Discr::_tag - IL_0015: stloc.2 - IL_0016: ldloc.1 - IL_0017: ldfld int32 assembly/Discr::_tag - IL_001c: stloc.3 - IL_001d: ldloc.2 - IL_001e: ldloc.3 - IL_001f: ceq - IL_0021: ret - - IL_0022: ldc.i4.0 - IL_0023: ret - - IL_0024: ldarg.1 - IL_0025: ldnull - IL_0026: cgt.un - IL_0028: ldc.i4.0 - IL_0029: ceq - IL_002b: ret + .maxstack 4 + .locals init (class assembly/Discr V_0, + int32 V_1, + int32 V_2) + IL_0000: ldarg.0 + IL_0001: brfalse.s IL_001d + + IL_0003: ldarg.1 + IL_0004: brfalse.s IL_001b + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: ldfld int32 assembly/Discr::_tag + IL_000e: stloc.1 + IL_000f: ldloc.0 + IL_0010: ldfld int32 assembly/Discr::_tag + IL_0015: stloc.2 + IL_0016: ldloc.1 + IL_0017: ldloc.2 + IL_0018: ceq + IL_001a: ret + + IL_001b: ldc.i4.0 + IL_001c: ret + + IL_001d: ldarg.1 + IL_001e: ldnull + IL_001f: cgt.un + IL_0021: ldc.i4.0 + IL_0022: ceq + IL_0024: ret } - - .method public hidebysig virtual final - instance bool Equals(class assembly/Discr obj) cil managed - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 - .locals init (int32 V_0, - int32 V_1) - IL_0000: ldarg.0 - IL_0001: brfalse.s IL_001b - - IL_0003: ldarg.1 - IL_0004: brfalse.s IL_0019 - - IL_0006: ldarg.0 - IL_0007: ldfld int32 assembly/Discr::_tag - IL_000c: stloc.0 - IL_000d: ldarg.1 - IL_000e: ldfld int32 assembly/Discr::_tag - IL_0013: stloc.1 - IL_0014: ldloc.0 - IL_0015: ldloc.1 - IL_0016: ceq - IL_0018: ret - - IL_0019: ldc.i4.0 - IL_001a: ret - - IL_001b: ldarg.1 - IL_001c: ldnull - IL_001d: cgt.un - IL_001f: ldc.i4.0 - IL_0020: ceq - IL_0022: ret + .maxstack 5 + .locals init (class assembly/Discr V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/Discr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/Discr::Equals(class assembly/Discr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } - - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .method public hidebysig virtual final instance bool Equals(class assembly/Discr obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 - .locals init (class assembly/Discr V_0) - IL_0000: ldarg.1 - IL_0001: isinst assembly/Discr - IL_0006: stloc.0 - IL_0007: ldloc.0 - IL_0008: brfalse.s IL_0012 - - IL_000a: ldarg.0 - IL_000b: ldloc.0 - IL_000c: callvirt instance bool assembly/Discr::Equals(class assembly/Discr) - IL_0011: ret - - IL_0012: ldc.i4.0 - IL_0013: ret + .maxstack 4 + .locals init (int32 V_0, + int32 V_1) + IL_0000: ldarg.0 + IL_0001: brfalse.s IL_001b + + IL_0003: ldarg.1 + IL_0004: brfalse.s IL_0019 + + IL_0006: ldarg.0 + IL_0007: ldfld int32 assembly/Discr::_tag + IL_000c: stloc.0 + IL_000d: ldarg.1 + IL_000e: ldfld int32 assembly/Discr::_tag + IL_0013: stloc.1 + IL_0014: ldloc.0 + IL_0015: ldloc.1 + IL_0016: ceq + IL_0018: ret + + IL_0019: ldc.i4.0 + IL_001a: ret + + IL_001b: ldarg.1 + IL_001c: ldnull + IL_001d: cgt.un + IL_001f: ldc.i4.0 + IL_0020: ceq + IL_0022: ret } - - .property instance int32 Tag() - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .get instance int32 assembly/Discr::get_Tag() + + .method public hidebysig virtual final instance bool Equals(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (class assembly/Discr V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/Discr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0012 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: callvirt instance bool assembly/Discr::Equals(class assembly/Discr) + IL_0011: ret + + IL_0012: ldc.i4.0 + IL_0013: ret + } + + .property instance int32 Tag() + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .get instance int32 assembly/Discr::get_Tag() } - .property class assembly/Discr - CaseA() - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .get class assembly/Discr assembly/Discr::get_CaseA() + .property class assembly/Discr + CaseA() + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .get class assembly/Discr assembly/Discr::get_CaseA() } - .property instance bool IsCaseA() - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .get instance bool assembly/Discr::get_IsCaseA() + .property instance bool IsCaseA() + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .get instance bool assembly/Discr::get_IsCaseA() } - .property class assembly/Discr - CaseB() - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .get class assembly/Discr assembly/Discr::get_CaseB() + .property class assembly/Discr + CaseB() + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .get class assembly/Discr assembly/Discr::get_CaseB() } - .property instance bool IsCaseB() - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .get instance bool assembly/Discr::get_IsCaseB() + .property instance bool IsCaseB() + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .get instance bool assembly/Discr::get_IsCaseB() } } - - .method public static void funcD(class assembly/Discr n) cil managed - { + + .method public static void funcD(class assembly/Discr n) cil managed + { - .maxstack 8 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: call instance int32 assembly/Discr::get_Tag() - IL_0007: ldc.i4.0 - IL_0008: bne.un.s IL_000c - - IL_000a: br.s IL_0017 - - IL_000c: ldstr "B" - IL_0011: call void [runtime]System.Console::WriteLine(string) - IL_0016: ret - - IL_0017: ldstr "A" - IL_001c: call void [runtime]System.Console::WriteLine(string) - IL_0021: ret + .maxstack 8 + IL_0000: nop + IL_0001: ldarg.0 + IL_0002: call instance int32 assembly/Discr::get_Tag() + IL_0007: ldc.i4.0 + IL_0008: bne.un.s IL_000c + + IL_000a: br.s IL_0017 + + IL_000c: ldstr "B" + IL_0011: call void [runtime]System.Console::WriteLine(string) + IL_0016: ret + + IL_0017: ldstr "A" + IL_001c: call void [runtime]System.Console::WriteLine(string) + IL_0021: ret } - + } - -.class private abstract auto ansi sealed ''.$assembly - extends [runtime]System.Object -{ - .method public static void main@() cil managed - { - .entrypoint + +.class private abstract auto ansi sealed ''.$assembly + extends [runtime]System.Object +{ + .method public static void main@() cil managed + { + .entrypoint - .maxstack 8 - IL_0000: ret + .maxstack 8 + IL_0000: ret } - + } + + - - - + diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch07.fs.il.net472.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch07.fs.il.net472.debug.bsl index 4b144f52257..10c83501a14 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch07.fs.il.net472.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch07.fs.il.net472.debug.bsl @@ -73,8 +73,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 8 @@ -87,8 +86,7 @@ IL_0016: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 _tag) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 _tag) cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 E0 07 00 00 15 53 74 65 70 70 69 6E 67 4D @@ -105,8 +103,7 @@ IL_000d: ret } - .method public static class assembly/Discr - get_CaseA() cil managed + .method public static class assembly/Discr get_CaseA() cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -116,8 +113,7 @@ IL_0005: ret } - .method public hidebysig instance bool - get_IsCaseA() cil managed + .method public hidebysig instance bool get_IsCaseA() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -130,8 +126,7 @@ IL_0009: ret } - .method public static class assembly/Discr - get_CaseB() cil managed + .method public static class assembly/Discr get_CaseB() cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 01 00 00 00 00 00 ) @@ -141,8 +136,7 @@ IL_0005: ret } - .method public hidebysig instance bool - get_IsCaseB() cil managed + .method public hidebysig instance bool get_IsCaseB() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -155,8 +149,7 @@ IL_0009: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -167,8 +160,7 @@ IL_0006: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -182,8 +174,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -196,8 +187,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/Discr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/Discr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -241,8 +231,7 @@ IL_0026: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -306,8 +295,7 @@ IL_0037: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -326,8 +314,7 @@ IL_000d: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -338,52 +325,72 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/Discr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/Discr V_0, - class assembly/Discr V_1, - int32 V_2, - int32 V_3) + int32 V_1, + int32 V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0024 + IL_0001: brfalse.s IL_001d IL_0003: ldarg.1 - IL_0004: isinst assembly/Discr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0022 + IL_0004: brfalse.s IL_001b - IL_000d: ldloc.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: ldfld int32 assembly/Discr::_tag IL_000e: stloc.1 - IL_000f: ldarg.0 + IL_000f: ldloc.0 IL_0010: ldfld int32 assembly/Discr::_tag IL_0015: stloc.2 IL_0016: ldloc.1 - IL_0017: ldfld int32 assembly/Discr::_tag - IL_001c: stloc.3 - IL_001d: ldloc.2 - IL_001e: ldloc.3 - IL_001f: ceq - IL_0021: ret - - IL_0022: ldc.i4.0 - IL_0023: ret - - IL_0024: ldarg.1 - IL_0025: ldnull - IL_0026: cgt.un - IL_0028: ldc.i4.0 - IL_0029: ceq - IL_002b: ret + IL_0017: ldloc.2 + IL_0018: ceq + IL_001a: ret + + IL_001b: ldc.i4.0 + IL_001c: ret + + IL_001d: ldarg.1 + IL_001e: ldnull + IL_001f: cgt.un + IL_0021: ldc.i4.0 + IL_0022: ceq + IL_0024: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/Discr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/Discr V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/Discr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/Discr::Equals(class assembly/Discr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/Discr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -418,8 +425,7 @@ IL_0022: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -569,8 +575,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -581,8 +586,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch07.fs.il.net472.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch07.fs.il.net472.release.bsl index 4b144f52257..10c83501a14 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch07.fs.il.net472.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch07.fs.il.net472.release.bsl @@ -73,8 +73,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 8 @@ -87,8 +86,7 @@ IL_0016: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 _tag) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 _tag) cil managed { .custom instance void System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 E0 07 00 00 15 53 74 65 70 70 69 6E 67 4D @@ -105,8 +103,7 @@ IL_000d: ret } - .method public static class assembly/Discr - get_CaseA() cil managed + .method public static class assembly/Discr get_CaseA() cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -116,8 +113,7 @@ IL_0005: ret } - .method public hidebysig instance bool - get_IsCaseA() cil managed + .method public hidebysig instance bool get_IsCaseA() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -130,8 +126,7 @@ IL_0009: ret } - .method public static class assembly/Discr - get_CaseB() cil managed + .method public static class assembly/Discr get_CaseB() cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 01 00 00 00 00 00 ) @@ -141,8 +136,7 @@ IL_0005: ret } - .method public hidebysig instance bool - get_IsCaseB() cil managed + .method public hidebysig instance bool get_IsCaseB() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -155,8 +149,7 @@ IL_0009: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -167,8 +160,7 @@ IL_0006: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -182,8 +174,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -196,8 +187,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/Discr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/Discr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -241,8 +231,7 @@ IL_0026: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -306,8 +295,7 @@ IL_0037: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -326,8 +314,7 @@ IL_000d: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -338,52 +325,72 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/Discr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/Discr V_0, - class assembly/Discr V_1, - int32 V_2, - int32 V_3) + int32 V_1, + int32 V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0024 + IL_0001: brfalse.s IL_001d IL_0003: ldarg.1 - IL_0004: isinst assembly/Discr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0022 + IL_0004: brfalse.s IL_001b - IL_000d: ldloc.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: ldfld int32 assembly/Discr::_tag IL_000e: stloc.1 - IL_000f: ldarg.0 + IL_000f: ldloc.0 IL_0010: ldfld int32 assembly/Discr::_tag IL_0015: stloc.2 IL_0016: ldloc.1 - IL_0017: ldfld int32 assembly/Discr::_tag - IL_001c: stloc.3 - IL_001d: ldloc.2 - IL_001e: ldloc.3 - IL_001f: ceq - IL_0021: ret - - IL_0022: ldc.i4.0 - IL_0023: ret - - IL_0024: ldarg.1 - IL_0025: ldnull - IL_0026: cgt.un - IL_0028: ldc.i4.0 - IL_0029: ceq - IL_002b: ret + IL_0017: ldloc.2 + IL_0018: ceq + IL_001a: ret + + IL_001b: ldc.i4.0 + IL_001c: ret + + IL_001d: ldarg.1 + IL_001e: ldnull + IL_001f: cgt.un + IL_0021: ldc.i4.0 + IL_0022: ceq + IL_0024: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/Discr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/Discr V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/Discr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/Discr::Equals(class assembly/Discr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/Discr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -418,8 +425,7 @@ IL_0022: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -569,8 +575,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -581,8 +586,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch07.fs.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch07.fs.il.netcore.debug.bsl index 7044cc5fe52..d4084c0176f 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch07.fs.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch07.fs.il.netcore.debug.bsl @@ -74,8 +74,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 8 @@ -88,8 +87,7 @@ IL_0016: ret } - .method assembly specialname rtspecialname - instance void .ctor(int32 _tag) cil managed + .method assembly specialname rtspecialname instance void .ctor(int32 _tag) cil managed { .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 E0 07 00 00 15 53 74 65 70 70 69 6E 67 4D @@ -106,8 +104,7 @@ IL_000d: ret } - .method public static class assembly/Discr - get_CaseA() cil managed + .method public static class assembly/Discr get_CaseA() cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) @@ -117,8 +114,7 @@ IL_0005: ret } - .method public hidebysig instance bool - get_IsCaseA() cil managed + .method public hidebysig instance bool get_IsCaseA() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -131,8 +127,7 @@ IL_0009: ret } - .method public static class assembly/Discr - get_CaseB() cil managed + .method public static class assembly/Discr get_CaseB() cil managed { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, int32) = ( 01 00 08 00 00 00 01 00 00 00 00 00 ) @@ -142,8 +137,7 @@ IL_0005: ret } - .method public hidebysig instance bool - get_IsCaseB() cil managed + .method public hidebysig instance bool get_IsCaseB() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -156,8 +150,7 @@ IL_0009: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -168,8 +161,7 @@ IL_0006: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -183,8 +175,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -197,8 +188,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/Discr obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/Discr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -242,8 +232,7 @@ IL_0026: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -307,8 +296,7 @@ IL_0037: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -327,8 +315,7 @@ IL_000d: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -339,52 +326,72 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/Discr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/Discr V_0, - class assembly/Discr V_1, - int32 V_2, - int32 V_3) + int32 V_1, + int32 V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0024 + IL_0001: brfalse.s IL_001d IL_0003: ldarg.1 - IL_0004: isinst assembly/Discr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0022 + IL_0004: brfalse.s IL_001b - IL_000d: ldloc.0 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: ldfld int32 assembly/Discr::_tag IL_000e: stloc.1 - IL_000f: ldarg.0 + IL_000f: ldloc.0 IL_0010: ldfld int32 assembly/Discr::_tag IL_0015: stloc.2 IL_0016: ldloc.1 - IL_0017: ldfld int32 assembly/Discr::_tag - IL_001c: stloc.3 - IL_001d: ldloc.2 - IL_001e: ldloc.3 - IL_001f: ceq - IL_0021: ret - - IL_0022: ldc.i4.0 - IL_0023: ret - - IL_0024: ldarg.1 - IL_0025: ldnull - IL_0026: cgt.un - IL_0028: ldc.i4.0 - IL_0029: ceq - IL_002b: ret + IL_0017: ldloc.2 + IL_0018: ceq + IL_001a: ret + + IL_001b: ldc.i4.0 + IL_001c: ret + + IL_001d: ldarg.1 + IL_001e: ldnull + IL_001f: cgt.un + IL_0021: ldc.i4.0 + IL_0022: ceq + IL_0024: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/Discr obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/Discr V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/Discr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/Discr::Equals(class assembly/Discr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/Discr obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -419,8 +426,7 @@ IL_0022: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch07.fs.il.netcore.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch07.fs.il.netcore.release.bsl index 3db92d3b4da..12cac9d1c5b 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch07.fs.il.netcore.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/SteppingMatch/SteppingMatch07.fs.il.netcore.release.bsl @@ -1,523 +1,529 @@ - - - - -.assembly extern runtime { } -.assembly extern FSharp.Core { } -.assembly extern runtime { } -.assembly assembly -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, - int32, - int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) - + + + + +.assembly extern runtime { } +.assembly extern FSharp.Core { } +.assembly extern runtime { } +.assembly assembly +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, + int32, + int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + - - .hash algorithm 0x00008004 - .ver 0:0:0:0 -} -.mresource public FSharpSignatureData.assembly -{ + + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.mresource public FSharpSignatureData.assembly +{ -} -.mresource public FSharpOptimizationData.assembly -{ +} +.mresource public FSharpOptimizationData.assembly +{ -} -.module assembly.exe +} +.module assembly.exe -.imagebase {value} -.file alignment 0x00000200 -.stackreserve 0x00100000 +.imagebase {value} +.file alignment 0x00000200 +.stackreserve 0x00100000 .subsystem 0x0003 .corflags 0x00000001 - - - - -.class public abstract auto ansi sealed assembly - extends [runtime]System.Object -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) - .class auto autochar serializable sealed nested public beforefieldinit Discr - extends [runtime]System.Object - implements class [runtime]System.IEquatable`1, - [runtime]System.Collections.IStructuralEquatable, - class [runtime]System.IComparable`1, - [runtime]System.IComparable, - [runtime]System.Collections.IStructuralComparable - { + + + + +.class public abstract auto ansi sealed assembly + extends [runtime]System.Object +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class auto autochar serializable sealed nested public beforefieldinit Discr + extends [runtime]System.Object + implements class [runtime]System.IEquatable`1, + [runtime]System.Collections.IStructuralEquatable, + class [runtime]System.IComparable`1, + [runtime]System.IComparable, + [runtime]System.Collections.IStructuralComparable + { .custom instance void [runtime]System.Diagnostics.DebuggerDisplayAttribute::.ctor(string) = ( 01 00 15 7B 5F 5F 44 65 62 75 67 44 69 73 70 6C 61 79 28 29 2C 6E 71 7D 00 00 ) - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 01 00 00 00 00 00 ) - .class abstract auto ansi sealed nested public Tags - extends [runtime]System.Object - { - .field public static literal int32 CaseA = int32(0x00000000) - .field public static literal int32 CaseB = int32(0x00000001) + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 01 00 00 00 00 00 ) + .class abstract auto ansi sealed nested public Tags + extends [runtime]System.Object + { + .field public static literal int32 CaseA = int32(0x00000000) + .field public static literal int32 CaseB = int32(0x00000001) } - - .field assembly initonly int32 _tag - .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .field static assembly initonly class assembly/Discr _unique_CaseA - .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .field static assembly initonly class assembly/Discr _unique_CaseB - .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method private specialname rtspecialname static - void .cctor() cil managed - { + + .field assembly initonly int32 _tag + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .field static assembly initonly class assembly/Discr _unique_CaseA + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .field static assembly initonly class assembly/Discr _unique_CaseB + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method private specialname rtspecialname static void .cctor() cil managed + { - .maxstack 8 - IL_0000: ldc.i4.0 - IL_0001: newobj instance void assembly/Discr::.ctor(int32) - IL_0006: stsfld class assembly/Discr assembly/Discr::_unique_CaseA - IL_000b: ldc.i4.1 - IL_000c: newobj instance void assembly/Discr::.ctor(int32) - IL_0011: stsfld class assembly/Discr assembly/Discr::_unique_CaseB - IL_0016: ret + .maxstack 8 + IL_0000: ldc.i4.0 + IL_0001: newobj instance void assembly/Discr::.ctor(int32) + IL_0006: stsfld class assembly/Discr assembly/Discr::_unique_CaseA + IL_000b: ldc.i4.1 + IL_000c: newobj instance void assembly/Discr::.ctor(int32) + IL_0011: stsfld class assembly/Discr assembly/Discr::_unique_CaseB + IL_0016: ret } - - .method assembly specialname rtspecialname - instance void .ctor(int32 _tag) cil managed - { - .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, + + .method assembly specialname rtspecialname instance void .ctor(int32 _tag) cil managed + { + .custom instance void [runtime]System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute::.ctor(valuetype [runtime]System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes, class [runtime]System.Type) = ( 01 00 E0 07 00 00 15 53 74 65 70 70 69 6E 67 4D 61 74 63 68 30 37 2B 44 69 73 63 72 00 00 ) - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: call instance void [runtime]System.Object::.ctor() - IL_0006: ldarg.0 - IL_0007: ldarg.1 - IL_0008: stfld int32 assembly/Discr::_tag - IL_000d: ret + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [runtime]System.Object::.ctor() + IL_0006: ldarg.0 + IL_0007: ldarg.1 + IL_0008: stfld int32 assembly/Discr::_tag + IL_000d: ret } - - .method public static class assembly/Discr - get_CaseA() cil managed - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, - int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) + + .method public static class assembly/Discr get_CaseA() cil managed + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32) = ( 01 00 08 00 00 00 00 00 00 00 00 00 ) - .maxstack 8 - IL_0000: ldsfld class assembly/Discr assembly/Discr::_unique_CaseA - IL_0005: ret + .maxstack 8 + IL_0000: ldsfld class assembly/Discr assembly/Discr::_unique_CaseA + IL_0005: ret } - - .method public hidebysig instance bool - get_IsCaseA() cil managed - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .method public hidebysig instance bool get_IsCaseA() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: call instance int32 assembly/Discr::get_Tag() - IL_0006: ldc.i4.0 - IL_0007: ceq - IL_0009: ret + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance int32 assembly/Discr::get_Tag() + IL_0006: ldc.i4.0 + IL_0007: ceq + IL_0009: ret } - - .method public static class assembly/Discr - get_CaseB() cil managed - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, - int32) = ( 01 00 08 00 00 00 01 00 00 00 00 00 ) + + .method public static class assembly/Discr get_CaseB() cil managed + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags, + int32) = ( 01 00 08 00 00 00 01 00 00 00 00 00 ) - .maxstack 8 - IL_0000: ldsfld class assembly/Discr assembly/Discr::_unique_CaseB - IL_0005: ret + .maxstack 8 + IL_0000: ldsfld class assembly/Discr assembly/Discr::_unique_CaseB + IL_0005: ret } - - .method public hidebysig instance bool - get_IsCaseB() cil managed - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .method public hidebysig instance bool get_IsCaseB() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: call instance int32 assembly/Discr::get_Tag() - IL_0006: ldc.i4.1 - IL_0007: ceq - IL_0009: ret + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance int32 assembly/Discr::get_Tag() + IL_0006: ldc.i4.1 + IL_0007: ceq + IL_0009: ret } - - .method public hidebysig instance int32 - get_Tag() cil managed - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .method public hidebysig instance int32 get_Tag() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: ldfld int32 assembly/Discr::_tag - IL_0006: ret + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 assembly/Discr::_tag + IL_0006: ret } - - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 8 - IL_0000: ldstr "%+0.8A" - IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,string>::.ctor(string) - IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_000f: ldarg.0 - IL_0010: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0) - IL_0015: ret + .maxstack 8 + IL_0000: ldstr "%+0.8A" + IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,string>::.ctor(string) + IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_000f: ldarg.0 + IL_0010: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0) + IL_0015: ret } - - .method public strict virtual instance string - ToString() cil managed - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .method public strict virtual instance string ToString() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 8 - IL_0000: ldstr "%+A" - IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,class assembly/Discr>::.ctor(string) - IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_000f: ldarg.0 - IL_0010: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0) - IL_0015: ret + .maxstack 8 + IL_0000: ldstr "%+A" + IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5,class [FSharp.Core]Microsoft.FSharp.Core.Unit,string,string,class assembly/Discr>::.ctor(string) + IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatToString>(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_000f: ldarg.0 + IL_0010: callvirt instance !1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2::Invoke(!0) + IL_0015: ret } - - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/Discr obj) cil managed - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .method public hidebysig virtual final instance int32 CompareTo(class assembly/Discr obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 - .locals init (int32 V_0, - int32 V_1) - IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0020 - - IL_0003: ldarg.1 - IL_0004: brfalse.s IL_001e - - IL_0006: ldarg.0 - IL_0007: ldfld int32 assembly/Discr::_tag - IL_000c: stloc.0 - IL_000d: ldarg.1 - IL_000e: ldfld int32 assembly/Discr::_tag - IL_0013: stloc.1 - IL_0014: ldloc.0 - IL_0015: ldloc.1 - IL_0016: bne.un.s IL_001a - - IL_0018: ldc.i4.0 - IL_0019: ret - - IL_001a: ldloc.0 - IL_001b: ldloc.1 - IL_001c: sub - IL_001d: ret - - IL_001e: ldc.i4.1 - IL_001f: ret - - IL_0020: ldarg.1 - IL_0021: brfalse.s IL_0025 - - IL_0023: ldc.i4.m1 - IL_0024: ret - - IL_0025: ldc.i4.0 - IL_0026: ret + .maxstack 4 + .locals init (int32 V_0, + int32 V_1) + IL_0000: ldarg.0 + IL_0001: brfalse.s IL_0020 + + IL_0003: ldarg.1 + IL_0004: brfalse.s IL_001e + + IL_0006: ldarg.0 + IL_0007: ldfld int32 assembly/Discr::_tag + IL_000c: stloc.0 + IL_000d: ldarg.1 + IL_000e: ldfld int32 assembly/Discr::_tag + IL_0013: stloc.1 + IL_0014: ldloc.0 + IL_0015: ldloc.1 + IL_0016: bne.un.s IL_001a + + IL_0018: ldc.i4.0 + IL_0019: ret + + IL_001a: ldloc.0 + IL_001b: ldloc.1 + IL_001c: sub + IL_001d: ret + + IL_001e: ldc.i4.1 + IL_001f: ret + + IL_0020: ldarg.1 + IL_0021: brfalse.s IL_0025 + + IL_0023: ldc.i4.m1 + IL_0024: ret + + IL_0025: ldc.i4.0 + IL_0026: ret } - - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: ldarg.1 - IL_0002: unbox.any assembly/Discr - IL_0007: callvirt instance int32 assembly/Discr::CompareTo(class assembly/Discr) - IL_000c: ret + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any assembly/Discr + IL_0007: callvirt instance int32 assembly/Discr::CompareTo(class assembly/Discr) + IL_000c: ret } - - .method public hidebysig virtual final - instance int32 CompareTo(object obj, - class [runtime]System.Collections.IComparer comp) cil managed - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [runtime]System.Collections.IComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 - .locals init (class assembly/Discr V_0, - int32 V_1, - int32 V_2) - IL_0000: ldarg.1 - IL_0001: unbox.any assembly/Discr - IL_0006: stloc.0 - IL_0007: ldarg.0 - IL_0008: brfalse.s IL_002c - - IL_000a: ldarg.1 - IL_000b: unbox.any assembly/Discr - IL_0010: brfalse.s IL_002a - - IL_0012: ldarg.0 - IL_0013: ldfld int32 assembly/Discr::_tag - IL_0018: stloc.1 - IL_0019: ldloc.0 - IL_001a: ldfld int32 assembly/Discr::_tag - IL_001f: stloc.2 - IL_0020: ldloc.1 - IL_0021: ldloc.2 - IL_0022: bne.un.s IL_0026 - - IL_0024: ldc.i4.0 - IL_0025: ret - - IL_0026: ldloc.1 - IL_0027: ldloc.2 - IL_0028: sub - IL_0029: ret - - IL_002a: ldc.i4.1 - IL_002b: ret - - IL_002c: ldarg.1 - IL_002d: unbox.any assembly/Discr - IL_0032: brfalse.s IL_0036 - - IL_0034: ldc.i4.m1 - IL_0035: ret - - IL_0036: ldc.i4.0 - IL_0037: ret + .maxstack 4 + .locals init (class assembly/Discr V_0, + int32 V_1, + int32 V_2) + IL_0000: ldarg.1 + IL_0001: unbox.any assembly/Discr + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: brfalse.s IL_002c + + IL_000a: ldarg.1 + IL_000b: unbox.any assembly/Discr + IL_0010: brfalse.s IL_002a + + IL_0012: ldarg.0 + IL_0013: ldfld int32 assembly/Discr::_tag + IL_0018: stloc.1 + IL_0019: ldloc.0 + IL_001a: ldfld int32 assembly/Discr::_tag + IL_001f: stloc.2 + IL_0020: ldloc.1 + IL_0021: ldloc.2 + IL_0022: bne.un.s IL_0026 + + IL_0024: ldc.i4.0 + IL_0025: ret + + IL_0026: ldloc.1 + IL_0027: ldloc.2 + IL_0028: sub + IL_0029: ret + + IL_002a: ldc.i4.1 + IL_002b: ret + + IL_002c: ldarg.1 + IL_002d: unbox.any assembly/Discr + IL_0032: brfalse.s IL_0036 + + IL_0034: ldc.i4.m1 + IL_0035: ret + + IL_0036: ldc.i4.0 + IL_0037: ret } - - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 3 - .locals init (int32 V_0) - IL_0000: ldarg.0 - IL_0001: brfalse.s IL_000c - - IL_0003: ldc.i4.0 - IL_0004: stloc.0 - IL_0005: ldarg.0 - IL_0006: ldfld int32 assembly/Discr::_tag - IL_000b: ret - - IL_000c: ldc.i4.0 - IL_000d: ret + .maxstack 3 + .locals init (int32 V_0) + IL_0000: ldarg.0 + IL_0001: brfalse.s IL_000c + + IL_0003: ldc.i4.0 + IL_0004: stloc.0 + IL_0005: ldarg.0 + IL_0006: ldfld int32 assembly/Discr::_tag + IL_000b: ret + + IL_000c: ldc.i4.0 + IL_000d: ret } - - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .method public hidebysig virtual final instance int32 GetHashCode() cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() - IL_0006: callvirt instance int32 assembly/Discr::GetHashCode(class [runtime]System.Collections.IEqualityComparer) - IL_000b: ret + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call class [runtime]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: callvirt instance int32 assembly/Discr::GetHashCode(class [runtime]System.Collections.IEqualityComparer) + IL_000b: ret } - - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .method public hidebysig instance bool + Equals(class assembly/Discr obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 - .locals init (class assembly/Discr V_0, - class assembly/Discr V_1, - int32 V_2, - int32 V_3) - IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0024 - - IL_0003: ldarg.1 - IL_0004: isinst assembly/Discr - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0022 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: ldfld int32 assembly/Discr::_tag - IL_0015: stloc.2 - IL_0016: ldloc.1 - IL_0017: ldfld int32 assembly/Discr::_tag - IL_001c: stloc.3 - IL_001d: ldloc.2 - IL_001e: ldloc.3 - IL_001f: ceq - IL_0021: ret - - IL_0022: ldc.i4.0 - IL_0023: ret - - IL_0024: ldarg.1 - IL_0025: ldnull - IL_0026: cgt.un - IL_0028: ldc.i4.0 - IL_0029: ceq - IL_002b: ret + .maxstack 4 + .locals init (class assembly/Discr V_0, + int32 V_1, + int32 V_2) + IL_0000: ldarg.0 + IL_0001: brfalse.s IL_001d + + IL_0003: ldarg.1 + IL_0004: brfalse.s IL_001b + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: ldfld int32 assembly/Discr::_tag + IL_000e: stloc.1 + IL_000f: ldloc.0 + IL_0010: ldfld int32 assembly/Discr::_tag + IL_0015: stloc.2 + IL_0016: ldloc.1 + IL_0017: ldloc.2 + IL_0018: ceq + IL_001a: ret + + IL_001b: ldc.i4.0 + IL_001c: ret + + IL_001d: ldarg.1 + IL_001e: ldnull + IL_001f: cgt.un + IL_0021: ldc.i4.0 + IL_0022: ceq + IL_0024: ret } - - .method public hidebysig virtual final - instance bool Equals(class assembly/Discr obj) cil managed - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 - .locals init (int32 V_0, - int32 V_1) - IL_0000: ldarg.0 - IL_0001: brfalse.s IL_001b - - IL_0003: ldarg.1 - IL_0004: brfalse.s IL_0019 - - IL_0006: ldarg.0 - IL_0007: ldfld int32 assembly/Discr::_tag - IL_000c: stloc.0 - IL_000d: ldarg.1 - IL_000e: ldfld int32 assembly/Discr::_tag - IL_0013: stloc.1 - IL_0014: ldloc.0 - IL_0015: ldloc.1 - IL_0016: ceq - IL_0018: ret - - IL_0019: ldc.i4.0 - IL_001a: ret - - IL_001b: ldarg.1 - IL_001c: ldnull - IL_001d: cgt.un - IL_001f: ldc.i4.0 - IL_0020: ceq - IL_0022: ret + .maxstack 5 + .locals init (class assembly/Discr V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/Discr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/Discr::Equals(class assembly/Discr, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret } - - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .method public hidebysig virtual final instance bool Equals(class assembly/Discr obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 - .locals init (class assembly/Discr V_0) - IL_0000: ldarg.1 - IL_0001: isinst assembly/Discr - IL_0006: stloc.0 - IL_0007: ldloc.0 - IL_0008: brfalse.s IL_0012 - - IL_000a: ldarg.0 - IL_000b: ldloc.0 - IL_000c: callvirt instance bool assembly/Discr::Equals(class assembly/Discr) - IL_0011: ret - - IL_0012: ldc.i4.0 - IL_0013: ret + .maxstack 4 + .locals init (int32 V_0, + int32 V_1) + IL_0000: ldarg.0 + IL_0001: brfalse.s IL_001b + + IL_0003: ldarg.1 + IL_0004: brfalse.s IL_0019 + + IL_0006: ldarg.0 + IL_0007: ldfld int32 assembly/Discr::_tag + IL_000c: stloc.0 + IL_000d: ldarg.1 + IL_000e: ldfld int32 assembly/Discr::_tag + IL_0013: stloc.1 + IL_0014: ldloc.0 + IL_0015: ldloc.1 + IL_0016: ceq + IL_0018: ret + + IL_0019: ldc.i4.0 + IL_001a: ret + + IL_001b: ldarg.1 + IL_001c: ldnull + IL_001d: cgt.un + IL_001f: ldc.i4.0 + IL_0020: ceq + IL_0022: ret } - - .property instance int32 Tag() - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .get instance int32 assembly/Discr::get_Tag() + + .method public hidebysig virtual final instance bool Equals(object obj) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (class assembly/Discr V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/Discr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0012 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: callvirt instance bool assembly/Discr::Equals(class assembly/Discr) + IL_0011: ret + + IL_0012: ldc.i4.0 + IL_0013: ret + } + + .property instance int32 Tag() + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .get instance int32 assembly/Discr::get_Tag() } - .property class assembly/Discr - CaseA() - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .get class assembly/Discr assembly/Discr::get_CaseA() + .property class assembly/Discr + CaseA() + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .get class assembly/Discr assembly/Discr::get_CaseA() } - .property instance bool IsCaseA() - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .get instance bool assembly/Discr::get_IsCaseA() + .property instance bool IsCaseA() + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .get instance bool assembly/Discr::get_IsCaseA() } - .property class assembly/Discr - CaseB() - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .get class assembly/Discr assembly/Discr::get_CaseB() + .property class assembly/Discr + CaseB() + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .get class assembly/Discr assembly/Discr::get_CaseB() } - .property instance bool IsCaseB() - { - .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .get instance bool assembly/Discr::get_IsCaseB() + .property instance bool IsCaseB() + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .get instance bool assembly/Discr::get_IsCaseB() } } - - .method public static void funcE(class assembly/Discr n) cil managed - { + + .method public static void funcE(class assembly/Discr n) cil managed + { - .maxstack 8 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: call instance int32 assembly/Discr::get_Tag() - IL_0007: ldc.i4.1 - IL_0008: bne.un.s IL_000c - - IL_000a: br.s IL_0017 - - IL_000c: ldstr "A" - IL_0011: call void [runtime]System.Console::WriteLine(string) - IL_0016: ret - - IL_0017: ldstr "B" - IL_001c: call void [runtime]System.Console::WriteLine(string) - IL_0021: ret + .maxstack 8 + IL_0000: nop + IL_0001: ldarg.0 + IL_0002: call instance int32 assembly/Discr::get_Tag() + IL_0007: ldc.i4.1 + IL_0008: bne.un.s IL_000c + + IL_000a: br.s IL_0017 + + IL_000c: ldstr "A" + IL_0011: call void [runtime]System.Console::WriteLine(string) + IL_0016: ret + + IL_0017: ldstr "B" + IL_001c: call void [runtime]System.Console::WriteLine(string) + IL_0021: ret } - + } - -.class private abstract auto ansi sealed ''.$assembly - extends [runtime]System.Object -{ - .method public static void main@() cil managed - { - .entrypoint + +.class private abstract auto ansi sealed ''.$assembly + extends [runtime]System.Object +{ + .method public static void main@() cil managed + { + .entrypoint - .maxstack 8 - IL_0000: ret + .maxstack 8 + IL_0000: ret } - + } + + - - - + diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Structure/FloatsAndDoubles_1.fs.il.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Structure/FloatsAndDoubles_1.fs.il.debug.bsl index 5c36c9f6cf0..7dc6e9f4669 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Structure/FloatsAndDoubles_1.fs.il.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Structure/FloatsAndDoubles_1.fs.il.debug.bsl @@ -53,8 +53,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly float64 F@ - .method public hidebysig specialname - instance float64 get_F() cil managed + .method public hidebysig specialname instance float64 get_F() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.IsReadOnlyAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -66,8 +65,7 @@ IL_0006: ret } - .method public hidebysig virtual final - instance int32 CompareTo(valuetype floatsanddoubles/Float obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(valuetype floatsanddoubles/Float obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -129,8 +127,7 @@ IL_004b: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -210,8 +207,7 @@ IL_0050: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -239,8 +235,7 @@ IL_001e: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -251,54 +246,68 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype floatsanddoubles/Float obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype floatsanddoubles/Float& V_0, + class [runtime]System.Collections.IEqualityComparer V_1, + float64 V_2, + float64 V_3, + class [runtime]System.Collections.IEqualityComparer V_4) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldarg.2 + IL_0004: stloc.1 + IL_0005: ldarg.0 + IL_0006: ldfld float64 floatsanddoubles/Float::F@ + IL_000b: stloc.2 + IL_000c: ldloc.0 + IL_000d: ldfld float64 floatsanddoubles/Float::F@ + IL_0012: stloc.3 + IL_0013: ldloc.1 + IL_0014: stloc.s V_4 + IL_0016: ldloc.2 + IL_0017: ldloc.3 + IL_0018: ceq + IL_001a: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 + .maxstack 5 .locals init (object V_0, - valuetype floatsanddoubles/Float V_1, - valuetype floatsanddoubles/Float& V_2, - class [runtime]System.Collections.IEqualityComparer V_3, - float64 V_4, - float64 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + valuetype floatsanddoubles/Float V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst floatsanddoubles/Float IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_0033 + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any floatsanddoubles/Float IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldarg.2 - IL_0018: stloc.3 - IL_0019: ldarg.0 - IL_001a: ldfld float64 floatsanddoubles/Float::F@ - IL_001f: stloc.s V_4 - IL_0021: ldloc.2 - IL_0022: ldfld float64 floatsanddoubles/Float::F@ - IL_0027: stloc.s V_5 - IL_0029: ldloc.3 - IL_002a: stloc.s V_6 - IL_002c: ldloc.s V_4 - IL_002e: ldloc.s V_5 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool floatsanddoubles/Float::Equals(valuetype floatsanddoubles/Float, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret + + IL_001d: ldc.i4.0 + IL_001e: ret } - .method public specialname rtspecialname - instance void .ctor(float64 f) cil managed + .method public specialname rtspecialname instance void .ctor(float64 f) cil managed { .maxstack 8 @@ -308,8 +317,7 @@ IL_0007: ret } - .method public hidebysig virtual final - instance bool Equals(valuetype floatsanddoubles/Float obj) cil managed + .method public hidebysig virtual final instance bool Equals(valuetype floatsanddoubles/Float obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -354,8 +362,7 @@ IL_002e: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -400,8 +407,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly float64 D@ - .method public hidebysig specialname - instance float64 get_D() cil managed + .method public hidebysig specialname instance float64 get_D() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.IsReadOnlyAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -413,8 +419,7 @@ IL_0006: ret } - .method public hidebysig virtual final - instance int32 CompareTo(valuetype floatsanddoubles/Double obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(valuetype floatsanddoubles/Double obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -476,8 +481,7 @@ IL_004b: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -557,8 +561,7 @@ IL_0050: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -586,8 +589,7 @@ IL_001e: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -598,54 +600,68 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype floatsanddoubles/Double obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype floatsanddoubles/Double& V_0, + class [runtime]System.Collections.IEqualityComparer V_1, + float64 V_2, + float64 V_3, + class [runtime]System.Collections.IEqualityComparer V_4) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldarg.2 + IL_0004: stloc.1 + IL_0005: ldarg.0 + IL_0006: ldfld float64 floatsanddoubles/Double::D@ + IL_000b: stloc.2 + IL_000c: ldloc.0 + IL_000d: ldfld float64 floatsanddoubles/Double::D@ + IL_0012: stloc.3 + IL_0013: ldloc.1 + IL_0014: stloc.s V_4 + IL_0016: ldloc.2 + IL_0017: ldloc.3 + IL_0018: ceq + IL_001a: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 + .maxstack 5 .locals init (object V_0, - valuetype floatsanddoubles/Double V_1, - valuetype floatsanddoubles/Double& V_2, - class [runtime]System.Collections.IEqualityComparer V_3, - float64 V_4, - float64 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + valuetype floatsanddoubles/Double V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst floatsanddoubles/Double IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_0033 + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any floatsanddoubles/Double IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldarg.2 - IL_0018: stloc.3 - IL_0019: ldarg.0 - IL_001a: ldfld float64 floatsanddoubles/Double::D@ - IL_001f: stloc.s V_4 - IL_0021: ldloc.2 - IL_0022: ldfld float64 floatsanddoubles/Double::D@ - IL_0027: stloc.s V_5 - IL_0029: ldloc.3 - IL_002a: stloc.s V_6 - IL_002c: ldloc.s V_4 - IL_002e: ldloc.s V_5 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool floatsanddoubles/Double::Equals(valuetype floatsanddoubles/Double, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret + + IL_001d: ldc.i4.0 + IL_001e: ret } - .method public specialname rtspecialname - instance void .ctor(float64 d) cil managed + .method public specialname rtspecialname instance void .ctor(float64 d) cil managed { .maxstack 8 @@ -655,8 +671,7 @@ IL_0007: ret } - .method public hidebysig virtual final - instance bool Equals(valuetype floatsanddoubles/Double obj) cil managed + .method public hidebysig virtual final instance bool Equals(valuetype floatsanddoubles/Double obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -701,8 +716,7 @@ IL_002e: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -744,8 +758,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 clo5) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 clo5) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -759,8 +772,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.Unit - Invoke(float64 arg50) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.Unit Invoke(float64 arg50) cil managed { .maxstack 8 @@ -781,8 +793,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> clo4) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> clo4) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -796,8 +807,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 - Invoke(float64 arg40) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 Invoke(float64 arg40) cil managed { .maxstack 6 @@ -821,8 +831,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>> clo3) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>> clo3) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -836,8 +845,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> - Invoke(bool arg30) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> Invoke(bool arg30) cil managed { .maxstack 6 @@ -861,8 +869,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>>> clo2) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>>> clo2) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -876,8 +883,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>> - Invoke(string arg20) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>> Invoke(string arg20) cil managed { .maxstack 6 @@ -901,8 +907,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>>>> clo1) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>>>> clo1) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -916,8 +921,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>>> - Invoke(string arg10) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>>> Invoke(string arg10) cil managed { .maxstack 6 @@ -941,8 +945,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 clo5) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 clo5) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -956,8 +959,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.Unit - Invoke(float64 arg50) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.Unit Invoke(float64 arg50) cil managed { .maxstack 8 @@ -978,8 +980,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> clo4) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> clo4) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -993,8 +994,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 - Invoke(float64 arg40) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 Invoke(float64 arg40) cil managed { .maxstack 6 @@ -1018,8 +1018,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>> clo3) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>> clo3) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1033,8 +1032,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> - Invoke(bool arg30) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> Invoke(bool arg30) cil managed { .maxstack 6 @@ -1058,8 +1056,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>>> clo2) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>>> clo2) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1073,8 +1070,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>> - Invoke(string arg20) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>> Invoke(string arg20) cil managed { .maxstack 6 @@ -1098,8 +1094,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>>>> clo1) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>>>> clo1) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1113,8 +1108,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>>> - Invoke(string arg10) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>>> Invoke(string arg10) cil managed { .maxstack 6 @@ -1131,8 +1125,7 @@ } - .method public specialname static valuetype floatsanddoubles/Float[] - get_floats() cil managed + .method public specialname static valuetype floatsanddoubles/Float[] get_floats() cil managed { .maxstack 8 @@ -1140,8 +1133,7 @@ IL_0005: ret } - .method public specialname static valuetype floatsanddoubles/Double[] - get_doubles() cil managed + .method public specialname static valuetype floatsanddoubles/Double[] get_doubles() cil managed { .maxstack 8 @@ -1149,8 +1141,7 @@ IL_0005: ret } - .method public specialname static string[] - get_names() cil managed + .method public specialname static string[] get_names() cil managed { .maxstack 8 @@ -1346,8 +1337,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 6 diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Structure/FloatsAndDoubles_1.fs.il.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Structure/FloatsAndDoubles_1.fs.il.release.bsl index 811513b8dd7..a3a5a7a3f40 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Structure/FloatsAndDoubles_1.fs.il.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Structure/FloatsAndDoubles_1.fs.il.release.bsl @@ -53,8 +53,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly float64 F@ - .method public hidebysig specialname - instance float64 get_F() cil managed + .method public hidebysig specialname instance float64 get_F() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.IsReadOnlyAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -66,8 +65,7 @@ IL_0006: ret } - .method public hidebysig virtual final - instance int32 CompareTo(valuetype floatsanddoubles/Float obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(valuetype floatsanddoubles/Float obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -120,8 +118,7 @@ IL_0039: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -192,8 +189,7 @@ IL_0041: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -221,8 +217,7 @@ IL_001e: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -233,45 +228,59 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype floatsanddoubles/Float obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype floatsanddoubles/Float& V_0, + class [runtime]System.Collections.IEqualityComparer V_1) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldarg.2 + IL_0004: stloc.1 + IL_0005: ldarg.0 + IL_0006: ldfld float64 floatsanddoubles/Float::F@ + IL_000b: ldloc.0 + IL_000c: ldfld float64 floatsanddoubles/Float::F@ + IL_0011: ceq + IL_0013: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 + .maxstack 5 .locals init (object V_0, - valuetype floatsanddoubles/Float V_1, - valuetype floatsanddoubles/Float& V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + valuetype floatsanddoubles/Float V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst floatsanddoubles/Float IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_0028 + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any floatsanddoubles/Float IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldarg.2 - IL_0018: stloc.3 - IL_0019: ldarg.0 - IL_001a: ldfld float64 floatsanddoubles/Float::F@ - IL_001f: ldloc.2 - IL_0020: ldfld float64 floatsanddoubles/Float::F@ - IL_0025: ceq - IL_0027: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool floatsanddoubles/Float::Equals(valuetype floatsanddoubles/Float, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret - IL_0028: ldc.i4.0 - IL_0029: ret + IL_001d: ldc.i4.0 + IL_001e: ret } - .method public specialname rtspecialname - instance void .ctor(float64 f) cil managed + .method public specialname rtspecialname instance void .ctor(float64 f) cil managed { .maxstack 8 @@ -281,8 +290,7 @@ IL_0007: ret } - .method public hidebysig virtual final - instance bool Equals(valuetype floatsanddoubles/Float obj) cil managed + .method public hidebysig virtual final instance bool Equals(valuetype floatsanddoubles/Float obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -321,8 +329,7 @@ IL_0026: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -367,8 +374,7 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 03 00 00 00 00 00 ) .field assembly float64 D@ - .method public hidebysig specialname - instance float64 get_D() cil managed + .method public hidebysig specialname instance float64 get_D() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.IsReadOnlyAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -380,8 +386,7 @@ IL_0006: ret } - .method public hidebysig virtual final - instance int32 CompareTo(valuetype floatsanddoubles/Double obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(valuetype floatsanddoubles/Double obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -434,8 +439,7 @@ IL_0039: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -506,8 +510,7 @@ IL_0041: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -535,8 +538,7 @@ IL_001e: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -547,45 +549,59 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype floatsanddoubles/Double obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype floatsanddoubles/Double& V_0, + class [runtime]System.Collections.IEqualityComparer V_1) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldarg.2 + IL_0004: stloc.1 + IL_0005: ldarg.0 + IL_0006: ldfld float64 floatsanddoubles/Double::D@ + IL_000b: ldloc.0 + IL_000c: ldfld float64 floatsanddoubles/Double::D@ + IL_0011: ceq + IL_0013: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 + .maxstack 5 .locals init (object V_0, - valuetype floatsanddoubles/Double V_1, - valuetype floatsanddoubles/Double& V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + valuetype floatsanddoubles/Double V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst floatsanddoubles/Double IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_0028 + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any floatsanddoubles/Double IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldarg.2 - IL_0018: stloc.3 - IL_0019: ldarg.0 - IL_001a: ldfld float64 floatsanddoubles/Double::D@ - IL_001f: ldloc.2 - IL_0020: ldfld float64 floatsanddoubles/Double::D@ - IL_0025: ceq - IL_0027: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool floatsanddoubles/Double::Equals(valuetype floatsanddoubles/Double, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret - IL_0028: ldc.i4.0 - IL_0029: ret + IL_001d: ldc.i4.0 + IL_001e: ret } - .method public specialname rtspecialname - instance void .ctor(float64 d) cil managed + .method public specialname rtspecialname instance void .ctor(float64 d) cil managed { .maxstack 8 @@ -595,8 +611,7 @@ IL_0007: ret } - .method public hidebysig virtual final - instance bool Equals(valuetype floatsanddoubles/Double obj) cil managed + .method public hidebysig virtual final instance bool Equals(valuetype floatsanddoubles/Double obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -635,8 +650,7 @@ IL_0026: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -678,8 +692,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 clo5) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 clo5) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -693,8 +706,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.Unit - Invoke(float64 arg50) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.Unit Invoke(float64 arg50) cil managed { .maxstack 8 @@ -715,8 +727,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> clo4) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> clo4) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -730,8 +741,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 - Invoke(float64 arg40) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 Invoke(float64 arg40) cil managed { .maxstack 6 @@ -755,8 +765,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>> clo3) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>> clo3) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -770,8 +779,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> - Invoke(bool arg30) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> Invoke(bool arg30) cil managed { .maxstack 6 @@ -795,8 +803,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>>> clo2) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>>> clo2) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -810,8 +817,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>> - Invoke(string arg20) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>> Invoke(string arg20) cil managed { .maxstack 6 @@ -835,8 +841,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>>>> clo1) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>>>> clo1) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -850,8 +855,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>>> - Invoke(string arg10) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>>> Invoke(string arg10) cil managed { .maxstack 6 @@ -875,8 +879,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 clo5) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 clo5) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -890,8 +893,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.Unit - Invoke(float64 arg50) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.Unit Invoke(float64 arg50) cil managed { .maxstack 8 @@ -912,8 +914,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> clo4) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> clo4) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -927,8 +928,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 - Invoke(float64 arg40) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 Invoke(float64 arg40) cil managed { .maxstack 6 @@ -952,8 +952,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>> clo3) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>> clo3) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -967,8 +966,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> - Invoke(bool arg30) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> Invoke(bool arg30) cil managed { .maxstack 6 @@ -992,8 +990,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>>> clo2) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>>> clo2) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1007,8 +1004,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>> - Invoke(string arg20) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>> Invoke(string arg20) cil managed { .maxstack 6 @@ -1032,8 +1028,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>>>> clo1) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>>>> clo1) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1047,8 +1042,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>>> - Invoke(string arg10) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>>> Invoke(string arg10) cil managed { .maxstack 6 @@ -1065,8 +1059,7 @@ } - .method public specialname static valuetype floatsanddoubles/Float[] - get_floats() cil managed + .method public specialname static valuetype floatsanddoubles/Float[] get_floats() cil managed { .maxstack 8 @@ -1074,8 +1067,7 @@ IL_0005: ret } - .method public specialname static valuetype floatsanddoubles/Double[] - get_doubles() cil managed + .method public specialname static valuetype floatsanddoubles/Double[] get_doubles() cil managed { .maxstack 8 @@ -1083,8 +1075,7 @@ IL_0005: ret } - .method public specialname static string[] - get_names() cil managed + .method public specialname static string[] get_names() cil managed { .maxstack 8 @@ -1280,8 +1271,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method private specialname rtspecialname static - void .cctor() cil managed + .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 6 diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Structure/FloatsAndDoubles_2.fs.il.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Structure/FloatsAndDoubles_2.fs.il.debug.bsl index eaa9b097b91..406289eb99c 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Structure/FloatsAndDoubles_2.fs.il.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Structure/FloatsAndDoubles_2.fs.il.debug.bsl @@ -246,50 +246,65 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype floatsanddoubles/Float obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype floatsanddoubles/Float& V_0, + class [runtime]System.Collections.IEqualityComparer V_1, + float64 V_2, + float64 V_3, + class [runtime]System.Collections.IEqualityComparer V_4) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldarg.2 + IL_0004: stloc.1 + IL_0005: ldarg.0 + IL_0006: ldfld float64 floatsanddoubles/Float::F@ + IL_000b: stloc.2 + IL_000c: ldloc.0 + IL_000d: ldfld float64 floatsanddoubles/Float::F@ + IL_0012: stloc.3 + IL_0013: ldloc.1 + IL_0014: stloc.s V_4 + IL_0016: ldloc.2 + IL_0017: ldloc.3 + IL_0018: ceq + IL_001a: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 + .maxstack 5 .locals init (object V_0, - valuetype floatsanddoubles/Float V_1, - valuetype floatsanddoubles/Float& V_2, - class [runtime]System.Collections.IEqualityComparer V_3, - float64 V_4, - float64 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + valuetype floatsanddoubles/Float V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst floatsanddoubles/Float IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_0033 + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any floatsanddoubles/Float IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldarg.2 - IL_0018: stloc.3 - IL_0019: ldarg.0 - IL_001a: ldfld float64 floatsanddoubles/Float::F@ - IL_001f: stloc.s V_4 - IL_0021: ldloc.2 - IL_0022: ldfld float64 floatsanddoubles/Float::F@ - IL_0027: stloc.s V_5 - IL_0029: ldloc.3 - IL_002a: stloc.s V_6 - IL_002c: ldloc.s V_4 - IL_002e: ldloc.s V_5 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool floatsanddoubles/Float::Equals(valuetype floatsanddoubles/Float, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret + + IL_001d: ldc.i4.0 + IL_001e: ret } .method public specialname rtspecialname instance void .ctor(float64 f) cil managed @@ -585,50 +600,65 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype floatsanddoubles/Double obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype floatsanddoubles/Double& V_0, + class [runtime]System.Collections.IEqualityComparer V_1, + float64 V_2, + float64 V_3, + class [runtime]System.Collections.IEqualityComparer V_4) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldarg.2 + IL_0004: stloc.1 + IL_0005: ldarg.0 + IL_0006: ldfld float64 floatsanddoubles/Double::D@ + IL_000b: stloc.2 + IL_000c: ldloc.0 + IL_000d: ldfld float64 floatsanddoubles/Double::D@ + IL_0012: stloc.3 + IL_0013: ldloc.1 + IL_0014: stloc.s V_4 + IL_0016: ldloc.2 + IL_0017: ldloc.3 + IL_0018: ceq + IL_001a: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 + .maxstack 5 .locals init (object V_0, - valuetype floatsanddoubles/Double V_1, - valuetype floatsanddoubles/Double& V_2, - class [runtime]System.Collections.IEqualityComparer V_3, - float64 V_4, - float64 V_5, - class [runtime]System.Collections.IEqualityComparer V_6) + valuetype floatsanddoubles/Double V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst floatsanddoubles/Double IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_0033 + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any floatsanddoubles/Double IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldarg.2 - IL_0018: stloc.3 - IL_0019: ldarg.0 - IL_001a: ldfld float64 floatsanddoubles/Double::D@ - IL_001f: stloc.s V_4 - IL_0021: ldloc.2 - IL_0022: ldfld float64 floatsanddoubles/Double::D@ - IL_0027: stloc.s V_5 - IL_0029: ldloc.3 - IL_002a: stloc.s V_6 - IL_002c: ldloc.s V_4 - IL_002e: ldloc.s V_5 - IL_0030: ceq - IL_0032: ret - - IL_0033: ldc.i4.0 - IL_0034: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool floatsanddoubles/Double::Equals(valuetype floatsanddoubles/Double, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret + + IL_001d: ldc.i4.0 + IL_001e: ret } .method public specialname rtspecialname instance void .ctor(float64 d) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Structure/FloatsAndDoubles_2.fs.il.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Structure/FloatsAndDoubles_2.fs.il.release.bsl index 5f275dd75c6..cf1a77a5d39 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/Structure/FloatsAndDoubles_2.fs.il.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/Structure/FloatsAndDoubles_2.fs.il.release.bsl @@ -228,41 +228,56 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype floatsanddoubles/Float obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype floatsanddoubles/Float& V_0, + class [runtime]System.Collections.IEqualityComparer V_1) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldarg.2 + IL_0004: stloc.1 + IL_0005: ldarg.0 + IL_0006: ldfld float64 floatsanddoubles/Float::F@ + IL_000b: ldloc.0 + IL_000c: ldfld float64 floatsanddoubles/Float::F@ + IL_0011: ceq + IL_0013: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 + .maxstack 5 .locals init (object V_0, - valuetype floatsanddoubles/Float V_1, - valuetype floatsanddoubles/Float& V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + valuetype floatsanddoubles/Float V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst floatsanddoubles/Float IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_0028 + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any floatsanddoubles/Float IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldarg.2 - IL_0018: stloc.3 - IL_0019: ldarg.0 - IL_001a: ldfld float64 floatsanddoubles/Float::F@ - IL_001f: ldloc.2 - IL_0020: ldfld float64 floatsanddoubles/Float::F@ - IL_0025: ceq - IL_0027: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool floatsanddoubles/Float::Equals(valuetype floatsanddoubles/Float, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret - IL_0028: ldc.i4.0 - IL_0029: ret + IL_001d: ldc.i4.0 + IL_001e: ret } .method public specialname rtspecialname instance void .ctor(float64 f) cil managed @@ -534,41 +549,56 @@ IL_000b: ret } + .method public hidebysig instance bool + Equals(valuetype floatsanddoubles/Double obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 4 + .locals init (valuetype floatsanddoubles/Double& V_0, + class [runtime]System.Collections.IEqualityComparer V_1) + IL_0000: ldarga.s obj + IL_0002: stloc.0 + IL_0003: ldarg.2 + IL_0004: stloc.1 + IL_0005: ldarg.0 + IL_0006: ldfld float64 floatsanddoubles/Double::D@ + IL_000b: ldloc.0 + IL_000c: ldfld float64 floatsanddoubles/Double::D@ + IL_0011: ceq + IL_0013: ret + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .maxstack 4 + .maxstack 5 .locals init (object V_0, - valuetype floatsanddoubles/Double V_1, - valuetype floatsanddoubles/Double& V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + valuetype floatsanddoubles/Double V_1) IL_0000: ldarg.1 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: isinst floatsanddoubles/Double IL_0008: ldnull IL_0009: cgt.un - IL_000b: brfalse.s IL_0028 + IL_000b: brfalse.s IL_001d IL_000d: ldarg.1 IL_000e: unbox.any floatsanddoubles/Double IL_0013: stloc.1 - IL_0014: ldloca.s V_1 - IL_0016: stloc.2 - IL_0017: ldarg.2 - IL_0018: stloc.3 - IL_0019: ldarg.0 - IL_001a: ldfld float64 floatsanddoubles/Double::D@ - IL_001f: ldloc.2 - IL_0020: ldfld float64 floatsanddoubles/Double::D@ - IL_0025: ceq - IL_0027: ret + IL_0014: ldarg.0 + IL_0015: ldloc.1 + IL_0016: ldarg.2 + IL_0017: call instance bool floatsanddoubles/Double::Equals(valuetype floatsanddoubles/Double, + class [runtime]System.Collections.IEqualityComparer) + IL_001c: ret - IL_0028: ldc.i4.0 - IL_0029: ret + IL_001d: ldc.i4.0 + IL_001e: ret } .method public specialname rtspecialname instance void .ctor(float64 d) cil managed diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction16.fs.il.net472.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction16.fs.il.net472.debug.bsl index 28180aeb580..ccd51773d86 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction16.fs.il.net472.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction16.fs.il.net472.debug.bsl @@ -99,8 +99,7 @@ IL_0014: ret } - .method public hidebysig instance int32 - get_Item1() cil managed + .method public hidebysig instance int32 get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -111,8 +110,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Item2() cil managed + .method public hidebysig instance int32 get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -123,8 +121,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -136,8 +133,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -151,8 +147,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -165,8 +160,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/U obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/U obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -270,8 +264,7 @@ IL_0083: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -395,8 +388,7 @@ IL_008b: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -465,8 +457,7 @@ IL_004a: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -477,9 +468,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/U obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -487,78 +478,98 @@ .locals init (class assembly/U V_0, class assembly/U V_1, class assembly/U V_2, - class assembly/U V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, + class [runtime]System.Collections.IEqualityComparer V_6, class [runtime]System.Collections.IEqualityComparer V_7, - class [runtime]System.Collections.IEqualityComparer V_8, + int32 V_8, int32 V_9, - int32 V_10, - class [runtime]System.Collections.IEqualityComparer V_11) + class [runtime]System.Collections.IEqualityComparer V_10) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0056 + IL_0001: brfalse.s IL_004d IL_0003: ldarg.1 - IL_0004: isinst assembly/U - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0054 + IL_0004: brfalse.s IL_004b - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 assembly/U::item1 IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 assembly/U::item1 IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 assembly/U::item1 - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: brfalse.s IL_0052 - - IL_0034: ldarg.2 - IL_0035: stloc.s V_8 - IL_0037: ldloc.2 - IL_0038: ldfld int32 assembly/U::item2 - IL_003d: stloc.s V_9 - IL_003f: ldloc.3 - IL_0040: ldfld int32 assembly/U::item2 - IL_0045: stloc.s V_10 - IL_0047: ldloc.s V_8 - IL_0049: stloc.s V_11 - IL_004b: ldloc.s V_9 - IL_004d: ldloc.s V_10 - IL_004f: ceq - IL_0051: ret - - IL_0052: ldc.i4.0 - IL_0053: ret - - IL_0054: ldc.i4.0 - IL_0055: ret - - IL_0056: ldarg.1 - IL_0057: ldnull - IL_0058: cgt.un - IL_005a: ldc.i4.0 - IL_005b: ceq - IL_005d: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: brfalse.s IL_0049 + + IL_002b: ldarg.2 + IL_002c: stloc.s V_7 + IL_002e: ldloc.1 + IL_002f: ldfld int32 assembly/U::item2 + IL_0034: stloc.s V_8 + IL_0036: ldloc.2 + IL_0037: ldfld int32 assembly/U::item2 + IL_003c: stloc.s V_9 + IL_003e: ldloc.s V_7 + IL_0040: stloc.s V_10 + IL_0042: ldloc.s V_8 + IL_0044: ldloc.s V_9 + IL_0046: ceq + IL_0048: ret + + IL_0049: ldc.i4.0 + IL_004a: ret + + IL_004b: ldc.i4.0 + IL_004c: ret + + IL_004d: ldarg.1 + IL_004e: ldnull + IL_004f: cgt.un + IL_0051: ldc.i4.0 + IL_0052: ceq + IL_0054: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/U obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/U V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/U + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/U::Equals(class assembly/U, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/U obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -604,8 +615,7 @@ IL_0034: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -653,8 +663,7 @@ } } - .method public static class [runtime]System.Tuple`2 - assembly(int32 inp) cil managed + .method public static class [runtime]System.Tuple`2 assembly(int32 inp) cil managed { .maxstack 4 @@ -740,8 +749,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -752,8 +760,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction16.fs.il.net472.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction16.fs.il.net472.release.bsl index 72cd3147c78..2146b8d8ad8 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction16.fs.il.net472.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction16.fs.il.net472.release.bsl @@ -99,8 +99,7 @@ IL_0014: ret } - .method public hidebysig instance int32 - get_Item1() cil managed + .method public hidebysig instance int32 get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -111,8 +110,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Item2() cil managed + .method public hidebysig instance int32 get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -123,8 +121,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -136,8 +133,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -151,8 +147,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -165,8 +160,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/U obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/U obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -252,8 +246,7 @@ IL_0069: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -359,8 +352,7 @@ IL_0073: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -417,8 +409,7 @@ IL_003c: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -429,9 +420,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/U obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -439,60 +430,80 @@ .locals init (class assembly/U V_0, class assembly/U V_1, class assembly/U V_2, - class assembly/U V_3, - class [runtime]System.Collections.IEqualityComparer V_4, - class [runtime]System.Collections.IEqualityComparer V_5) + class [runtime]System.Collections.IEqualityComparer V_3, + class [runtime]System.Collections.IEqualityComparer V_4) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003e + IL_0001: brfalse.s IL_0036 IL_0003: ldarg.1 - IL_0004: isinst assembly/U - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_003c + IL_0004: brfalse.s IL_0034 - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 assembly/U::item1 - IL_001e: ldloc.3 - IL_001f: ldfld int32 assembly/U::item1 - IL_0024: ceq - IL_0026: brfalse.s IL_003a - - IL_0028: ldarg.2 - IL_0029: stloc.s V_5 - IL_002b: ldloc.2 - IL_002c: ldfld int32 assembly/U::item2 - IL_0031: ldloc.3 - IL_0032: ldfld int32 assembly/U::item2 - IL_0037: ceq - IL_0039: ret + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 assembly/U::item1 + IL_0016: ldloc.2 + IL_0017: ldfld int32 assembly/U::item1 + IL_001c: ceq + IL_001e: brfalse.s IL_0032 + + IL_0020: ldarg.2 + IL_0021: stloc.s V_4 + IL_0023: ldloc.1 + IL_0024: ldfld int32 assembly/U::item2 + IL_0029: ldloc.2 + IL_002a: ldfld int32 assembly/U::item2 + IL_002f: ceq + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldc.i4.0 + IL_0035: ret + IL_0036: ldarg.1 + IL_0037: ldnull + IL_0038: cgt.un IL_003a: ldc.i4.0 - IL_003b: ret - - IL_003c: ldc.i4.0 + IL_003b: ceq IL_003d: ret - - IL_003e: ldarg.1 - IL_003f: ldnull - IL_0040: cgt.un - IL_0042: ldc.i4.0 - IL_0043: ceq - IL_0045: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/U obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/U V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/U + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/U::Equals(class assembly/U, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/U obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -538,8 +549,7 @@ IL_0034: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -587,8 +597,7 @@ } } - .method public static class [runtime]System.Tuple`2 - assembly(int32 inp) cil managed + .method public static class [runtime]System.Tuple`2 assembly(int32 inp) cil managed { .maxstack 4 @@ -674,8 +683,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -686,8 +694,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction16.fs.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction16.fs.il.netcore.debug.bsl index 8d26e3cad58..480d54bced1 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction16.fs.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction16.fs.il.netcore.debug.bsl @@ -99,8 +99,7 @@ IL_0014: ret } - .method public hidebysig instance int32 - get_Item1() cil managed + .method public hidebysig instance int32 get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -111,8 +110,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Item2() cil managed + .method public hidebysig instance int32 get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -123,8 +121,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -136,8 +133,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -151,8 +147,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -165,8 +160,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/U obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/U obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -270,8 +264,7 @@ IL_0083: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -395,8 +388,7 @@ IL_008b: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -465,8 +457,7 @@ IL_004a: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -477,9 +468,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/U obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -487,78 +478,98 @@ .locals init (class assembly/U V_0, class assembly/U V_1, class assembly/U V_2, - class assembly/U V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, + class [runtime]System.Collections.IEqualityComparer V_6, class [runtime]System.Collections.IEqualityComparer V_7, - class [runtime]System.Collections.IEqualityComparer V_8, + int32 V_8, int32 V_9, - int32 V_10, - class [runtime]System.Collections.IEqualityComparer V_11) + class [runtime]System.Collections.IEqualityComparer V_10) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0056 + IL_0001: brfalse.s IL_004d IL_0003: ldarg.1 - IL_0004: isinst assembly/U - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0054 + IL_0004: brfalse.s IL_004b - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 assembly/U::item1 IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 assembly/U::item1 IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 assembly/U::item1 - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: brfalse.s IL_0052 - - IL_0034: ldarg.2 - IL_0035: stloc.s V_8 - IL_0037: ldloc.2 - IL_0038: ldfld int32 assembly/U::item2 - IL_003d: stloc.s V_9 - IL_003f: ldloc.3 - IL_0040: ldfld int32 assembly/U::item2 - IL_0045: stloc.s V_10 - IL_0047: ldloc.s V_8 - IL_0049: stloc.s V_11 - IL_004b: ldloc.s V_9 - IL_004d: ldloc.s V_10 - IL_004f: ceq - IL_0051: ret - - IL_0052: ldc.i4.0 - IL_0053: ret - - IL_0054: ldc.i4.0 - IL_0055: ret - - IL_0056: ldarg.1 - IL_0057: ldnull - IL_0058: cgt.un - IL_005a: ldc.i4.0 - IL_005b: ceq - IL_005d: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: brfalse.s IL_0049 + + IL_002b: ldarg.2 + IL_002c: stloc.s V_7 + IL_002e: ldloc.1 + IL_002f: ldfld int32 assembly/U::item2 + IL_0034: stloc.s V_8 + IL_0036: ldloc.2 + IL_0037: ldfld int32 assembly/U::item2 + IL_003c: stloc.s V_9 + IL_003e: ldloc.s V_7 + IL_0040: stloc.s V_10 + IL_0042: ldloc.s V_8 + IL_0044: ldloc.s V_9 + IL_0046: ceq + IL_0048: ret + + IL_0049: ldc.i4.0 + IL_004a: ret + + IL_004b: ldc.i4.0 + IL_004c: ret + + IL_004d: ldarg.1 + IL_004e: ldnull + IL_004f: cgt.un + IL_0051: ldc.i4.0 + IL_0052: ceq + IL_0054: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/U obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/U V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/U + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/U::Equals(class assembly/U, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/U obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -604,8 +615,7 @@ IL_0034: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -653,8 +663,7 @@ } } - .method public static class [runtime]System.Tuple`2 - assembly(int32 inp) cil managed + .method public static class [runtime]System.Tuple`2 assembly(int32 inp) cil managed { .maxstack 4 diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction16.fs.il.netcore.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction16.fs.il.netcore.release.bsl index be4114c0727..d23ae91a650 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction16.fs.il.netcore.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction16.fs.il.netcore.release.bsl @@ -99,8 +99,7 @@ IL_0014: ret } - .method public hidebysig instance int32 - get_Item1() cil managed + .method public hidebysig instance int32 get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -111,8 +110,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Item2() cil managed + .method public hidebysig instance int32 get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -123,8 +121,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -136,8 +133,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -151,8 +147,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -165,8 +160,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/U obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/U obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -252,8 +246,7 @@ IL_0069: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -359,8 +352,7 @@ IL_0073: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -417,8 +409,7 @@ IL_003c: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -429,9 +420,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/U obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -439,60 +430,80 @@ .locals init (class assembly/U V_0, class assembly/U V_1, class assembly/U V_2, - class assembly/U V_3, - class [runtime]System.Collections.IEqualityComparer V_4, - class [runtime]System.Collections.IEqualityComparer V_5) + class [runtime]System.Collections.IEqualityComparer V_3, + class [runtime]System.Collections.IEqualityComparer V_4) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003e + IL_0001: brfalse.s IL_0036 IL_0003: ldarg.1 - IL_0004: isinst assembly/U - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_003c + IL_0004: brfalse.s IL_0034 - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 assembly/U::item1 - IL_001e: ldloc.3 - IL_001f: ldfld int32 assembly/U::item1 - IL_0024: ceq - IL_0026: brfalse.s IL_003a - - IL_0028: ldarg.2 - IL_0029: stloc.s V_5 - IL_002b: ldloc.2 - IL_002c: ldfld int32 assembly/U::item2 - IL_0031: ldloc.3 - IL_0032: ldfld int32 assembly/U::item2 - IL_0037: ceq - IL_0039: ret + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 assembly/U::item1 + IL_0016: ldloc.2 + IL_0017: ldfld int32 assembly/U::item1 + IL_001c: ceq + IL_001e: brfalse.s IL_0032 + + IL_0020: ldarg.2 + IL_0021: stloc.s V_4 + IL_0023: ldloc.1 + IL_0024: ldfld int32 assembly/U::item2 + IL_0029: ldloc.2 + IL_002a: ldfld int32 assembly/U::item2 + IL_002f: ceq + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldc.i4.0 + IL_0035: ret + IL_0036: ldarg.1 + IL_0037: ldnull + IL_0038: cgt.un IL_003a: ldc.i4.0 - IL_003b: ret - - IL_003c: ldc.i4.0 + IL_003b: ceq IL_003d: ret - - IL_003e: ldarg.1 - IL_003f: ldnull - IL_0040: cgt.un - IL_0042: ldc.i4.0 - IL_0043: ceq - IL_0045: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/U obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/U V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/U + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/U::Equals(class assembly/U, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/U obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -538,8 +549,7 @@ IL_0034: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -587,8 +597,7 @@ } } - .method public static class [runtime]System.Tuple`2 - assembly(int32 inp) cil managed + .method public static class [runtime]System.Tuple`2 assembly(int32 inp) cil managed { .maxstack 4 diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction17.fs.il.net472.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction17.fs.il.net472.debug.bsl index efde6cf0180..3b81f926bc9 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction17.fs.il.net472.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction17.fs.il.net472.debug.bsl @@ -58,8 +58,7 @@ .field assembly int32 y@ .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .method public hidebysig specialname - instance int32 get_x() cil managed + .method public hidebysig specialname instance int32 get_x() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -70,8 +69,7 @@ IL_0006: ret } - .method public hidebysig specialname - instance int32 get_y() cil managed + .method public hidebysig specialname instance int32 get_y() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -102,8 +100,7 @@ IL_0014: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -116,8 +113,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/R obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/R obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -213,8 +209,7 @@ IL_0076: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -333,8 +328,7 @@ IL_0085: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -396,8 +390,7 @@ IL_0043: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -408,80 +401,100 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/R obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/R V_0, - class assembly/R V_1, - class [runtime]System.Collections.IEqualityComparer V_2, + class [runtime]System.Collections.IEqualityComparer V_1, + int32 V_2, int32 V_3, - int32 V_4, + class [runtime]System.Collections.IEqualityComparer V_4, class [runtime]System.Collections.IEqualityComparer V_5, - class [runtime]System.Collections.IEqualityComparer V_6, + int32 V_6, int32 V_7, - int32 V_8, - class [runtime]System.Collections.IEqualityComparer V_9) + class [runtime]System.Collections.IEqualityComparer V_8) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_004c + IL_0001: brfalse.s IL_0043 IL_0003: ldarg.1 - IL_0004: isinst assembly/R - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_004a - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.2 + IL_0004: brfalse.s IL_0041 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.2 + IL_0009: stloc.1 + IL_000a: ldarg.0 + IL_000b: ldfld int32 assembly/R::x@ IL_0010: stloc.2 - IL_0011: ldarg.0 + IL_0011: ldloc.0 IL_0012: ldfld int32 assembly/R::x@ IL_0017: stloc.3 IL_0018: ldloc.1 - IL_0019: ldfld int32 assembly/R::x@ - IL_001e: stloc.s V_4 - IL_0020: ldloc.2 - IL_0021: stloc.s V_5 - IL_0023: ldloc.3 - IL_0024: ldloc.s V_4 - IL_0026: ceq - IL_0028: brfalse.s IL_0048 - - IL_002a: ldarg.2 - IL_002b: stloc.s V_6 - IL_002d: ldarg.0 - IL_002e: ldfld int32 assembly/R::y@ - IL_0033: stloc.s V_7 - IL_0035: ldloc.1 - IL_0036: ldfld int32 assembly/R::y@ - IL_003b: stloc.s V_8 - IL_003d: ldloc.s V_6 - IL_003f: stloc.s V_9 - IL_0041: ldloc.s V_7 - IL_0043: ldloc.s V_8 - IL_0045: ceq - IL_0047: ret - - IL_0048: ldc.i4.0 - IL_0049: ret - - IL_004a: ldc.i4.0 - IL_004b: ret - - IL_004c: ldarg.1 - IL_004d: ldnull - IL_004e: cgt.un - IL_0050: ldc.i4.0 - IL_0051: ceq - IL_0053: ret + IL_0019: stloc.s V_4 + IL_001b: ldloc.2 + IL_001c: ldloc.3 + IL_001d: ceq + IL_001f: brfalse.s IL_003f + + IL_0021: ldarg.2 + IL_0022: stloc.s V_5 + IL_0024: ldarg.0 + IL_0025: ldfld int32 assembly/R::y@ + IL_002a: stloc.s V_6 + IL_002c: ldloc.0 + IL_002d: ldfld int32 assembly/R::y@ + IL_0032: stloc.s V_7 + IL_0034: ldloc.s V_5 + IL_0036: stloc.s V_8 + IL_0038: ldloc.s V_6 + IL_003a: ldloc.s V_7 + IL_003c: ceq + IL_003e: ret + + IL_003f: ldc.i4.0 + IL_0040: ret + + IL_0041: ldc.i4.0 + IL_0042: ret + + IL_0043: ldarg.1 + IL_0044: ldnull + IL_0045: cgt.un + IL_0047: ldc.i4.0 + IL_0048: ceq + IL_004a: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/R obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/R V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/R + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/R::Equals(class assembly/R, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/R obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -519,8 +532,7 @@ IL_002e: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -555,8 +567,7 @@ } } - .method public static class [runtime]System.Tuple`2 - assembly(int32 inp) cil managed + .method public static class [runtime]System.Tuple`2 assembly(int32 inp) cil managed { .maxstack 4 @@ -642,8 +653,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -654,8 +664,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction17.fs.il.net472.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction17.fs.il.net472.release.bsl index fe647c1c17b..de4b4ee9fc1 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction17.fs.il.net472.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction17.fs.il.net472.release.bsl @@ -58,8 +58,7 @@ .field assembly int32 y@ .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .method public hidebysig specialname - instance int32 get_x() cil managed + .method public hidebysig specialname instance int32 get_x() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -70,8 +69,7 @@ IL_0006: ret } - .method public hidebysig specialname - instance int32 get_y() cil managed + .method public hidebysig specialname instance int32 get_y() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -102,8 +100,7 @@ IL_0014: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -116,8 +113,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/R obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/R obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -195,8 +191,7 @@ IL_005d: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -297,8 +292,7 @@ IL_006e: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -348,8 +342,7 @@ IL_0036: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -360,62 +353,82 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/R obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/R V_0, - class assembly/R V_1, - class [runtime]System.Collections.IEqualityComparer V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + class [runtime]System.Collections.IEqualityComparer V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0036 + IL_0001: brfalse.s IL_002f IL_0003: ldarg.1 - IL_0004: isinst assembly/R - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0034 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.2 - IL_0010: stloc.2 - IL_0011: ldarg.0 - IL_0012: ldfld int32 assembly/R::x@ - IL_0017: ldloc.1 - IL_0018: ldfld int32 assembly/R::x@ - IL_001d: ceq - IL_001f: brfalse.s IL_0032 - - IL_0021: ldarg.2 - IL_0022: stloc.3 - IL_0023: ldarg.0 - IL_0024: ldfld int32 assembly/R::y@ - IL_0029: ldloc.1 - IL_002a: ldfld int32 assembly/R::y@ - IL_002f: ceq - IL_0031: ret - - IL_0032: ldc.i4.0 - IL_0033: ret - - IL_0034: ldc.i4.0 - IL_0035: ret - - IL_0036: ldarg.1 - IL_0037: ldnull - IL_0038: cgt.un - IL_003a: ldc.i4.0 - IL_003b: ceq - IL_003d: ret + IL_0004: brfalse.s IL_002d + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.2 + IL_0009: stloc.1 + IL_000a: ldarg.0 + IL_000b: ldfld int32 assembly/R::x@ + IL_0010: ldloc.0 + IL_0011: ldfld int32 assembly/R::x@ + IL_0016: ceq + IL_0018: brfalse.s IL_002b + + IL_001a: ldarg.2 + IL_001b: stloc.2 + IL_001c: ldarg.0 + IL_001d: ldfld int32 assembly/R::y@ + IL_0022: ldloc.0 + IL_0023: ldfld int32 assembly/R::y@ + IL_0028: ceq + IL_002a: ret + + IL_002b: ldc.i4.0 + IL_002c: ret + + IL_002d: ldc.i4.0 + IL_002e: ret + + IL_002f: ldarg.1 + IL_0030: ldnull + IL_0031: cgt.un + IL_0033: ldc.i4.0 + IL_0034: ceq + IL_0036: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/R obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/R V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/R + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/R::Equals(class assembly/R, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/R obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -453,8 +466,7 @@ IL_002e: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -489,8 +501,7 @@ } } - .method public static class [runtime]System.Tuple`2 - assembly(int32 inp) cil managed + .method public static class [runtime]System.Tuple`2 assembly(int32 inp) cil managed { .maxstack 4 @@ -576,8 +587,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -588,8 +598,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction17.fs.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction17.fs.il.netcore.debug.bsl index 9d2e9c744cf..17656ef061f 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction17.fs.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction17.fs.il.netcore.debug.bsl @@ -58,8 +58,7 @@ .field assembly int32 y@ .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .method public hidebysig specialname - instance int32 get_x() cil managed + .method public hidebysig specialname instance int32 get_x() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -70,8 +69,7 @@ IL_0006: ret } - .method public hidebysig specialname - instance int32 get_y() cil managed + .method public hidebysig specialname instance int32 get_y() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -102,8 +100,7 @@ IL_0014: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -116,8 +113,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/R obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/R obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -213,8 +209,7 @@ IL_0076: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -333,8 +328,7 @@ IL_0085: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -396,8 +390,7 @@ IL_0043: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -408,80 +401,100 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/R obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/R V_0, - class assembly/R V_1, - class [runtime]System.Collections.IEqualityComparer V_2, + class [runtime]System.Collections.IEqualityComparer V_1, + int32 V_2, int32 V_3, - int32 V_4, + class [runtime]System.Collections.IEqualityComparer V_4, class [runtime]System.Collections.IEqualityComparer V_5, - class [runtime]System.Collections.IEqualityComparer V_6, + int32 V_6, int32 V_7, - int32 V_8, - class [runtime]System.Collections.IEqualityComparer V_9) + class [runtime]System.Collections.IEqualityComparer V_8) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_004c + IL_0001: brfalse.s IL_0043 IL_0003: ldarg.1 - IL_0004: isinst assembly/R - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_004a - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.2 + IL_0004: brfalse.s IL_0041 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.2 + IL_0009: stloc.1 + IL_000a: ldarg.0 + IL_000b: ldfld int32 assembly/R::x@ IL_0010: stloc.2 - IL_0011: ldarg.0 + IL_0011: ldloc.0 IL_0012: ldfld int32 assembly/R::x@ IL_0017: stloc.3 IL_0018: ldloc.1 - IL_0019: ldfld int32 assembly/R::x@ - IL_001e: stloc.s V_4 - IL_0020: ldloc.2 - IL_0021: stloc.s V_5 - IL_0023: ldloc.3 - IL_0024: ldloc.s V_4 - IL_0026: ceq - IL_0028: brfalse.s IL_0048 - - IL_002a: ldarg.2 - IL_002b: stloc.s V_6 - IL_002d: ldarg.0 - IL_002e: ldfld int32 assembly/R::y@ - IL_0033: stloc.s V_7 - IL_0035: ldloc.1 - IL_0036: ldfld int32 assembly/R::y@ - IL_003b: stloc.s V_8 - IL_003d: ldloc.s V_6 - IL_003f: stloc.s V_9 - IL_0041: ldloc.s V_7 - IL_0043: ldloc.s V_8 - IL_0045: ceq - IL_0047: ret - - IL_0048: ldc.i4.0 - IL_0049: ret - - IL_004a: ldc.i4.0 - IL_004b: ret - - IL_004c: ldarg.1 - IL_004d: ldnull - IL_004e: cgt.un - IL_0050: ldc.i4.0 - IL_0051: ceq - IL_0053: ret + IL_0019: stloc.s V_4 + IL_001b: ldloc.2 + IL_001c: ldloc.3 + IL_001d: ceq + IL_001f: brfalse.s IL_003f + + IL_0021: ldarg.2 + IL_0022: stloc.s V_5 + IL_0024: ldarg.0 + IL_0025: ldfld int32 assembly/R::y@ + IL_002a: stloc.s V_6 + IL_002c: ldloc.0 + IL_002d: ldfld int32 assembly/R::y@ + IL_0032: stloc.s V_7 + IL_0034: ldloc.s V_5 + IL_0036: stloc.s V_8 + IL_0038: ldloc.s V_6 + IL_003a: ldloc.s V_7 + IL_003c: ceq + IL_003e: ret + + IL_003f: ldc.i4.0 + IL_0040: ret + + IL_0041: ldc.i4.0 + IL_0042: ret + + IL_0043: ldarg.1 + IL_0044: ldnull + IL_0045: cgt.un + IL_0047: ldc.i4.0 + IL_0048: ceq + IL_004a: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/R obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/R V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/R + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/R::Equals(class assembly/R, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/R obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -519,8 +532,7 @@ IL_002e: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -555,8 +567,7 @@ } } - .method public static class [runtime]System.Tuple`2 - assembly(int32 inp) cil managed + .method public static class [runtime]System.Tuple`2 assembly(int32 inp) cil managed { .maxstack 4 diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction17.fs.il.netcore.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction17.fs.il.netcore.release.bsl index 374ac9d2bbf..00ac158dd15 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction17.fs.il.netcore.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction17.fs.il.netcore.release.bsl @@ -58,8 +58,7 @@ .field assembly int32 y@ .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .method public hidebysig specialname - instance int32 get_x() cil managed + .method public hidebysig specialname instance int32 get_x() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -70,8 +69,7 @@ IL_0006: ret } - .method public hidebysig specialname - instance int32 get_y() cil managed + .method public hidebysig specialname instance int32 get_y() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -102,8 +100,7 @@ IL_0014: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -116,8 +113,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/R obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/R obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -195,8 +191,7 @@ IL_005d: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -297,8 +292,7 @@ IL_006e: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -348,8 +342,7 @@ IL_0036: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -360,62 +353,82 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/R obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/R V_0, - class assembly/R V_1, - class [runtime]System.Collections.IEqualityComparer V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + class [runtime]System.Collections.IEqualityComparer V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0036 + IL_0001: brfalse.s IL_002f IL_0003: ldarg.1 - IL_0004: isinst assembly/R - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0034 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.2 - IL_0010: stloc.2 - IL_0011: ldarg.0 - IL_0012: ldfld int32 assembly/R::x@ - IL_0017: ldloc.1 - IL_0018: ldfld int32 assembly/R::x@ - IL_001d: ceq - IL_001f: brfalse.s IL_0032 - - IL_0021: ldarg.2 - IL_0022: stloc.3 - IL_0023: ldarg.0 - IL_0024: ldfld int32 assembly/R::y@ - IL_0029: ldloc.1 - IL_002a: ldfld int32 assembly/R::y@ - IL_002f: ceq - IL_0031: ret - - IL_0032: ldc.i4.0 - IL_0033: ret - - IL_0034: ldc.i4.0 - IL_0035: ret - - IL_0036: ldarg.1 - IL_0037: ldnull - IL_0038: cgt.un - IL_003a: ldc.i4.0 - IL_003b: ceq - IL_003d: ret + IL_0004: brfalse.s IL_002d + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.2 + IL_0009: stloc.1 + IL_000a: ldarg.0 + IL_000b: ldfld int32 assembly/R::x@ + IL_0010: ldloc.0 + IL_0011: ldfld int32 assembly/R::x@ + IL_0016: ceq + IL_0018: brfalse.s IL_002b + + IL_001a: ldarg.2 + IL_001b: stloc.2 + IL_001c: ldarg.0 + IL_001d: ldfld int32 assembly/R::y@ + IL_0022: ldloc.0 + IL_0023: ldfld int32 assembly/R::y@ + IL_0028: ceq + IL_002a: ret + + IL_002b: ldc.i4.0 + IL_002c: ret + + IL_002d: ldc.i4.0 + IL_002e: ret + + IL_002f: ldarg.1 + IL_0030: ldnull + IL_0031: cgt.un + IL_0033: ldc.i4.0 + IL_0034: ceq + IL_0036: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/R obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/R V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/R + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/R::Equals(class assembly/R, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/R obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -453,8 +466,7 @@ IL_002e: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -489,8 +501,7 @@ } } - .method public static class [runtime]System.Tuple`2 - assembly(int32 inp) cil managed + .method public static class [runtime]System.Tuple`2 assembly(int32 inp) cil managed { .maxstack 4 diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction21.fs.il.net472.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction21.fs.il.net472.debug.bsl index 313c00ec0fe..af28cbe94ec 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction21.fs.il.net472.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction21.fs.il.net472.debug.bsl @@ -99,8 +99,7 @@ IL_0014: ret } - .method public hidebysig instance int32 - get_Item1() cil managed + .method public hidebysig instance int32 get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -111,8 +110,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Item2() cil managed + .method public hidebysig instance int32 get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -123,8 +121,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -136,8 +133,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -151,8 +147,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -165,8 +160,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/U obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/U obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -270,8 +264,7 @@ IL_0083: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -395,8 +388,7 @@ IL_008b: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -465,8 +457,7 @@ IL_004a: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -477,9 +468,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/U obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -487,78 +478,98 @@ .locals init (class assembly/U V_0, class assembly/U V_1, class assembly/U V_2, - class assembly/U V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, + class [runtime]System.Collections.IEqualityComparer V_6, class [runtime]System.Collections.IEqualityComparer V_7, - class [runtime]System.Collections.IEqualityComparer V_8, + int32 V_8, int32 V_9, - int32 V_10, - class [runtime]System.Collections.IEqualityComparer V_11) + class [runtime]System.Collections.IEqualityComparer V_10) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0056 + IL_0001: brfalse.s IL_004d IL_0003: ldarg.1 - IL_0004: isinst assembly/U - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0054 + IL_0004: brfalse.s IL_004b - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 assembly/U::item1 IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 assembly/U::item1 IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 assembly/U::item1 - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: brfalse.s IL_0052 - - IL_0034: ldarg.2 - IL_0035: stloc.s V_8 - IL_0037: ldloc.2 - IL_0038: ldfld int32 assembly/U::item2 - IL_003d: stloc.s V_9 - IL_003f: ldloc.3 - IL_0040: ldfld int32 assembly/U::item2 - IL_0045: stloc.s V_10 - IL_0047: ldloc.s V_8 - IL_0049: stloc.s V_11 - IL_004b: ldloc.s V_9 - IL_004d: ldloc.s V_10 - IL_004f: ceq - IL_0051: ret - - IL_0052: ldc.i4.0 - IL_0053: ret - - IL_0054: ldc.i4.0 - IL_0055: ret - - IL_0056: ldarg.1 - IL_0057: ldnull - IL_0058: cgt.un - IL_005a: ldc.i4.0 - IL_005b: ceq - IL_005d: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: brfalse.s IL_0049 + + IL_002b: ldarg.2 + IL_002c: stloc.s V_7 + IL_002e: ldloc.1 + IL_002f: ldfld int32 assembly/U::item2 + IL_0034: stloc.s V_8 + IL_0036: ldloc.2 + IL_0037: ldfld int32 assembly/U::item2 + IL_003c: stloc.s V_9 + IL_003e: ldloc.s V_7 + IL_0040: stloc.s V_10 + IL_0042: ldloc.s V_8 + IL_0044: ldloc.s V_9 + IL_0046: ceq + IL_0048: ret + + IL_0049: ldc.i4.0 + IL_004a: ret + + IL_004b: ldc.i4.0 + IL_004c: ret + + IL_004d: ldarg.1 + IL_004e: ldnull + IL_004f: cgt.un + IL_0051: ldc.i4.0 + IL_0052: ceq + IL_0054: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/U obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/U V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/U + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/U::Equals(class assembly/U, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/U obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -604,8 +615,7 @@ IL_0034: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -660,8 +670,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 clo2) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 clo2) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -675,8 +684,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.Unit - Invoke(int32 arg20) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.Unit Invoke(int32 arg20) cil managed { .maxstack 8 @@ -697,8 +705,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> clo1) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> clo1) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -712,8 +719,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 - Invoke(int32 arg10) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 Invoke(int32 arg10) cil managed { .maxstack 6 @@ -830,8 +836,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -842,8 +847,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction21.fs.il.net472.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction21.fs.il.net472.release.bsl index a47ad1aa6d4..f771fa470cc 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction21.fs.il.net472.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction21.fs.il.net472.release.bsl @@ -99,8 +99,7 @@ IL_0014: ret } - .method public hidebysig instance int32 - get_Item1() cil managed + .method public hidebysig instance int32 get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -111,8 +110,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Item2() cil managed + .method public hidebysig instance int32 get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -123,8 +121,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -136,8 +133,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -151,8 +147,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -165,8 +160,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/U obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/U obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -252,8 +246,7 @@ IL_0069: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -359,8 +352,7 @@ IL_0073: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -417,8 +409,7 @@ IL_003c: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -429,9 +420,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/U obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -439,60 +430,80 @@ .locals init (class assembly/U V_0, class assembly/U V_1, class assembly/U V_2, - class assembly/U V_3, - class [runtime]System.Collections.IEqualityComparer V_4, - class [runtime]System.Collections.IEqualityComparer V_5) + class [runtime]System.Collections.IEqualityComparer V_3, + class [runtime]System.Collections.IEqualityComparer V_4) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003e + IL_0001: brfalse.s IL_0036 IL_0003: ldarg.1 - IL_0004: isinst assembly/U - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_003c + IL_0004: brfalse.s IL_0034 - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 assembly/U::item1 - IL_001e: ldloc.3 - IL_001f: ldfld int32 assembly/U::item1 - IL_0024: ceq - IL_0026: brfalse.s IL_003a - - IL_0028: ldarg.2 - IL_0029: stloc.s V_5 - IL_002b: ldloc.2 - IL_002c: ldfld int32 assembly/U::item2 - IL_0031: ldloc.3 - IL_0032: ldfld int32 assembly/U::item2 - IL_0037: ceq - IL_0039: ret + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 assembly/U::item1 + IL_0016: ldloc.2 + IL_0017: ldfld int32 assembly/U::item1 + IL_001c: ceq + IL_001e: brfalse.s IL_0032 + + IL_0020: ldarg.2 + IL_0021: stloc.s V_4 + IL_0023: ldloc.1 + IL_0024: ldfld int32 assembly/U::item2 + IL_0029: ldloc.2 + IL_002a: ldfld int32 assembly/U::item2 + IL_002f: ceq + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldc.i4.0 + IL_0035: ret + IL_0036: ldarg.1 + IL_0037: ldnull + IL_0038: cgt.un IL_003a: ldc.i4.0 - IL_003b: ret - - IL_003c: ldc.i4.0 + IL_003b: ceq IL_003d: ret - - IL_003e: ldarg.1 - IL_003f: ldnull - IL_0040: cgt.un - IL_0042: ldc.i4.0 - IL_0043: ceq - IL_0045: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/U obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/U V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/U + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/U::Equals(class assembly/U, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/U obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -538,8 +549,7 @@ IL_0034: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -594,8 +604,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 clo2) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 clo2) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -609,8 +618,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.Unit - Invoke(int32 arg20) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.Unit Invoke(int32 arg20) cil managed { .maxstack 8 @@ -631,8 +639,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> clo1) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> clo1) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -646,8 +653,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 - Invoke(int32 arg10) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 Invoke(int32 arg10) cil managed { .maxstack 6 @@ -764,8 +770,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -776,8 +781,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction21.fs.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction21.fs.il.netcore.debug.bsl index 769910c85ed..0a5363e368a 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction21.fs.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction21.fs.il.netcore.debug.bsl @@ -99,8 +99,7 @@ IL_0014: ret } - .method public hidebysig instance int32 - get_Item1() cil managed + .method public hidebysig instance int32 get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -111,8 +110,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Item2() cil managed + .method public hidebysig instance int32 get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -123,8 +121,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -136,8 +133,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -151,8 +147,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -165,8 +160,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/U obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/U obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -270,8 +264,7 @@ IL_0083: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -395,8 +388,7 @@ IL_008b: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -465,8 +457,7 @@ IL_004a: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -477,9 +468,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/U obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -487,78 +478,98 @@ .locals init (class assembly/U V_0, class assembly/U V_1, class assembly/U V_2, - class assembly/U V_3, - class [runtime]System.Collections.IEqualityComparer V_4, + class [runtime]System.Collections.IEqualityComparer V_3, + int32 V_4, int32 V_5, - int32 V_6, + class [runtime]System.Collections.IEqualityComparer V_6, class [runtime]System.Collections.IEqualityComparer V_7, - class [runtime]System.Collections.IEqualityComparer V_8, + int32 V_8, int32 V_9, - int32 V_10, - class [runtime]System.Collections.IEqualityComparer V_11) + class [runtime]System.Collections.IEqualityComparer V_10) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0056 + IL_0001: brfalse.s IL_004d IL_0003: ldarg.1 - IL_0004: isinst assembly/U - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0054 + IL_0004: brfalse.s IL_004b - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 assembly/U::item1 IL_0016: stloc.s V_4 IL_0018: ldloc.2 IL_0019: ldfld int32 assembly/U::item1 IL_001e: stloc.s V_5 IL_0020: ldloc.3 - IL_0021: ldfld int32 assembly/U::item1 - IL_0026: stloc.s V_6 - IL_0028: ldloc.s V_4 - IL_002a: stloc.s V_7 - IL_002c: ldloc.s V_5 - IL_002e: ldloc.s V_6 - IL_0030: ceq - IL_0032: brfalse.s IL_0052 - - IL_0034: ldarg.2 - IL_0035: stloc.s V_8 - IL_0037: ldloc.2 - IL_0038: ldfld int32 assembly/U::item2 - IL_003d: stloc.s V_9 - IL_003f: ldloc.3 - IL_0040: ldfld int32 assembly/U::item2 - IL_0045: stloc.s V_10 - IL_0047: ldloc.s V_8 - IL_0049: stloc.s V_11 - IL_004b: ldloc.s V_9 - IL_004d: ldloc.s V_10 - IL_004f: ceq - IL_0051: ret - - IL_0052: ldc.i4.0 - IL_0053: ret - - IL_0054: ldc.i4.0 - IL_0055: ret - - IL_0056: ldarg.1 - IL_0057: ldnull - IL_0058: cgt.un - IL_005a: ldc.i4.0 - IL_005b: ceq - IL_005d: ret + IL_0021: stloc.s V_6 + IL_0023: ldloc.s V_4 + IL_0025: ldloc.s V_5 + IL_0027: ceq + IL_0029: brfalse.s IL_0049 + + IL_002b: ldarg.2 + IL_002c: stloc.s V_7 + IL_002e: ldloc.1 + IL_002f: ldfld int32 assembly/U::item2 + IL_0034: stloc.s V_8 + IL_0036: ldloc.2 + IL_0037: ldfld int32 assembly/U::item2 + IL_003c: stloc.s V_9 + IL_003e: ldloc.s V_7 + IL_0040: stloc.s V_10 + IL_0042: ldloc.s V_8 + IL_0044: ldloc.s V_9 + IL_0046: ceq + IL_0048: ret + + IL_0049: ldc.i4.0 + IL_004a: ret + + IL_004b: ldc.i4.0 + IL_004c: ret + + IL_004d: ldarg.1 + IL_004e: ldnull + IL_004f: cgt.un + IL_0051: ldc.i4.0 + IL_0052: ceq + IL_0054: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/U obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/U V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/U + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/U::Equals(class assembly/U, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/U obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -604,8 +615,7 @@ IL_0034: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -660,8 +670,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 clo2) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 clo2) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -675,8 +684,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.Unit - Invoke(int32 arg20) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.Unit Invoke(int32 arg20) cil managed { .maxstack 8 @@ -697,8 +705,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> clo1) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> clo1) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -712,8 +719,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 - Invoke(int32 arg10) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 Invoke(int32 arg10) cil managed { .maxstack 6 diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction21.fs.il.netcore.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction21.fs.il.netcore.release.bsl index 27980d42bcd..2dd7ced02b5 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction21.fs.il.netcore.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction21.fs.il.netcore.release.bsl @@ -99,8 +99,7 @@ IL_0014: ret } - .method public hidebysig instance int32 - get_Item1() cil managed + .method public hidebysig instance int32 get_Item1() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -111,8 +110,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Item2() cil managed + .method public hidebysig instance int32 get_Item2() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -123,8 +121,7 @@ IL_0006: ret } - .method public hidebysig instance int32 - get_Tag() cil managed + .method public hidebysig instance int32 get_Tag() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -136,8 +133,7 @@ IL_0003: ret } - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed + .method assembly hidebysig specialname instance object __DebugDisplay() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -151,8 +147,7 @@ IL_0015: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -165,8 +160,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/U obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/U obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -252,8 +246,7 @@ IL_0069: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -359,8 +352,7 @@ IL_0073: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -417,8 +409,7 @@ IL_003c: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -429,9 +420,9 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/U obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -439,60 +430,80 @@ .locals init (class assembly/U V_0, class assembly/U V_1, class assembly/U V_2, - class assembly/U V_3, - class [runtime]System.Collections.IEqualityComparer V_4, - class [runtime]System.Collections.IEqualityComparer V_5) + class [runtime]System.Collections.IEqualityComparer V_3, + class [runtime]System.Collections.IEqualityComparer V_4) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_003e + IL_0001: brfalse.s IL_0036 IL_0003: ldarg.1 - IL_0004: isinst assembly/U - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_003c + IL_0004: brfalse.s IL_0034 - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: pop - IL_0011: ldarg.0 - IL_0012: stloc.2 - IL_0013: ldloc.1 - IL_0014: stloc.3 - IL_0015: ldarg.2 - IL_0016: stloc.s V_4 - IL_0018: ldloc.2 - IL_0019: ldfld int32 assembly/U::item1 - IL_001e: ldloc.3 - IL_001f: ldfld int32 assembly/U::item1 - IL_0024: ceq - IL_0026: brfalse.s IL_003a - - IL_0028: ldarg.2 - IL_0029: stloc.s V_5 - IL_002b: ldloc.2 - IL_002c: ldfld int32 assembly/U::item2 - IL_0031: ldloc.3 - IL_0032: ldfld int32 assembly/U::item2 - IL_0037: ceq - IL_0039: ret + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldloc.0 + IL_000d: stloc.2 + IL_000e: ldarg.2 + IL_000f: stloc.3 + IL_0010: ldloc.1 + IL_0011: ldfld int32 assembly/U::item1 + IL_0016: ldloc.2 + IL_0017: ldfld int32 assembly/U::item1 + IL_001c: ceq + IL_001e: brfalse.s IL_0032 + + IL_0020: ldarg.2 + IL_0021: stloc.s V_4 + IL_0023: ldloc.1 + IL_0024: ldfld int32 assembly/U::item2 + IL_0029: ldloc.2 + IL_002a: ldfld int32 assembly/U::item2 + IL_002f: ceq + IL_0031: ret + + IL_0032: ldc.i4.0 + IL_0033: ret + + IL_0034: ldc.i4.0 + IL_0035: ret + IL_0036: ldarg.1 + IL_0037: ldnull + IL_0038: cgt.un IL_003a: ldc.i4.0 - IL_003b: ret - - IL_003c: ldc.i4.0 + IL_003b: ceq IL_003d: ret - - IL_003e: ldarg.1 - IL_003f: ldnull - IL_0040: cgt.un - IL_0042: ldc.i4.0 - IL_0043: ceq - IL_0045: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/U obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/U V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/U + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/U::Equals(class assembly/U, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/U obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -538,8 +549,7 @@ IL_0034: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -594,8 +604,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 clo2) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 clo2) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -609,8 +618,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.Unit - Invoke(int32 arg20) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.Unit Invoke(int32 arg20) cil managed { .maxstack 8 @@ -631,8 +639,7 @@ .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method assembly specialname rtspecialname - instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> clo1) cil managed + .method assembly specialname rtspecialname instance void .ctor(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2> clo1) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -646,8 +653,7 @@ IL_000d: ret } - .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 - Invoke(int32 arg10) cil managed + .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2 Invoke(int32 arg10) cil managed { .maxstack 6 diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.il.net472.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.il.net472.debug.bsl index 46593f26f26..dd2dbdc0d1c 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.il.net472.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.il.net472.debug.bsl @@ -58,8 +58,7 @@ .field public int32 y@ .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .method public hidebysig specialname - instance int32 get_x() cil managed + .method public hidebysig specialname instance int32 get_x() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -70,8 +69,7 @@ IL_0006: ret } - .method public hidebysig specialname - instance int32 get_y() cil managed + .method public hidebysig specialname instance int32 get_y() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -82,8 +80,7 @@ IL_0006: ret } - .method public hidebysig specialname - instance void set_x(int32 'value') cil managed + .method public hidebysig specialname instance void set_x(int32 'value') cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -95,8 +92,7 @@ IL_0007: ret } - .method public hidebysig specialname - instance void set_y(int32 'value') cil managed + .method public hidebysig specialname instance void set_y(int32 'value') cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -128,8 +124,7 @@ IL_0014: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -142,8 +137,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/Point obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/Point obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -239,8 +233,7 @@ IL_0076: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -359,8 +352,7 @@ IL_0085: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -422,8 +414,7 @@ IL_0043: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -434,80 +425,100 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/Point obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/Point V_0, - class assembly/Point V_1, - class [runtime]System.Collections.IEqualityComparer V_2, + class [runtime]System.Collections.IEqualityComparer V_1, + int32 V_2, int32 V_3, - int32 V_4, + class [runtime]System.Collections.IEqualityComparer V_4, class [runtime]System.Collections.IEqualityComparer V_5, - class [runtime]System.Collections.IEqualityComparer V_6, + int32 V_6, int32 V_7, - int32 V_8, - class [runtime]System.Collections.IEqualityComparer V_9) + class [runtime]System.Collections.IEqualityComparer V_8) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_004c + IL_0001: brfalse.s IL_0043 IL_0003: ldarg.1 - IL_0004: isinst assembly/Point - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_004a - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.2 + IL_0004: brfalse.s IL_0041 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.2 + IL_0009: stloc.1 + IL_000a: ldarg.0 + IL_000b: ldfld int32 assembly/Point::x@ IL_0010: stloc.2 - IL_0011: ldarg.0 + IL_0011: ldloc.0 IL_0012: ldfld int32 assembly/Point::x@ IL_0017: stloc.3 IL_0018: ldloc.1 - IL_0019: ldfld int32 assembly/Point::x@ - IL_001e: stloc.s V_4 - IL_0020: ldloc.2 - IL_0021: stloc.s V_5 - IL_0023: ldloc.3 - IL_0024: ldloc.s V_4 - IL_0026: ceq - IL_0028: brfalse.s IL_0048 - - IL_002a: ldarg.2 - IL_002b: stloc.s V_6 - IL_002d: ldarg.0 - IL_002e: ldfld int32 assembly/Point::y@ - IL_0033: stloc.s V_7 - IL_0035: ldloc.1 - IL_0036: ldfld int32 assembly/Point::y@ - IL_003b: stloc.s V_8 - IL_003d: ldloc.s V_6 - IL_003f: stloc.s V_9 - IL_0041: ldloc.s V_7 - IL_0043: ldloc.s V_8 - IL_0045: ceq - IL_0047: ret - - IL_0048: ldc.i4.0 - IL_0049: ret - - IL_004a: ldc.i4.0 - IL_004b: ret - - IL_004c: ldarg.1 - IL_004d: ldnull - IL_004e: cgt.un - IL_0050: ldc.i4.0 - IL_0051: ceq - IL_0053: ret + IL_0019: stloc.s V_4 + IL_001b: ldloc.2 + IL_001c: ldloc.3 + IL_001d: ceq + IL_001f: brfalse.s IL_003f + + IL_0021: ldarg.2 + IL_0022: stloc.s V_5 + IL_0024: ldarg.0 + IL_0025: ldfld int32 assembly/Point::y@ + IL_002a: stloc.s V_6 + IL_002c: ldloc.0 + IL_002d: ldfld int32 assembly/Point::y@ + IL_0032: stloc.s V_7 + IL_0034: ldloc.s V_5 + IL_0036: stloc.s V_8 + IL_0038: ldloc.s V_6 + IL_003a: ldloc.s V_7 + IL_003c: ceq + IL_003e: ret + + IL_003f: ldc.i4.0 + IL_0040: ret + + IL_0041: ldc.i4.0 + IL_0042: ret + + IL_0043: ldarg.1 + IL_0044: ldnull + IL_0045: cgt.un + IL_0047: ldc.i4.0 + IL_0048: ceq + IL_004a: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/Point obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/Point V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/Point + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/Point::Equals(class assembly/Point, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/Point obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -545,8 +556,7 @@ IL_002e: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -854,8 +864,7 @@ IL_00b1: ret } - .method public static class [runtime]System.Tuple`2 - pinString() cil managed + .method public static class [runtime]System.Tuple`2 pinString() cil managed { .maxstack 6 @@ -991,8 +1000,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -1003,8 +1011,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.il.net472.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.il.net472.release.bsl index 91bf013b138..26e89ee1cb4 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.il.net472.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.il.net472.release.bsl @@ -58,8 +58,7 @@ .field public int32 y@ .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .method public hidebysig specialname - instance int32 get_x() cil managed + .method public hidebysig specialname instance int32 get_x() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -70,8 +69,7 @@ IL_0006: ret } - .method public hidebysig specialname - instance int32 get_y() cil managed + .method public hidebysig specialname instance int32 get_y() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -82,8 +80,7 @@ IL_0006: ret } - .method public hidebysig specialname - instance void set_x(int32 'value') cil managed + .method public hidebysig specialname instance void set_x(int32 'value') cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -95,8 +92,7 @@ IL_0007: ret } - .method public hidebysig specialname - instance void set_y(int32 'value') cil managed + .method public hidebysig specialname instance void set_y(int32 'value') cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -128,8 +124,7 @@ IL_0014: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -142,8 +137,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/Point obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/Point obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -221,8 +215,7 @@ IL_005d: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -323,8 +316,7 @@ IL_006e: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -374,8 +366,7 @@ IL_0036: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -386,62 +377,82 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/Point obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/Point V_0, - class assembly/Point V_1, - class [runtime]System.Collections.IEqualityComparer V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + class [runtime]System.Collections.IEqualityComparer V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0036 + IL_0001: brfalse.s IL_002f IL_0003: ldarg.1 - IL_0004: isinst assembly/Point - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0034 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.2 - IL_0010: stloc.2 - IL_0011: ldarg.0 - IL_0012: ldfld int32 assembly/Point::x@ - IL_0017: ldloc.1 - IL_0018: ldfld int32 assembly/Point::x@ - IL_001d: ceq - IL_001f: brfalse.s IL_0032 - - IL_0021: ldarg.2 - IL_0022: stloc.3 - IL_0023: ldarg.0 - IL_0024: ldfld int32 assembly/Point::y@ - IL_0029: ldloc.1 - IL_002a: ldfld int32 assembly/Point::y@ - IL_002f: ceq - IL_0031: ret - - IL_0032: ldc.i4.0 - IL_0033: ret - - IL_0034: ldc.i4.0 - IL_0035: ret - - IL_0036: ldarg.1 - IL_0037: ldnull - IL_0038: cgt.un - IL_003a: ldc.i4.0 - IL_003b: ceq - IL_003d: ret + IL_0004: brfalse.s IL_002d + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.2 + IL_0009: stloc.1 + IL_000a: ldarg.0 + IL_000b: ldfld int32 assembly/Point::x@ + IL_0010: ldloc.0 + IL_0011: ldfld int32 assembly/Point::x@ + IL_0016: ceq + IL_0018: brfalse.s IL_002b + + IL_001a: ldarg.2 + IL_001b: stloc.2 + IL_001c: ldarg.0 + IL_001d: ldfld int32 assembly/Point::y@ + IL_0022: ldloc.0 + IL_0023: ldfld int32 assembly/Point::y@ + IL_0028: ceq + IL_002a: ret + + IL_002b: ldc.i4.0 + IL_002c: ret + + IL_002d: ldc.i4.0 + IL_002e: ret + + IL_002f: ldarg.1 + IL_0030: ldnull + IL_0031: cgt.un + IL_0033: ldc.i4.0 + IL_0034: ceq + IL_0036: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/Point obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/Point V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/Point + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/Point::Equals(class assembly/Point, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/Point obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -479,8 +490,7 @@ IL_002e: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -752,8 +762,7 @@ IL_00a1: ret } - .method public static class [runtime]System.Tuple`2 - pinString() cil managed + .method public static class [runtime]System.Tuple`2 pinString() cil managed { .maxstack 6 @@ -877,8 +886,7 @@ IL_0014: ret } - .method public hidebysig specialname instance class [runtime]System.Type - get_Type() cil managed + .method public hidebysig specialname instance class [runtime]System.Type get_Type() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -889,8 +897,7 @@ IL_0006: ret } - .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes - get_MemberType() cil managed + .method public hidebysig specialname instance valuetype System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes get_MemberType() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.il.netcore.debug.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.il.netcore.debug.bsl index 0d1379d849b..9ac0210240f 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.il.netcore.debug.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.il.netcore.debug.bsl @@ -58,8 +58,7 @@ .field public int32 y@ .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .method public hidebysig specialname - instance int32 get_x() cil managed + .method public hidebysig specialname instance int32 get_x() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -70,8 +69,7 @@ IL_0006: ret } - .method public hidebysig specialname - instance int32 get_y() cil managed + .method public hidebysig specialname instance int32 get_y() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -82,8 +80,7 @@ IL_0006: ret } - .method public hidebysig specialname - instance void set_x(int32 'value') cil managed + .method public hidebysig specialname instance void set_x(int32 'value') cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -95,8 +92,7 @@ IL_0007: ret } - .method public hidebysig specialname - instance void set_y(int32 'value') cil managed + .method public hidebysig specialname instance void set_y(int32 'value') cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -128,8 +124,7 @@ IL_0014: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -142,8 +137,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/Point obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/Point obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -239,8 +233,7 @@ IL_0076: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -359,8 +352,7 @@ IL_0085: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -422,8 +414,7 @@ IL_0043: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -434,80 +425,100 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/Point obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/Point V_0, - class assembly/Point V_1, - class [runtime]System.Collections.IEqualityComparer V_2, + class [runtime]System.Collections.IEqualityComparer V_1, + int32 V_2, int32 V_3, - int32 V_4, + class [runtime]System.Collections.IEqualityComparer V_4, class [runtime]System.Collections.IEqualityComparer V_5, - class [runtime]System.Collections.IEqualityComparer V_6, + int32 V_6, int32 V_7, - int32 V_8, - class [runtime]System.Collections.IEqualityComparer V_9) + class [runtime]System.Collections.IEqualityComparer V_8) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_004c + IL_0001: brfalse.s IL_0043 IL_0003: ldarg.1 - IL_0004: isinst assembly/Point - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_004a - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.2 + IL_0004: brfalse.s IL_0041 + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.2 + IL_0009: stloc.1 + IL_000a: ldarg.0 + IL_000b: ldfld int32 assembly/Point::x@ IL_0010: stloc.2 - IL_0011: ldarg.0 + IL_0011: ldloc.0 IL_0012: ldfld int32 assembly/Point::x@ IL_0017: stloc.3 IL_0018: ldloc.1 - IL_0019: ldfld int32 assembly/Point::x@ - IL_001e: stloc.s V_4 - IL_0020: ldloc.2 - IL_0021: stloc.s V_5 - IL_0023: ldloc.3 - IL_0024: ldloc.s V_4 - IL_0026: ceq - IL_0028: brfalse.s IL_0048 - - IL_002a: ldarg.2 - IL_002b: stloc.s V_6 - IL_002d: ldarg.0 - IL_002e: ldfld int32 assembly/Point::y@ - IL_0033: stloc.s V_7 - IL_0035: ldloc.1 - IL_0036: ldfld int32 assembly/Point::y@ - IL_003b: stloc.s V_8 - IL_003d: ldloc.s V_6 - IL_003f: stloc.s V_9 - IL_0041: ldloc.s V_7 - IL_0043: ldloc.s V_8 - IL_0045: ceq - IL_0047: ret - - IL_0048: ldc.i4.0 - IL_0049: ret - - IL_004a: ldc.i4.0 - IL_004b: ret - - IL_004c: ldarg.1 - IL_004d: ldnull - IL_004e: cgt.un - IL_0050: ldc.i4.0 - IL_0051: ceq - IL_0053: ret + IL_0019: stloc.s V_4 + IL_001b: ldloc.2 + IL_001c: ldloc.3 + IL_001d: ceq + IL_001f: brfalse.s IL_003f + + IL_0021: ldarg.2 + IL_0022: stloc.s V_5 + IL_0024: ldarg.0 + IL_0025: ldfld int32 assembly/Point::y@ + IL_002a: stloc.s V_6 + IL_002c: ldloc.0 + IL_002d: ldfld int32 assembly/Point::y@ + IL_0032: stloc.s V_7 + IL_0034: ldloc.s V_5 + IL_0036: stloc.s V_8 + IL_0038: ldloc.s V_6 + IL_003a: ldloc.s V_7 + IL_003c: ceq + IL_003e: ret + + IL_003f: ldc.i4.0 + IL_0040: ret + + IL_0041: ldc.i4.0 + IL_0042: ret + + IL_0043: ldarg.1 + IL_0044: ldnull + IL_0045: cgt.un + IL_0047: ldc.i4.0 + IL_0048: ceq + IL_004a: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/Point obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/Point V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/Point + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/Point::Equals(class assembly/Point, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/Point obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -545,8 +556,7 @@ IL_002e: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -854,8 +864,7 @@ IL_00b1: ret } - .method public static class [runtime]System.Tuple`2 - pinString() cil managed + .method public static class [runtime]System.Tuple`2 pinString() cil managed { .maxstack 6 diff --git a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.il.netcore.release.bsl b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.il.netcore.release.bsl index b020e9a3266..b4fe4bf6b35 100644 --- a/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.il.netcore.release.bsl +++ b/tests/FSharp.Compiler.ComponentTests/EmittedIL/TestFunctions/TestFunction24.fs.il.netcore.release.bsl @@ -58,8 +58,7 @@ .field public int32 y@ .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [runtime]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .method public hidebysig specialname - instance int32 get_x() cil managed + .method public hidebysig specialname instance int32 get_x() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -70,8 +69,7 @@ IL_0006: ret } - .method public hidebysig specialname - instance int32 get_y() cil managed + .method public hidebysig specialname instance int32 get_y() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -82,8 +80,7 @@ IL_0006: ret } - .method public hidebysig specialname - instance void set_x(int32 'value') cil managed + .method public hidebysig specialname instance void set_x(int32 'value') cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -95,8 +92,7 @@ IL_0007: ret } - .method public hidebysig specialname - instance void set_y(int32 'value') cil managed + .method public hidebysig specialname instance void set_y(int32 'value') cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [runtime]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) @@ -128,8 +124,7 @@ IL_0014: ret } - .method public strict virtual instance string - ToString() cil managed + .method public strict virtual instance string ToString() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -142,8 +137,7 @@ IL_0015: ret } - .method public hidebysig virtual final - instance int32 CompareTo(class assembly/Point obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(class assembly/Point obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -221,8 +215,7 @@ IL_005d: ret } - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed + .method public hidebysig virtual final instance int32 CompareTo(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -323,8 +316,7 @@ IL_006e: ret } - .method public hidebysig virtual final - instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig virtual final instance int32 GetHashCode(class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -374,8 +366,7 @@ IL_0036: ret } - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed + .method public hidebysig virtual final instance int32 GetHashCode() cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -386,62 +377,82 @@ IL_000b: ret } - .method public hidebysig virtual final - instance bool Equals(object obj, - class [runtime]System.Collections.IEqualityComparer comp) cil managed + .method public hidebysig instance bool + Equals(class assembly/Point obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .maxstack 4 .locals init (class assembly/Point V_0, - class assembly/Point V_1, - class [runtime]System.Collections.IEqualityComparer V_2, - class [runtime]System.Collections.IEqualityComparer V_3) + class [runtime]System.Collections.IEqualityComparer V_1, + class [runtime]System.Collections.IEqualityComparer V_2) IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0036 + IL_0001: brfalse.s IL_002f IL_0003: ldarg.1 - IL_0004: isinst assembly/Point - IL_0009: stloc.0 - IL_000a: ldloc.0 - IL_000b: brfalse.s IL_0034 - - IL_000d: ldloc.0 - IL_000e: stloc.1 - IL_000f: ldarg.2 - IL_0010: stloc.2 - IL_0011: ldarg.0 - IL_0012: ldfld int32 assembly/Point::x@ - IL_0017: ldloc.1 - IL_0018: ldfld int32 assembly/Point::x@ - IL_001d: ceq - IL_001f: brfalse.s IL_0032 - - IL_0021: ldarg.2 - IL_0022: stloc.3 - IL_0023: ldarg.0 - IL_0024: ldfld int32 assembly/Point::y@ - IL_0029: ldloc.1 - IL_002a: ldfld int32 assembly/Point::y@ - IL_002f: ceq - IL_0031: ret - - IL_0032: ldc.i4.0 - IL_0033: ret - - IL_0034: ldc.i4.0 - IL_0035: ret - - IL_0036: ldarg.1 - IL_0037: ldnull - IL_0038: cgt.un - IL_003a: ldc.i4.0 - IL_003b: ceq - IL_003d: ret + IL_0004: brfalse.s IL_002d + + IL_0006: ldarg.1 + IL_0007: stloc.0 + IL_0008: ldarg.2 + IL_0009: stloc.1 + IL_000a: ldarg.0 + IL_000b: ldfld int32 assembly/Point::x@ + IL_0010: ldloc.0 + IL_0011: ldfld int32 assembly/Point::x@ + IL_0016: ceq + IL_0018: brfalse.s IL_002b + + IL_001a: ldarg.2 + IL_001b: stloc.2 + IL_001c: ldarg.0 + IL_001d: ldfld int32 assembly/Point::y@ + IL_0022: ldloc.0 + IL_0023: ldfld int32 assembly/Point::y@ + IL_0028: ceq + IL_002a: ret + + IL_002b: ldc.i4.0 + IL_002c: ret + + IL_002d: ldc.i4.0 + IL_002e: ret + + IL_002f: ldarg.1 + IL_0030: ldnull + IL_0031: cgt.un + IL_0033: ldc.i4.0 + IL_0034: ceq + IL_0036: ret } .method public hidebysig virtual final - instance bool Equals(class assembly/Point obj) cil managed + instance bool Equals(object obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 5 + .locals init (class assembly/Point V_0) + IL_0000: ldarg.1 + IL_0001: isinst assembly/Point + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0013 + + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: ldarg.2 + IL_000d: callvirt instance bool assembly/Point::Equals(class assembly/Point, + class [runtime]System.Collections.IEqualityComparer) + IL_0012: ret + + IL_0013: ldc.i4.0 + IL_0014: ret + } + + .method public hidebysig virtual final instance bool Equals(class assembly/Point obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -479,8 +490,7 @@ IL_002e: ret } - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed + .method public hidebysig virtual final instance bool Equals(object obj) cil managed { .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) @@ -752,8 +762,7 @@ IL_00a1: ret } - .method public static class [runtime]System.Tuple`2 - pinString() cil managed + .method public static class [runtime]System.Tuple`2 pinString() cil managed { .maxstack 6 diff --git a/tests/FSharp.Compiler.ComponentTests/FSharp.Compiler.ComponentTests.fsproj b/tests/FSharp.Compiler.ComponentTests/FSharp.Compiler.ComponentTests.fsproj index ddafa873e23..6924b94f448 100644 --- a/tests/FSharp.Compiler.ComponentTests/FSharp.Compiler.ComponentTests.fsproj +++ b/tests/FSharp.Compiler.ComponentTests/FSharp.Compiler.ComponentTests.fsproj @@ -157,6 +157,7 @@ + @@ -329,6 +330,7 @@ + diff --git a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl index 6c8423483a0..b37d8e1b528 100644 --- a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl +++ b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.debug.bsl @@ -14,6 +14,7 @@ FSharp.Compiler.AbstractIL.IL+ILArgConvention+Tags: Int32 StdCall FSharp.Compiler.AbstractIL.IL+ILArgConvention+Tags: Int32 ThisCall FSharp.Compiler.AbstractIL.IL+ILArgConvention+Tags: Int32 VarArg FSharp.Compiler.AbstractIL.IL+ILArgConvention: Boolean Equals(ILArgConvention) +FSharp.Compiler.AbstractIL.IL+ILArgConvention: Boolean Equals(ILArgConvention, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILArgConvention: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILArgConvention: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILArgConvention: Boolean IsCDecl @@ -181,6 +182,7 @@ FSharp.Compiler.AbstractIL.IL+ILAttribElem+UInt32: UInt32 get_Item() FSharp.Compiler.AbstractIL.IL+ILAttribElem+UInt64: UInt64 Item FSharp.Compiler.AbstractIL.IL+ILAttribElem+UInt64: UInt64 get_Item() FSharp.Compiler.AbstractIL.IL+ILAttribElem: Boolean Equals(ILAttribElem) +FSharp.Compiler.AbstractIL.IL+ILAttribElem: Boolean Equals(ILAttribElem, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILAttribElem: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILAttribElem: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILAttribElem: Boolean IsArray @@ -275,6 +277,7 @@ FSharp.Compiler.AbstractIL.IL+ILAttribute+Encoded: Microsoft.FSharp.Collections. FSharp.Compiler.AbstractIL.IL+ILAttribute+Tags: Int32 Decoded FSharp.Compiler.AbstractIL.IL+ILAttribute+Tags: Int32 Encoded FSharp.Compiler.AbstractIL.IL+ILAttribute: Boolean Equals(ILAttribute) +FSharp.Compiler.AbstractIL.IL+ILAttribute: Boolean Equals(ILAttribute, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILAttribute: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILAttribute: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILAttribute: Boolean IsDecoded @@ -298,6 +301,7 @@ FSharp.Compiler.AbstractIL.IL+ILAttributes: ILAttribute[] AsArray() FSharp.Compiler.AbstractIL.IL+ILAttributes: Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILAttribute] AsList() FSharp.Compiler.AbstractIL.IL+ILAttributesStored: System.String ToString() FSharp.Compiler.AbstractIL.IL+ILCallingConv: Boolean Equals(ILCallingConv) +FSharp.Compiler.AbstractIL.IL+ILCallingConv: Boolean Equals(ILCallingConv, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILCallingConv: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILCallingConv: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILCallingConv: ILArgConvention Item2 @@ -318,6 +322,7 @@ FSharp.Compiler.AbstractIL.IL+ILCallingConv: Int32 Tag FSharp.Compiler.AbstractIL.IL+ILCallingConv: Int32 get_Tag() FSharp.Compiler.AbstractIL.IL+ILCallingConv: System.String ToString() FSharp.Compiler.AbstractIL.IL+ILCallingSignature: Boolean Equals(ILCallingSignature) +FSharp.Compiler.AbstractIL.IL+ILCallingSignature: Boolean Equals(ILCallingSignature, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILCallingSignature: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILCallingSignature: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILCallingSignature: ILCallingConv CallingConv @@ -361,6 +366,7 @@ FSharp.Compiler.AbstractIL.IL+ILDefaultPInvokeEncoding+Tags: Int32 Ansi FSharp.Compiler.AbstractIL.IL+ILDefaultPInvokeEncoding+Tags: Int32 Auto FSharp.Compiler.AbstractIL.IL+ILDefaultPInvokeEncoding+Tags: Int32 Unicode FSharp.Compiler.AbstractIL.IL+ILDefaultPInvokeEncoding: Boolean Equals(ILDefaultPInvokeEncoding) +FSharp.Compiler.AbstractIL.IL+ILDefaultPInvokeEncoding: Boolean Equals(ILDefaultPInvokeEncoding, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILDefaultPInvokeEncoding: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILDefaultPInvokeEncoding: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILDefaultPInvokeEncoding: Boolean IsAnsi @@ -510,6 +516,7 @@ FSharp.Compiler.AbstractIL.IL+ILFieldInit+UInt64: UInt64 get_Item() FSharp.Compiler.AbstractIL.IL+ILFieldInit+UInt8: Byte Item FSharp.Compiler.AbstractIL.IL+ILFieldInit+UInt8: Byte get_Item() FSharp.Compiler.AbstractIL.IL+ILFieldInit: Boolean Equals(ILFieldInit) +FSharp.Compiler.AbstractIL.IL+ILFieldInit: Boolean Equals(ILFieldInit, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILFieldInit: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILFieldInit: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILFieldInit: Boolean IsBool @@ -579,6 +586,7 @@ FSharp.Compiler.AbstractIL.IL+ILFieldInit: Int32 get_Tag() FSharp.Compiler.AbstractIL.IL+ILFieldInit: System.Object AsObject() FSharp.Compiler.AbstractIL.IL+ILFieldInit: System.String ToString() FSharp.Compiler.AbstractIL.IL+ILFieldRef: Boolean Equals(ILFieldRef) +FSharp.Compiler.AbstractIL.IL+ILFieldRef: Boolean Equals(ILFieldRef, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILFieldRef: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILFieldRef: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILFieldRef: ILType Type @@ -595,6 +603,7 @@ FSharp.Compiler.AbstractIL.IL+ILFieldRef: System.String ToString() FSharp.Compiler.AbstractIL.IL+ILFieldRef: System.String get_Name() FSharp.Compiler.AbstractIL.IL+ILFieldRef: Void .ctor(ILTypeRef, System.String, ILType) FSharp.Compiler.AbstractIL.IL+ILFieldSpec: Boolean Equals(ILFieldSpec) +FSharp.Compiler.AbstractIL.IL+ILFieldSpec: Boolean Equals(ILFieldSpec, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILFieldSpec: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILFieldSpec: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILFieldSpec: ILFieldRef FieldRef @@ -640,6 +649,7 @@ FSharp.Compiler.AbstractIL.IL+ILGenericVariance+Tags: Int32 CoVariant FSharp.Compiler.AbstractIL.IL+ILGenericVariance+Tags: Int32 ContraVariant FSharp.Compiler.AbstractIL.IL+ILGenericVariance+Tags: Int32 NonVariant FSharp.Compiler.AbstractIL.IL+ILGenericVariance: Boolean Equals(ILGenericVariance) +FSharp.Compiler.AbstractIL.IL+ILGenericVariance: Boolean Equals(ILGenericVariance, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILGenericVariance: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILGenericVariance: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILGenericVariance: Boolean IsCoVariant @@ -671,6 +681,7 @@ FSharp.Compiler.AbstractIL.IL+ILMemberAccess+Tags: Int32 FamilyOrAssembly FSharp.Compiler.AbstractIL.IL+ILMemberAccess+Tags: Int32 Private FSharp.Compiler.AbstractIL.IL+ILMemberAccess+Tags: Int32 Public FSharp.Compiler.AbstractIL.IL+ILMemberAccess: Boolean Equals(ILMemberAccess) +FSharp.Compiler.AbstractIL.IL+ILMemberAccess: Boolean Equals(ILMemberAccess, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILMemberAccess: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILMemberAccess: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILMemberAccess: Boolean IsAssembly @@ -801,6 +812,7 @@ FSharp.Compiler.AbstractIL.IL+ILMethodDefs: Microsoft.FSharp.Collections.FSharpL FSharp.Compiler.AbstractIL.IL+ILMethodDefs: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILMethodDef] TryFindInstanceByNameAndCallingSignature(System.String, ILCallingSignature) FSharp.Compiler.AbstractIL.IL+ILMethodDefs: System.Collections.Generic.IDictionary`2[System.String,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILMethodDef]] CreateDictionary(ILMethodDef[]) FSharp.Compiler.AbstractIL.IL+ILMethodImplDef: Boolean Equals(ILMethodImplDef) +FSharp.Compiler.AbstractIL.IL+ILMethodImplDef: Boolean Equals(ILMethodImplDef, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILMethodImplDef: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILMethodImplDef: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILMethodImplDef: ILMethodSpec OverrideBy @@ -1005,6 +1017,7 @@ FSharp.Compiler.AbstractIL.IL+ILNativeType+Tags: Int32 UInt64 FSharp.Compiler.AbstractIL.IL+ILNativeType+Tags: Int32 VariantBool FSharp.Compiler.AbstractIL.IL+ILNativeType+Tags: Int32 Void FSharp.Compiler.AbstractIL.IL+ILNativeType: Boolean Equals(ILNativeType) +FSharp.Compiler.AbstractIL.IL+ILNativeType: Boolean Equals(ILNativeType, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILNativeType: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILNativeType: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILNativeType: Boolean IsANSIBSTR @@ -1250,6 +1263,7 @@ FSharp.Compiler.AbstractIL.IL+ILPropertyDef: System.String get_Name() FSharp.Compiler.AbstractIL.IL+ILPropertyDef: Void .ctor(System.String, System.Reflection.PropertyAttributes, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILMethodRef], Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILMethodRef], ILThisConvention, ILType, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILFieldInit], Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType], ILAttributes) FSharp.Compiler.AbstractIL.IL+ILPropertyDefs: System.String ToString() FSharp.Compiler.AbstractIL.IL+ILReferences: Boolean Equals(ILReferences) +FSharp.Compiler.AbstractIL.IL+ILReferences: Boolean Equals(ILReferences, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILReferences: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILReferences: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILReferences: ILAssemblyRef[] AssemblyReferences @@ -1292,6 +1306,7 @@ FSharp.Compiler.AbstractIL.IL+ILScopeRef+Tags: Int32 Local FSharp.Compiler.AbstractIL.IL+ILScopeRef+Tags: Int32 Module FSharp.Compiler.AbstractIL.IL+ILScopeRef+Tags: Int32 PrimaryAssembly FSharp.Compiler.AbstractIL.IL+ILScopeRef: Boolean Equals(ILScopeRef) +FSharp.Compiler.AbstractIL.IL+ILScopeRef: Boolean Equals(ILScopeRef, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILScopeRef: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILScopeRef: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILScopeRef: Boolean IsAssembly @@ -1346,6 +1361,7 @@ FSharp.Compiler.AbstractIL.IL+ILThisConvention+Tags: Int32 Instance FSharp.Compiler.AbstractIL.IL+ILThisConvention+Tags: Int32 InstanceExplicit FSharp.Compiler.AbstractIL.IL+ILThisConvention+Tags: Int32 Static FSharp.Compiler.AbstractIL.IL+ILThisConvention: Boolean Equals(ILThisConvention) +FSharp.Compiler.AbstractIL.IL+ILThisConvention: Boolean Equals(ILThisConvention, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILThisConvention: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILThisConvention: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILThisConvention: Boolean IsInstance @@ -1401,6 +1417,7 @@ FSharp.Compiler.AbstractIL.IL+ILType+TypeVar: UInt16 get_Item() FSharp.Compiler.AbstractIL.IL+ILType+Value: ILTypeSpec Item FSharp.Compiler.AbstractIL.IL+ILType+Value: ILTypeSpec get_Item() FSharp.Compiler.AbstractIL.IL+ILType: Boolean Equals(ILType) +FSharp.Compiler.AbstractIL.IL+ILType: Boolean Equals(ILType, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILType: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILType: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILType: Boolean IsArray @@ -1529,6 +1546,7 @@ FSharp.Compiler.AbstractIL.IL+ILTypeDefAccess+Tags: Int32 Nested FSharp.Compiler.AbstractIL.IL+ILTypeDefAccess+Tags: Int32 Private FSharp.Compiler.AbstractIL.IL+ILTypeDefAccess+Tags: Int32 Public FSharp.Compiler.AbstractIL.IL+ILTypeDefAccess: Boolean Equals(ILTypeDefAccess) +FSharp.Compiler.AbstractIL.IL+ILTypeDefAccess: Boolean Equals(ILTypeDefAccess, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILTypeDefAccess: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILTypeDefAccess: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILTypeDefAccess: Boolean IsNested @@ -1558,6 +1576,7 @@ FSharp.Compiler.AbstractIL.IL+ILTypeDefKind+Tags: Int32 Enum FSharp.Compiler.AbstractIL.IL+ILTypeDefKind+Tags: Int32 Interface FSharp.Compiler.AbstractIL.IL+ILTypeDefKind+Tags: Int32 ValueType FSharp.Compiler.AbstractIL.IL+ILTypeDefKind: Boolean Equals(ILTypeDefKind) +FSharp.Compiler.AbstractIL.IL+ILTypeDefKind: Boolean Equals(ILTypeDefKind, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILTypeDefKind: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILTypeDefKind: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILTypeDefKind: Boolean IsClass @@ -1597,6 +1616,7 @@ FSharp.Compiler.AbstractIL.IL+ILTypeDefLayout+Tags: Int32 Auto FSharp.Compiler.AbstractIL.IL+ILTypeDefLayout+Tags: Int32 Explicit FSharp.Compiler.AbstractIL.IL+ILTypeDefLayout+Tags: Int32 Sequential FSharp.Compiler.AbstractIL.IL+ILTypeDefLayout: Boolean Equals(ILTypeDefLayout) +FSharp.Compiler.AbstractIL.IL+ILTypeDefLayout: Boolean Equals(ILTypeDefLayout, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILTypeDefLayout: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILTypeDefLayout: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILTypeDefLayout: Boolean IsAuto @@ -1624,6 +1644,7 @@ FSharp.Compiler.AbstractIL.IL+ILTypeDefs: System.Collections.Generic.IDictionary FSharp.Compiler.AbstractIL.IL+ILTypeInit+Tags: Int32 BeforeField FSharp.Compiler.AbstractIL.IL+ILTypeInit+Tags: Int32 OnAny FSharp.Compiler.AbstractIL.IL+ILTypeInit: Boolean Equals(ILTypeInit) +FSharp.Compiler.AbstractIL.IL+ILTypeInit: Boolean Equals(ILTypeInit, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILTypeInit: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILTypeInit: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILTypeInit: Boolean IsBeforeField @@ -1682,6 +1703,7 @@ FSharp.Compiler.AbstractIL.IL+ILTypeSpec: System.String ToString() FSharp.Compiler.AbstractIL.IL+ILTypeSpec: System.String get_FullName() FSharp.Compiler.AbstractIL.IL+ILTypeSpec: System.String get_Name() FSharp.Compiler.AbstractIL.IL+ILVersionInfo: Boolean Equals(ILVersionInfo) +FSharp.Compiler.AbstractIL.IL+ILVersionInfo: Boolean Equals(ILVersionInfo, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILVersionInfo: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILVersionInfo: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILVersionInfo: Int32 CompareTo(ILVersionInfo) @@ -1709,6 +1731,7 @@ FSharp.Compiler.AbstractIL.IL+MethodBody+Tags: Int32 Native FSharp.Compiler.AbstractIL.IL+MethodBody+Tags: Int32 NotAvailable FSharp.Compiler.AbstractIL.IL+MethodBody+Tags: Int32 PInvoke FSharp.Compiler.AbstractIL.IL+MethodBody: Boolean Equals(MethodBody) +FSharp.Compiler.AbstractIL.IL+MethodBody: Boolean Equals(MethodBody, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+MethodBody: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+MethodBody: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+MethodBody: Boolean IsAbstract @@ -1744,6 +1767,7 @@ FSharp.Compiler.AbstractIL.IL+PublicKey+PublicKeyToken: Byte[] get_Item() FSharp.Compiler.AbstractIL.IL+PublicKey+Tags: Int32 PublicKey FSharp.Compiler.AbstractIL.IL+PublicKey+Tags: Int32 PublicKeyToken FSharp.Compiler.AbstractIL.IL+PublicKey: Boolean Equals(PublicKey) +FSharp.Compiler.AbstractIL.IL+PublicKey: Boolean Equals(PublicKey, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+PublicKey: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+PublicKey: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+PublicKey: Boolean IsKey @@ -1894,6 +1918,7 @@ FSharp.Compiler.AbstractIL.ILBinaryReader+ILReaderOptions: Void .ctor(Microsoft. FSharp.Compiler.AbstractIL.ILBinaryReader+MetadataOnlyFlag+Tags: Int32 No FSharp.Compiler.AbstractIL.ILBinaryReader+MetadataOnlyFlag+Tags: Int32 Yes FSharp.Compiler.AbstractIL.ILBinaryReader+MetadataOnlyFlag: Boolean Equals(MetadataOnlyFlag) +FSharp.Compiler.AbstractIL.ILBinaryReader+MetadataOnlyFlag: Boolean Equals(MetadataOnlyFlag, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.ILBinaryReader+MetadataOnlyFlag: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.ILBinaryReader+MetadataOnlyFlag: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.ILBinaryReader+MetadataOnlyFlag: Boolean IsNo @@ -1916,6 +1941,7 @@ FSharp.Compiler.AbstractIL.ILBinaryReader+MetadataOnlyFlag: System.String ToStri FSharp.Compiler.AbstractIL.ILBinaryReader+ReduceMemoryFlag+Tags: Int32 No FSharp.Compiler.AbstractIL.ILBinaryReader+ReduceMemoryFlag+Tags: Int32 Yes FSharp.Compiler.AbstractIL.ILBinaryReader+ReduceMemoryFlag: Boolean Equals(ReduceMemoryFlag) +FSharp.Compiler.AbstractIL.ILBinaryReader+ReduceMemoryFlag: Boolean Equals(ReduceMemoryFlag, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.ILBinaryReader+ReduceMemoryFlag: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.ILBinaryReader+ReduceMemoryFlag: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.ILBinaryReader+ReduceMemoryFlag: Boolean IsNo @@ -1972,6 +1998,7 @@ FSharp.Compiler.CodeAnalysis.FSharpCheckFileAnswer+Succeeded: FSharp.Compiler.Co FSharp.Compiler.CodeAnalysis.FSharpCheckFileAnswer+Tags: Int32 Aborted FSharp.Compiler.CodeAnalysis.FSharpCheckFileAnswer+Tags: Int32 Succeeded FSharp.Compiler.CodeAnalysis.FSharpCheckFileAnswer: Boolean Equals(FSharp.Compiler.CodeAnalysis.FSharpCheckFileAnswer) +FSharp.Compiler.CodeAnalysis.FSharpCheckFileAnswer: Boolean Equals(FSharp.Compiler.CodeAnalysis.FSharpCheckFileAnswer, System.Collections.IEqualityComparer) FSharp.Compiler.CodeAnalysis.FSharpCheckFileAnswer: Boolean Equals(System.Object) FSharp.Compiler.CodeAnalysis.FSharpCheckFileAnswer: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.CodeAnalysis.FSharpCheckFileAnswer: Boolean IsAborted @@ -2125,6 +2152,7 @@ FSharp.Compiler.CodeAnalysis.FSharpParseFileResults: System.String[] get_Depende FSharp.Compiler.CodeAnalysis.FSharpParsingOptions: Boolean ApplyLineDirectives FSharp.Compiler.CodeAnalysis.FSharpParsingOptions: Boolean CompilingFSharpCore FSharp.Compiler.CodeAnalysis.FSharpParsingOptions: Boolean Equals(FSharp.Compiler.CodeAnalysis.FSharpParsingOptions) +FSharp.Compiler.CodeAnalysis.FSharpParsingOptions: Boolean Equals(FSharp.Compiler.CodeAnalysis.FSharpParsingOptions, System.Collections.IEqualityComparer) FSharp.Compiler.CodeAnalysis.FSharpParsingOptions: Boolean Equals(System.Object) FSharp.Compiler.CodeAnalysis.FSharpParsingOptions: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.CodeAnalysis.FSharpParsingOptions: Boolean IsExe @@ -2160,6 +2188,7 @@ FSharp.Compiler.CodeAnalysis.FSharpProjectContext: FSharp.Compiler.Symbols.FShar FSharp.Compiler.CodeAnalysis.FSharpProjectContext: FSharp.Compiler.Symbols.FSharpAccessibilityRights get_AccessibilityRights() FSharp.Compiler.CodeAnalysis.FSharpProjectContext: Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Symbols.FSharpAssembly] GetReferencedAssemblies() FSharp.Compiler.CodeAnalysis.FSharpProjectOptions: Boolean Equals(FSharp.Compiler.CodeAnalysis.FSharpProjectOptions) +FSharp.Compiler.CodeAnalysis.FSharpProjectOptions: Boolean Equals(FSharp.Compiler.CodeAnalysis.FSharpProjectOptions, System.Collections.IEqualityComparer) FSharp.Compiler.CodeAnalysis.FSharpProjectOptions: Boolean Equals(System.Object) FSharp.Compiler.CodeAnalysis.FSharpProjectOptions: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.CodeAnalysis.FSharpProjectOptions: Boolean IsIncompleteTypeCheckEnvironment @@ -2272,6 +2301,7 @@ FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment+EditingOrCompilation: B FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment+Tags: Int32 CompilationAndEvaluation FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment+Tags: Int32 EditingOrCompilation FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment: Boolean Equals(FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment) +FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment: Boolean Equals(FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment, System.Collections.IEqualityComparer) FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment: Boolean Equals(System.Object) FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment: Boolean IsCompilationAndEvaluation @@ -2291,6 +2321,7 @@ FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment: Int32 GetHashCode(Syst FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment: Int32 Tag FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment: Int32 get_Tag() FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment: System.String ToString() +FSharp.Compiler.CodeAnalysis.LegacyResolutionFailure: Boolean Equals(System.Exception, System.Collections.IEqualityComparer) FSharp.Compiler.CodeAnalysis.LegacyResolutionFailure: Boolean Equals(System.Object) FSharp.Compiler.CodeAnalysis.LegacyResolutionFailure: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.CodeAnalysis.LegacyResolutionFailure: Int32 GetHashCode() @@ -2320,6 +2351,7 @@ FSharp.Compiler.CodeAnalysis.ProjectSnapshot+FSharpFileSnapshot: System.String g FSharp.Compiler.CodeAnalysis.ProjectSnapshot+FSharpFileSnapshot: System.Threading.Tasks.Task`1[FSharp.Compiler.Text.ISourceTextNew] GetSource() FSharp.Compiler.CodeAnalysis.ProjectSnapshot+FSharpFileSnapshot: Void .ctor(System.String, System.String, Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,System.Threading.Tasks.Task`1[FSharp.Compiler.Text.ISourceTextNew]]) FSharp.Compiler.CodeAnalysis.ProjectSnapshot+FSharpProjectIdentifier: Boolean Equals(FSharpProjectIdentifier) +FSharp.Compiler.CodeAnalysis.ProjectSnapshot+FSharpProjectIdentifier: Boolean Equals(FSharpProjectIdentifier, System.Collections.IEqualityComparer) FSharp.Compiler.CodeAnalysis.ProjectSnapshot+FSharpProjectIdentifier: Boolean Equals(System.Object) FSharp.Compiler.CodeAnalysis.ProjectSnapshot+FSharpProjectIdentifier: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.CodeAnalysis.ProjectSnapshot+FSharpProjectIdentifier: FSharpProjectIdentifier NewFSharpProjectIdentifier(System.String, System.String) @@ -2407,6 +2439,7 @@ FSharp.Compiler.CodeAnalysis.ProjectSnapshot+FSharpReferencedProjectSnapshot: Sy FSharp.Compiler.CodeAnalysis.ProjectSnapshot+FSharpReferencedProjectSnapshot: System.String ToString() FSharp.Compiler.CodeAnalysis.ProjectSnapshot+FSharpReferencedProjectSnapshot: System.String get_OutputFile() FSharp.Compiler.CodeAnalysis.ProjectSnapshot+ReferenceOnDisk: Boolean Equals(ReferenceOnDisk) +FSharp.Compiler.CodeAnalysis.ProjectSnapshot+ReferenceOnDisk: Boolean Equals(ReferenceOnDisk, System.Collections.IEqualityComparer) FSharp.Compiler.CodeAnalysis.ProjectSnapshot+ReferenceOnDisk: Boolean Equals(System.Object) FSharp.Compiler.CodeAnalysis.ProjectSnapshot+ReferenceOnDisk: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.CodeAnalysis.ProjectSnapshot+ReferenceOnDisk: Int32 CompareTo(ReferenceOnDisk) @@ -2452,6 +2485,7 @@ FSharp.Compiler.DependencyManager.DependencyProvider: Void ClearResultsCache(Sys FSharp.Compiler.DependencyManager.ErrorReportType+Tags: Int32 Error FSharp.Compiler.DependencyManager.ErrorReportType+Tags: Int32 Warning FSharp.Compiler.DependencyManager.ErrorReportType: Boolean Equals(FSharp.Compiler.DependencyManager.ErrorReportType) +FSharp.Compiler.DependencyManager.ErrorReportType: Boolean Equals(FSharp.Compiler.DependencyManager.ErrorReportType, System.Collections.IEqualityComparer) FSharp.Compiler.DependencyManager.ErrorReportType: Boolean Equals(System.Object) FSharp.Compiler.DependencyManager.ErrorReportType: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.DependencyManager.ErrorReportType: Boolean IsError @@ -2533,6 +2567,7 @@ FSharp.Compiler.Diagnostics.ExtendedData+DiagnosticContextInfo+Tags: Int32 Seque FSharp.Compiler.Diagnostics.ExtendedData+DiagnosticContextInfo+Tags: Int32 TupleInRecordFields FSharp.Compiler.Diagnostics.ExtendedData+DiagnosticContextInfo+Tags: Int32 YieldInComputationExpression FSharp.Compiler.Diagnostics.ExtendedData+DiagnosticContextInfo: Boolean Equals(DiagnosticContextInfo) +FSharp.Compiler.Diagnostics.ExtendedData+DiagnosticContextInfo: Boolean Equals(DiagnosticContextInfo, System.Collections.IEqualityComparer) FSharp.Compiler.Diagnostics.ExtendedData+DiagnosticContextInfo: Boolean Equals(System.Object) FSharp.Compiler.Diagnostics.ExtendedData+DiagnosticContextInfo: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Diagnostics.ExtendedData+DiagnosticContextInfo: Boolean IsCollectionElement @@ -2666,6 +2701,7 @@ FSharp.Compiler.Diagnostics.FSharpDiagnosticKind+Tags: Int32 AddIndexerDot FSharp.Compiler.Diagnostics.FSharpDiagnosticKind+Tags: Int32 RemoveIndexerDot FSharp.Compiler.Diagnostics.FSharpDiagnosticKind+Tags: Int32 ReplaceWithSuggestion FSharp.Compiler.Diagnostics.FSharpDiagnosticKind: Boolean Equals(FSharp.Compiler.Diagnostics.FSharpDiagnosticKind) +FSharp.Compiler.Diagnostics.FSharpDiagnosticKind: Boolean Equals(FSharp.Compiler.Diagnostics.FSharpDiagnosticKind, System.Collections.IEqualityComparer) FSharp.Compiler.Diagnostics.FSharpDiagnosticKind: Boolean Equals(System.Object) FSharp.Compiler.Diagnostics.FSharpDiagnosticKind: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Diagnostics.FSharpDiagnosticKind: Boolean IsAddIndexerDot @@ -2691,6 +2727,7 @@ FSharp.Compiler.Diagnostics.FSharpDiagnosticKind: Int32 get_Tag() FSharp.Compiler.Diagnostics.FSharpDiagnosticKind: System.String ToString() FSharp.Compiler.Diagnostics.FSharpDiagnosticOptions: Boolean CheckXmlDocs FSharp.Compiler.Diagnostics.FSharpDiagnosticOptions: Boolean Equals(FSharp.Compiler.Diagnostics.FSharpDiagnosticOptions) +FSharp.Compiler.Diagnostics.FSharpDiagnosticOptions: Boolean Equals(FSharp.Compiler.Diagnostics.FSharpDiagnosticOptions, System.Collections.IEqualityComparer) FSharp.Compiler.Diagnostics.FSharpDiagnosticOptions: Boolean Equals(System.Object) FSharp.Compiler.Diagnostics.FSharpDiagnosticOptions: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Diagnostics.FSharpDiagnosticOptions: Boolean GlobalWarnAsError @@ -2720,6 +2757,7 @@ FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity+Tags: Int32 Hidden FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity+Tags: Int32 Info FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity+Tags: Int32 Warning FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity: Boolean Equals(FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity) +FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity: Boolean Equals(FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity, System.Collections.IEqualityComparer) FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity: Boolean Equals(System.Object) FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity: Boolean IsError @@ -2752,6 +2790,7 @@ FSharp.Compiler.EditorServices.AssemblyContent: Microsoft.FSharp.Collections.FSh FSharp.Compiler.EditorServices.AssemblyContentType+Tags: Int32 Full FSharp.Compiler.EditorServices.AssemblyContentType+Tags: Int32 Public FSharp.Compiler.EditorServices.AssemblyContentType: Boolean Equals(FSharp.Compiler.EditorServices.AssemblyContentType) +FSharp.Compiler.EditorServices.AssemblyContentType: Boolean Equals(FSharp.Compiler.EditorServices.AssemblyContentType, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.AssemblyContentType: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.AssemblyContentType: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.AssemblyContentType: Boolean IsFull @@ -2820,6 +2859,7 @@ FSharp.Compiler.EditorServices.CompletionContext+Tags: Int32 Type FSharp.Compiler.EditorServices.CompletionContext+Tags: Int32 TypeAbbreviationOrSingleCaseUnion FSharp.Compiler.EditorServices.CompletionContext+Tags: Int32 UnionCaseFieldsDeclaration FSharp.Compiler.EditorServices.CompletionContext: Boolean Equals(FSharp.Compiler.EditorServices.CompletionContext) +FSharp.Compiler.EditorServices.CompletionContext: Boolean Equals(FSharp.Compiler.EditorServices.CompletionContext, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.CompletionContext: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.CompletionContext: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.CompletionContext: Boolean IsAttributeApplication @@ -2887,6 +2927,7 @@ FSharp.Compiler.EditorServices.CompletionItemKind+Tags: Int32 Other FSharp.Compiler.EditorServices.CompletionItemKind+Tags: Int32 Property FSharp.Compiler.EditorServices.CompletionItemKind+Tags: Int32 SuggestedName FSharp.Compiler.EditorServices.CompletionItemKind: Boolean Equals(FSharp.Compiler.EditorServices.CompletionItemKind) +FSharp.Compiler.EditorServices.CompletionItemKind: Boolean Equals(FSharp.Compiler.EditorServices.CompletionItemKind, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.CompletionItemKind: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.CompletionItemKind: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.CompletionItemKind: Boolean IsArgument @@ -2974,6 +3015,7 @@ FSharp.Compiler.EditorServices.EntityKind+Tags: Int32 FunctionOrValue FSharp.Compiler.EditorServices.EntityKind+Tags: Int32 Module FSharp.Compiler.EditorServices.EntityKind+Tags: Int32 Type FSharp.Compiler.EditorServices.EntityKind: Boolean Equals(FSharp.Compiler.EditorServices.EntityKind) +FSharp.Compiler.EditorServices.EntityKind: Boolean Equals(FSharp.Compiler.EditorServices.EntityKind, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.EntityKind: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.EntityKind: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.EntityKind: Boolean IsAttribute @@ -3024,6 +3066,7 @@ FSharp.Compiler.EditorServices.FSharpGlyph+Tags: Int32 Typedef FSharp.Compiler.EditorServices.FSharpGlyph+Tags: Int32 Union FSharp.Compiler.EditorServices.FSharpGlyph+Tags: Int32 Variable FSharp.Compiler.EditorServices.FSharpGlyph: Boolean Equals(FSharp.Compiler.EditorServices.FSharpGlyph) +FSharp.Compiler.EditorServices.FSharpGlyph: Boolean Equals(FSharp.Compiler.EditorServices.FSharpGlyph, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.FSharpGlyph: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.FSharpGlyph: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.FSharpGlyph: Boolean IsClass @@ -3170,6 +3213,7 @@ FSharp.Compiler.EditorServices.FindDeclExternalSymbol+Tags: Int32 Type FSharp.Compiler.EditorServices.FindDeclExternalSymbol+Type: System.String fullName FSharp.Compiler.EditorServices.FindDeclExternalSymbol+Type: System.String get_fullName() FSharp.Compiler.EditorServices.FindDeclExternalSymbol: Boolean Equals(FSharp.Compiler.EditorServices.FindDeclExternalSymbol) +FSharp.Compiler.EditorServices.FindDeclExternalSymbol: Boolean Equals(FSharp.Compiler.EditorServices.FindDeclExternalSymbol, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.FindDeclExternalSymbol: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.FindDeclExternalSymbol: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.FindDeclExternalSymbol: Boolean IsConstructor @@ -3220,6 +3264,7 @@ FSharp.Compiler.EditorServices.FindDeclExternalType+Type: System.String get_full FSharp.Compiler.EditorServices.FindDeclExternalType+TypeVar: System.String get_typeName() FSharp.Compiler.EditorServices.FindDeclExternalType+TypeVar: System.String typeName FSharp.Compiler.EditorServices.FindDeclExternalType: Boolean Equals(FSharp.Compiler.EditorServices.FindDeclExternalType) +FSharp.Compiler.EditorServices.FindDeclExternalType: Boolean Equals(FSharp.Compiler.EditorServices.FindDeclExternalType, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.FindDeclExternalType: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.FindDeclExternalType: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.FindDeclExternalType: Boolean IsArray @@ -3258,6 +3303,7 @@ FSharp.Compiler.EditorServices.FindDeclFailureReason+Tags: Int32 Unknown FSharp.Compiler.EditorServices.FindDeclFailureReason+Unknown: System.String get_message() FSharp.Compiler.EditorServices.FindDeclFailureReason+Unknown: System.String message FSharp.Compiler.EditorServices.FindDeclFailureReason: Boolean Equals(FSharp.Compiler.EditorServices.FindDeclFailureReason) +FSharp.Compiler.EditorServices.FindDeclFailureReason: Boolean Equals(FSharp.Compiler.EditorServices.FindDeclFailureReason, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.FindDeclFailureReason: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.FindDeclFailureReason: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.FindDeclFailureReason: Boolean IsNoSourceCode @@ -3297,6 +3343,7 @@ FSharp.Compiler.EditorServices.FindDeclResult+Tags: Int32 DeclFound FSharp.Compiler.EditorServices.FindDeclResult+Tags: Int32 DeclNotFound FSharp.Compiler.EditorServices.FindDeclResult+Tags: Int32 ExternalDecl FSharp.Compiler.EditorServices.FindDeclResult: Boolean Equals(FSharp.Compiler.EditorServices.FindDeclResult) +FSharp.Compiler.EditorServices.FindDeclResult: Boolean Equals(FSharp.Compiler.EditorServices.FindDeclResult, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.FindDeclResult: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.FindDeclResult: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.FindDeclResult: Boolean IsDeclFound @@ -3323,6 +3370,7 @@ FSharp.Compiler.EditorServices.InheritanceContext+Tags: Int32 Class FSharp.Compiler.EditorServices.InheritanceContext+Tags: Int32 Interface FSharp.Compiler.EditorServices.InheritanceContext+Tags: Int32 Unknown FSharp.Compiler.EditorServices.InheritanceContext: Boolean Equals(FSharp.Compiler.EditorServices.InheritanceContext) +FSharp.Compiler.EditorServices.InheritanceContext: Boolean Equals(FSharp.Compiler.EditorServices.InheritanceContext, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.InheritanceContext: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.InheritanceContext: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.InheritanceContext: Boolean IsClass @@ -3347,6 +3395,7 @@ FSharp.Compiler.EditorServices.InheritanceContext: Int32 Tag FSharp.Compiler.EditorServices.InheritanceContext: Int32 get_Tag() FSharp.Compiler.EditorServices.InheritanceContext: System.String ToString() FSharp.Compiler.EditorServices.InsertionContext: Boolean Equals(FSharp.Compiler.EditorServices.InsertionContext) +FSharp.Compiler.EditorServices.InsertionContext: Boolean Equals(FSharp.Compiler.EditorServices.InsertionContext, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.InsertionContext: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.InsertionContext: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.InsertionContext: FSharp.Compiler.EditorServices.ScopeKind ScopeKind @@ -3358,6 +3407,7 @@ FSharp.Compiler.EditorServices.InsertionContext: Int32 GetHashCode(System.Collec FSharp.Compiler.EditorServices.InsertionContext: System.String ToString() FSharp.Compiler.EditorServices.InsertionContext: Void .ctor(FSharp.Compiler.EditorServices.ScopeKind, FSharp.Compiler.Text.Position) FSharp.Compiler.EditorServices.InsertionContextEntity: Boolean Equals(FSharp.Compiler.EditorServices.InsertionContextEntity) +FSharp.Compiler.EditorServices.InsertionContextEntity: Boolean Equals(FSharp.Compiler.EditorServices.InsertionContextEntity, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.InsertionContextEntity: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.InsertionContextEntity: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.InsertionContextEntity: Int32 CompareTo(FSharp.Compiler.EditorServices.InsertionContextEntity) @@ -3413,6 +3463,7 @@ FSharp.Compiler.EditorServices.InterfaceStubGenerator: System.String FormatInter FSharp.Compiler.EditorServices.LookupType+Tags: Int32 Fuzzy FSharp.Compiler.EditorServices.LookupType+Tags: Int32 Precise FSharp.Compiler.EditorServices.LookupType: Boolean Equals(FSharp.Compiler.EditorServices.LookupType) +FSharp.Compiler.EditorServices.LookupType: Boolean Equals(FSharp.Compiler.EditorServices.LookupType, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.LookupType: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.LookupType: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.LookupType: Boolean IsFuzzy @@ -3433,6 +3484,7 @@ FSharp.Compiler.EditorServices.LookupType: Int32 Tag FSharp.Compiler.EditorServices.LookupType: Int32 get_Tag() FSharp.Compiler.EditorServices.LookupType: System.String ToString() FSharp.Compiler.EditorServices.MaybeUnresolvedIdent: Boolean Equals(FSharp.Compiler.EditorServices.MaybeUnresolvedIdent) +FSharp.Compiler.EditorServices.MaybeUnresolvedIdent: Boolean Equals(FSharp.Compiler.EditorServices.MaybeUnresolvedIdent, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.MaybeUnresolvedIdent: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.MaybeUnresolvedIdent: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.MaybeUnresolvedIdent: Boolean Resolved @@ -3473,6 +3525,7 @@ FSharp.Compiler.EditorServices.MethodGroupItemParameter: System.String Parameter FSharp.Compiler.EditorServices.MethodGroupItemParameter: System.String get_CanonicalTypeTextForSorting() FSharp.Compiler.EditorServices.MethodGroupItemParameter: System.String get_ParameterName() FSharp.Compiler.EditorServices.ModuleKind: Boolean Equals(FSharp.Compiler.EditorServices.ModuleKind) +FSharp.Compiler.EditorServices.ModuleKind: Boolean Equals(FSharp.Compiler.EditorServices.ModuleKind, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.ModuleKind: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.ModuleKind: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.ModuleKind: Boolean HasModuleSuffix @@ -3507,6 +3560,7 @@ FSharp.Compiler.EditorServices.NavigableContainerType+Tags: Int32 Module FSharp.Compiler.EditorServices.NavigableContainerType+Tags: Int32 Namespace FSharp.Compiler.EditorServices.NavigableContainerType+Tags: Int32 Type FSharp.Compiler.EditorServices.NavigableContainerType: Boolean Equals(FSharp.Compiler.EditorServices.NavigableContainerType) +FSharp.Compiler.EditorServices.NavigableContainerType: Boolean Equals(FSharp.Compiler.EditorServices.NavigableContainerType, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.NavigableContainerType: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.NavigableContainerType: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.NavigableContainerType: Boolean IsException @@ -3539,6 +3593,7 @@ FSharp.Compiler.EditorServices.NavigableContainerType: Int32 Tag FSharp.Compiler.EditorServices.NavigableContainerType: Int32 get_Tag() FSharp.Compiler.EditorServices.NavigableContainerType: System.String ToString() FSharp.Compiler.EditorServices.NavigableItem: Boolean Equals(FSharp.Compiler.EditorServices.NavigableItem) +FSharp.Compiler.EditorServices.NavigableItem: Boolean Equals(FSharp.Compiler.EditorServices.NavigableItem, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.NavigableItem: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.NavigableItem: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.NavigableItem: Boolean IsSignature @@ -3569,6 +3624,7 @@ FSharp.Compiler.EditorServices.NavigableItemKind+Tags: Int32 Property FSharp.Compiler.EditorServices.NavigableItemKind+Tags: Int32 Type FSharp.Compiler.EditorServices.NavigableItemKind+Tags: Int32 UnionCase FSharp.Compiler.EditorServices.NavigableItemKind: Boolean Equals(FSharp.Compiler.EditorServices.NavigableItemKind) +FSharp.Compiler.EditorServices.NavigableItemKind: Boolean Equals(FSharp.Compiler.EditorServices.NavigableItemKind, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.NavigableItemKind: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.NavigableItemKind: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.NavigableItemKind: Boolean IsConstructor @@ -3635,6 +3691,7 @@ FSharp.Compiler.EditorServices.NavigationEntityKind+Tags: Int32 Namespace FSharp.Compiler.EditorServices.NavigationEntityKind+Tags: Int32 Record FSharp.Compiler.EditorServices.NavigationEntityKind+Tags: Int32 Union FSharp.Compiler.EditorServices.NavigationEntityKind: Boolean Equals(FSharp.Compiler.EditorServices.NavigationEntityKind) +FSharp.Compiler.EditorServices.NavigationEntityKind: Boolean Equals(FSharp.Compiler.EditorServices.NavigationEntityKind, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.NavigationEntityKind: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.NavigationEntityKind: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.NavigationEntityKind: Boolean IsClass @@ -3708,6 +3765,7 @@ FSharp.Compiler.EditorServices.NavigationItemKind+Tags: Int32 Other FSharp.Compiler.EditorServices.NavigationItemKind+Tags: Int32 Property FSharp.Compiler.EditorServices.NavigationItemKind+Tags: Int32 Type FSharp.Compiler.EditorServices.NavigationItemKind: Boolean Equals(FSharp.Compiler.EditorServices.NavigationItemKind) +FSharp.Compiler.EditorServices.NavigationItemKind: Boolean Equals(FSharp.Compiler.EditorServices.NavigationItemKind, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.NavigationItemKind: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.NavigationItemKind: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.NavigationItemKind: Boolean IsException @@ -3766,6 +3824,7 @@ FSharp.Compiler.EditorServices.NavigationTopLevelDeclaration: Void .ctor(FSharp. FSharp.Compiler.EditorServices.OpenStatementInsertionPoint+Tags: Int32 Nearest FSharp.Compiler.EditorServices.OpenStatementInsertionPoint+Tags: Int32 TopLevel FSharp.Compiler.EditorServices.OpenStatementInsertionPoint: Boolean Equals(FSharp.Compiler.EditorServices.OpenStatementInsertionPoint) +FSharp.Compiler.EditorServices.OpenStatementInsertionPoint: Boolean Equals(FSharp.Compiler.EditorServices.OpenStatementInsertionPoint, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.OpenStatementInsertionPoint: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.OpenStatementInsertionPoint: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.OpenStatementInsertionPoint: Boolean IsNearest @@ -3813,6 +3872,7 @@ FSharp.Compiler.EditorServices.ParsedInput: Microsoft.FSharp.Core.FSharpOption`1 FSharp.Compiler.EditorServices.ParsedInput: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.Text.Position,System.Boolean]] TryFindExpressionASTLeftOfDotLeftOfCursor(FSharp.Compiler.Text.Position, FSharp.Compiler.Syntax.ParsedInput) FSharp.Compiler.EditorServices.ParsedInput: System.String[] GetFullNameOfSmallestModuleOrNamespaceAtPoint(FSharp.Compiler.Text.Position, FSharp.Compiler.Syntax.ParsedInput) FSharp.Compiler.EditorServices.PartialLongName: Boolean Equals(FSharp.Compiler.EditorServices.PartialLongName) +FSharp.Compiler.EditorServices.PartialLongName: Boolean Equals(FSharp.Compiler.EditorServices.PartialLongName, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.PartialLongName: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.PartialLongName: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.PartialLongName: FSharp.Compiler.EditorServices.PartialLongName Empty(Int32) @@ -3853,6 +3913,7 @@ FSharp.Compiler.EditorServices.PatternContext+UnionCaseFieldIdentifier: FSharp.C FSharp.Compiler.EditorServices.PatternContext+UnionCaseFieldIdentifier: Microsoft.FSharp.Collections.FSharpList`1[System.String] get_referencedFields() FSharp.Compiler.EditorServices.PatternContext+UnionCaseFieldIdentifier: Microsoft.FSharp.Collections.FSharpList`1[System.String] referencedFields FSharp.Compiler.EditorServices.PatternContext: Boolean Equals(FSharp.Compiler.EditorServices.PatternContext) +FSharp.Compiler.EditorServices.PatternContext: Boolean Equals(FSharp.Compiler.EditorServices.PatternContext, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.PatternContext: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.PatternContext: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.PatternContext: Boolean IsNamedUnionCaseField @@ -3906,6 +3967,7 @@ FSharp.Compiler.EditorServices.RecordContext+Tags: Int32 Declaration FSharp.Compiler.EditorServices.RecordContext+Tags: Int32 Empty FSharp.Compiler.EditorServices.RecordContext+Tags: Int32 New FSharp.Compiler.EditorServices.RecordContext: Boolean Equals(FSharp.Compiler.EditorServices.RecordContext) +FSharp.Compiler.EditorServices.RecordContext: Boolean Equals(FSharp.Compiler.EditorServices.RecordContext, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.RecordContext: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.RecordContext: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.RecordContext: Boolean IsConstructor @@ -3940,6 +4002,7 @@ FSharp.Compiler.EditorServices.ScopeKind+Tags: Int32 NestedModule FSharp.Compiler.EditorServices.ScopeKind+Tags: Int32 OpenDeclaration FSharp.Compiler.EditorServices.ScopeKind+Tags: Int32 TopModule FSharp.Compiler.EditorServices.ScopeKind: Boolean Equals(FSharp.Compiler.EditorServices.ScopeKind) +FSharp.Compiler.EditorServices.ScopeKind: Boolean Equals(FSharp.Compiler.EditorServices.ScopeKind, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.ScopeKind: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.ScopeKind: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.ScopeKind: Boolean IsHashDirective @@ -3972,6 +4035,7 @@ FSharp.Compiler.EditorServices.ScopeKind: Int32 Tag FSharp.Compiler.EditorServices.ScopeKind: Int32 get_Tag() FSharp.Compiler.EditorServices.ScopeKind: System.String ToString() FSharp.Compiler.EditorServices.SemanticClassificationItem: Boolean Equals(FSharp.Compiler.EditorServices.SemanticClassificationItem) +FSharp.Compiler.EditorServices.SemanticClassificationItem: Boolean Equals(FSharp.Compiler.EditorServices.SemanticClassificationItem, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.SemanticClassificationItem: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.SemanticClassificationItem: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.SemanticClassificationItem: FSharp.Compiler.EditorServices.SemanticClassificationType Type @@ -4021,6 +4085,7 @@ FSharp.Compiler.EditorServices.SemanticClassificationType: FSharp.Compiler.Edito FSharp.Compiler.EditorServices.SemanticClassificationType: Int32 value__ FSharp.Compiler.EditorServices.SemanticClassificationView: Void ForEach(Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.EditorServices.SemanticClassificationItem,Microsoft.FSharp.Core.Unit]) FSharp.Compiler.EditorServices.SimplifyNames+SimplifiableRange: Boolean Equals(SimplifiableRange) +FSharp.Compiler.EditorServices.SimplifyNames+SimplifiableRange: Boolean Equals(SimplifiableRange, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.SimplifyNames+SimplifiableRange: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.SimplifyNames+SimplifiableRange: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.SimplifyNames+SimplifiableRange: FSharp.Compiler.Text.Range Range @@ -4036,6 +4101,7 @@ FSharp.Compiler.EditorServices.SimplifyNames: Microsoft.FSharp.Control.FSharpAsy FSharp.Compiler.EditorServices.Structure+Collapse+Tags: Int32 Below FSharp.Compiler.EditorServices.Structure+Collapse+Tags: Int32 Same FSharp.Compiler.EditorServices.Structure+Collapse: Boolean Equals(Collapse) +FSharp.Compiler.EditorServices.Structure+Collapse: Boolean Equals(Collapse, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.Structure+Collapse: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.Structure+Collapse: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.Structure+Collapse: Boolean IsBelow @@ -4102,6 +4168,7 @@ FSharp.Compiler.EditorServices.Structure+Scope+Tags: Int32 XmlDocComment FSharp.Compiler.EditorServices.Structure+Scope+Tags: Int32 YieldOrReturn FSharp.Compiler.EditorServices.Structure+Scope+Tags: Int32 YieldOrReturnBang FSharp.Compiler.EditorServices.Structure+Scope: Boolean Equals(Scope) +FSharp.Compiler.EditorServices.Structure+Scope: Boolean Equals(Scope, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.Structure+Scope: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.Structure+Scope: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.Structure+Scope: Boolean IsArrayOrList @@ -4298,6 +4365,7 @@ FSharp.Compiler.EditorServices.Structure+Scope: Scope get_YieldOrReturn() FSharp.Compiler.EditorServices.Structure+Scope: Scope get_YieldOrReturnBang() FSharp.Compiler.EditorServices.Structure+Scope: System.String ToString() FSharp.Compiler.EditorServices.Structure+ScopeRange: Boolean Equals(ScopeRange) +FSharp.Compiler.EditorServices.Structure+ScopeRange: Boolean Equals(ScopeRange, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.Structure+ScopeRange: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.Structure+ScopeRange: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.Structure+ScopeRange: Collapse Collapse @@ -4324,6 +4392,7 @@ FSharp.Compiler.EditorServices.ToolTipElement+Tags: Int32 CompositionError FSharp.Compiler.EditorServices.ToolTipElement+Tags: Int32 Group FSharp.Compiler.EditorServices.ToolTipElement+Tags: Int32 None FSharp.Compiler.EditorServices.ToolTipElement: Boolean Equals(FSharp.Compiler.EditorServices.ToolTipElement) +FSharp.Compiler.EditorServices.ToolTipElement: Boolean Equals(FSharp.Compiler.EditorServices.ToolTipElement, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.ToolTipElement: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.ToolTipElement: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.ToolTipElement: Boolean IsCompositionError @@ -4346,6 +4415,7 @@ FSharp.Compiler.EditorServices.ToolTipElement: Int32 Tag FSharp.Compiler.EditorServices.ToolTipElement: Int32 get_Tag() FSharp.Compiler.EditorServices.ToolTipElement: System.String ToString() FSharp.Compiler.EditorServices.ToolTipElementData: Boolean Equals(FSharp.Compiler.EditorServices.ToolTipElementData) +FSharp.Compiler.EditorServices.ToolTipElementData: Boolean Equals(FSharp.Compiler.EditorServices.ToolTipElementData, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.ToolTipElementData: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.ToolTipElementData: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.ToolTipElementData: FSharp.Compiler.Symbols.FSharpXmlDoc XmlDoc @@ -4365,6 +4435,7 @@ FSharp.Compiler.EditorServices.ToolTipElementData: Microsoft.FSharp.Core.FSharpO FSharp.Compiler.EditorServices.ToolTipElementData: System.String ToString() FSharp.Compiler.EditorServices.ToolTipElementData: Void .ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Symbols.FSharpSymbol], FSharp.Compiler.Text.TaggedText[], FSharp.Compiler.Symbols.FSharpXmlDoc, Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Text.TaggedText[]], Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.TaggedText[]], Microsoft.FSharp.Core.FSharpOption`1[System.String]) FSharp.Compiler.EditorServices.ToolTipText: Boolean Equals(FSharp.Compiler.EditorServices.ToolTipText) +FSharp.Compiler.EditorServices.ToolTipText: Boolean Equals(FSharp.Compiler.EditorServices.ToolTipText, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.ToolTipText: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.ToolTipText: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.ToolTipText: FSharp.Compiler.EditorServices.ToolTipText NewToolTipText(Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.EditorServices.ToolTipElement]) @@ -4376,6 +4447,7 @@ FSharp.Compiler.EditorServices.ToolTipText: Microsoft.FSharp.Collections.FSharpL FSharp.Compiler.EditorServices.ToolTipText: Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.EditorServices.ToolTipElement] get_Item() FSharp.Compiler.EditorServices.ToolTipText: System.String ToString() FSharp.Compiler.EditorServices.TupledArgumentLocation: Boolean Equals(FSharp.Compiler.EditorServices.TupledArgumentLocation) +FSharp.Compiler.EditorServices.TupledArgumentLocation: Boolean Equals(FSharp.Compiler.EditorServices.TupledArgumentLocation, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.TupledArgumentLocation: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.TupledArgumentLocation: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.TupledArgumentLocation: Boolean IsNamedArgument @@ -4387,6 +4459,7 @@ FSharp.Compiler.EditorServices.TupledArgumentLocation: Int32 GetHashCode(System. FSharp.Compiler.EditorServices.TupledArgumentLocation: System.String ToString() FSharp.Compiler.EditorServices.TupledArgumentLocation: Void .ctor(Boolean, FSharp.Compiler.Text.Range) FSharp.Compiler.EditorServices.UnresolvedSymbol: Boolean Equals(FSharp.Compiler.EditorServices.UnresolvedSymbol) +FSharp.Compiler.EditorServices.UnresolvedSymbol: Boolean Equals(FSharp.Compiler.EditorServices.UnresolvedSymbol, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.UnresolvedSymbol: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.UnresolvedSymbol: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.UnresolvedSymbol: Int32 CompareTo(FSharp.Compiler.EditorServices.UnresolvedSymbol) @@ -4407,6 +4480,7 @@ FSharp.Compiler.EditorServices.UnusedOpens: Microsoft.FSharp.Control.FSharpAsync FSharp.Compiler.EditorServices.XmlDocComment: Microsoft.FSharp.Core.FSharpOption`1[System.Int32] IsBlank(System.String) FSharp.Compiler.EditorServices.XmlDocParser: Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.EditorServices.XmlDocable] GetXmlDocables(FSharp.Compiler.Text.ISourceText, FSharp.Compiler.Syntax.ParsedInput) FSharp.Compiler.EditorServices.XmlDocable: Boolean Equals(FSharp.Compiler.EditorServices.XmlDocable) +FSharp.Compiler.EditorServices.XmlDocable: Boolean Equals(FSharp.Compiler.EditorServices.XmlDocable, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.XmlDocable: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.XmlDocable: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.XmlDocable: FSharp.Compiler.EditorServices.XmlDocable NewXmlDocable(Int32, Int32, Microsoft.FSharp.Collections.FSharpList`1[System.String]) @@ -5133,6 +5207,7 @@ FSharp.Compiler.Symbols.FSharpImplementationFileDeclaration+Tags: Int32 Entity FSharp.Compiler.Symbols.FSharpImplementationFileDeclaration+Tags: Int32 InitAction FSharp.Compiler.Symbols.FSharpImplementationFileDeclaration+Tags: Int32 MemberOrFunctionOrValue FSharp.Compiler.Symbols.FSharpImplementationFileDeclaration: Boolean Equals(FSharp.Compiler.Symbols.FSharpImplementationFileDeclaration) +FSharp.Compiler.Symbols.FSharpImplementationFileDeclaration: Boolean Equals(FSharp.Compiler.Symbols.FSharpImplementationFileDeclaration, System.Collections.IEqualityComparer) FSharp.Compiler.Symbols.FSharpImplementationFileDeclaration: Boolean Equals(System.Object) FSharp.Compiler.Symbols.FSharpImplementationFileDeclaration: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Symbols.FSharpImplementationFileDeclaration: Boolean IsEntity @@ -5158,6 +5233,7 @@ FSharp.Compiler.Symbols.FSharpInlineAnnotation+Tags: Int32 AlwaysInline FSharp.Compiler.Symbols.FSharpInlineAnnotation+Tags: Int32 NeverInline FSharp.Compiler.Symbols.FSharpInlineAnnotation+Tags: Int32 OptionalInline FSharp.Compiler.Symbols.FSharpInlineAnnotation: Boolean Equals(FSharp.Compiler.Symbols.FSharpInlineAnnotation) +FSharp.Compiler.Symbols.FSharpInlineAnnotation: Boolean Equals(FSharp.Compiler.Symbols.FSharpInlineAnnotation, System.Collections.IEqualityComparer) FSharp.Compiler.Symbols.FSharpInlineAnnotation: Boolean Equals(System.Object) FSharp.Compiler.Symbols.FSharpInlineAnnotation: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Symbols.FSharpInlineAnnotation: Boolean IsAggressiveInline @@ -5522,6 +5598,7 @@ FSharp.Compiler.Symbols.FSharpXmlDoc+Tags: Int32 FromXmlFile FSharp.Compiler.Symbols.FSharpXmlDoc+Tags: Int32 FromXmlText FSharp.Compiler.Symbols.FSharpXmlDoc+Tags: Int32 None FSharp.Compiler.Symbols.FSharpXmlDoc: Boolean Equals(FSharp.Compiler.Symbols.FSharpXmlDoc) +FSharp.Compiler.Symbols.FSharpXmlDoc: Boolean Equals(FSharp.Compiler.Symbols.FSharpXmlDoc, System.Collections.IEqualityComparer) FSharp.Compiler.Symbols.FSharpXmlDoc: Boolean Equals(System.Object) FSharp.Compiler.Symbols.FSharpXmlDoc: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Symbols.FSharpXmlDoc: Boolean IsFromXmlFile @@ -5550,6 +5627,7 @@ FSharp.Compiler.Syntax.DebugPointAtBinding+Tags: Int32 Yes FSharp.Compiler.Syntax.DebugPointAtBinding+Yes: FSharp.Compiler.Text.Range get_range() FSharp.Compiler.Syntax.DebugPointAtBinding+Yes: FSharp.Compiler.Text.Range range FSharp.Compiler.Syntax.DebugPointAtBinding: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtBinding) +FSharp.Compiler.Syntax.DebugPointAtBinding: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtBinding, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtBinding: Boolean Equals(System.Object) FSharp.Compiler.Syntax.DebugPointAtBinding: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtBinding: Boolean IsNoneAtDo @@ -5584,6 +5662,7 @@ FSharp.Compiler.Syntax.DebugPointAtFinally+Tags: Int32 Yes FSharp.Compiler.Syntax.DebugPointAtFinally+Yes: FSharp.Compiler.Text.Range get_range() FSharp.Compiler.Syntax.DebugPointAtFinally+Yes: FSharp.Compiler.Text.Range range FSharp.Compiler.Syntax.DebugPointAtFinally: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtFinally) +FSharp.Compiler.Syntax.DebugPointAtFinally: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtFinally, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtFinally: Boolean Equals(System.Object) FSharp.Compiler.Syntax.DebugPointAtFinally: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtFinally: Boolean IsNo @@ -5605,6 +5684,7 @@ FSharp.Compiler.Syntax.DebugPointAtFor+Tags: Int32 Yes FSharp.Compiler.Syntax.DebugPointAtFor+Yes: FSharp.Compiler.Text.Range get_range() FSharp.Compiler.Syntax.DebugPointAtFor+Yes: FSharp.Compiler.Text.Range range FSharp.Compiler.Syntax.DebugPointAtFor: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtFor) +FSharp.Compiler.Syntax.DebugPointAtFor: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtFor, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtFor: Boolean Equals(System.Object) FSharp.Compiler.Syntax.DebugPointAtFor: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtFor: Boolean IsNo @@ -5626,6 +5706,7 @@ FSharp.Compiler.Syntax.DebugPointAtInOrTo+Tags: Int32 Yes FSharp.Compiler.Syntax.DebugPointAtInOrTo+Yes: FSharp.Compiler.Text.Range get_range() FSharp.Compiler.Syntax.DebugPointAtInOrTo+Yes: FSharp.Compiler.Text.Range range FSharp.Compiler.Syntax.DebugPointAtInOrTo: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtInOrTo) +FSharp.Compiler.Syntax.DebugPointAtInOrTo: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtInOrTo, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtInOrTo: Boolean Equals(System.Object) FSharp.Compiler.Syntax.DebugPointAtInOrTo: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtInOrTo: Boolean IsNo @@ -5643,6 +5724,7 @@ FSharp.Compiler.Syntax.DebugPointAtInOrTo: Int32 Tag FSharp.Compiler.Syntax.DebugPointAtInOrTo: Int32 get_Tag() FSharp.Compiler.Syntax.DebugPointAtInOrTo: System.String ToString() FSharp.Compiler.Syntax.DebugPointAtLeafExpr: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtLeafExpr) +FSharp.Compiler.Syntax.DebugPointAtLeafExpr: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtLeafExpr, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtLeafExpr: Boolean Equals(System.Object) FSharp.Compiler.Syntax.DebugPointAtLeafExpr: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtLeafExpr: FSharp.Compiler.Syntax.DebugPointAtLeafExpr NewYes(FSharp.Compiler.Text.Range) @@ -5658,6 +5740,7 @@ FSharp.Compiler.Syntax.DebugPointAtSequential+Tags: Int32 SuppressExpr FSharp.Compiler.Syntax.DebugPointAtSequential+Tags: Int32 SuppressNeither FSharp.Compiler.Syntax.DebugPointAtSequential+Tags: Int32 SuppressStmt FSharp.Compiler.Syntax.DebugPointAtSequential: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtSequential) +FSharp.Compiler.Syntax.DebugPointAtSequential: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtSequential, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtSequential: Boolean Equals(System.Object) FSharp.Compiler.Syntax.DebugPointAtSequential: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtSequential: Boolean IsSuppressBoth @@ -5688,6 +5771,7 @@ FSharp.Compiler.Syntax.DebugPointAtSequential: System.String ToString() FSharp.Compiler.Syntax.DebugPointAtTarget+Tags: Int32 No FSharp.Compiler.Syntax.DebugPointAtTarget+Tags: Int32 Yes FSharp.Compiler.Syntax.DebugPointAtTarget: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtTarget) +FSharp.Compiler.Syntax.DebugPointAtTarget: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtTarget, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtTarget: Boolean Equals(System.Object) FSharp.Compiler.Syntax.DebugPointAtTarget: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtTarget: Boolean IsNo @@ -5712,6 +5796,7 @@ FSharp.Compiler.Syntax.DebugPointAtTry+Tags: Int32 Yes FSharp.Compiler.Syntax.DebugPointAtTry+Yes: FSharp.Compiler.Text.Range get_range() FSharp.Compiler.Syntax.DebugPointAtTry+Yes: FSharp.Compiler.Text.Range range FSharp.Compiler.Syntax.DebugPointAtTry: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtTry) +FSharp.Compiler.Syntax.DebugPointAtTry: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtTry, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtTry: Boolean Equals(System.Object) FSharp.Compiler.Syntax.DebugPointAtTry: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtTry: Boolean IsNo @@ -5733,6 +5818,7 @@ FSharp.Compiler.Syntax.DebugPointAtWhile+Tags: Int32 Yes FSharp.Compiler.Syntax.DebugPointAtWhile+Yes: FSharp.Compiler.Text.Range get_range() FSharp.Compiler.Syntax.DebugPointAtWhile+Yes: FSharp.Compiler.Text.Range range FSharp.Compiler.Syntax.DebugPointAtWhile: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtWhile) +FSharp.Compiler.Syntax.DebugPointAtWhile: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtWhile, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtWhile: Boolean Equals(System.Object) FSharp.Compiler.Syntax.DebugPointAtWhile: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtWhile: Boolean IsNo @@ -5754,6 +5840,7 @@ FSharp.Compiler.Syntax.DebugPointAtWith+Tags: Int32 Yes FSharp.Compiler.Syntax.DebugPointAtWith+Yes: FSharp.Compiler.Text.Range get_range() FSharp.Compiler.Syntax.DebugPointAtWith+Yes: FSharp.Compiler.Text.Range range FSharp.Compiler.Syntax.DebugPointAtWith: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtWith) +FSharp.Compiler.Syntax.DebugPointAtWith: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtWith, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtWith: Boolean Equals(System.Object) FSharp.Compiler.Syntax.DebugPointAtWith: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtWith: Boolean IsNo @@ -6030,6 +6117,7 @@ FSharp.Compiler.Syntax.ParsedSigFileInput: System.String get_fileName() FSharp.Compiler.Syntax.ParserDetail+Tags: Int32 ErrorRecovery FSharp.Compiler.Syntax.ParserDetail+Tags: Int32 Ok FSharp.Compiler.Syntax.ParserDetail: Boolean Equals(FSharp.Compiler.Syntax.ParserDetail) +FSharp.Compiler.Syntax.ParserDetail: Boolean Equals(FSharp.Compiler.Syntax.ParserDetail, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.ParserDetail: Boolean Equals(System.Object) FSharp.Compiler.Syntax.ParserDetail: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.ParserDetail: Boolean IsErrorRecovery @@ -6083,6 +6171,7 @@ FSharp.Compiler.Syntax.QualifiedNameOfFile: System.String Text FSharp.Compiler.Syntax.QualifiedNameOfFile: System.String ToString() FSharp.Compiler.Syntax.QualifiedNameOfFile: System.String get_Text() FSharp.Compiler.Syntax.ScopedPragma: Boolean Equals(FSharp.Compiler.Syntax.ScopedPragma) +FSharp.Compiler.Syntax.ScopedPragma: Boolean Equals(FSharp.Compiler.Syntax.ScopedPragma, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.ScopedPragma: Boolean Equals(System.Object) FSharp.Compiler.Syntax.ScopedPragma: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.ScopedPragma: FSharp.Compiler.Syntax.ScopedPragma NewWarningOff(FSharp.Compiler.Text.Range, Int32) @@ -6096,6 +6185,7 @@ FSharp.Compiler.Syntax.ScopedPragma: Int32 get_warningNumber() FSharp.Compiler.Syntax.ScopedPragma: Int32 warningNumber FSharp.Compiler.Syntax.ScopedPragma: System.String ToString() FSharp.Compiler.Syntax.SeqExprOnly: Boolean Equals(FSharp.Compiler.Syntax.SeqExprOnly) +FSharp.Compiler.Syntax.SeqExprOnly: Boolean Equals(FSharp.Compiler.Syntax.SeqExprOnly, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.SeqExprOnly: Boolean Equals(System.Object) FSharp.Compiler.Syntax.SeqExprOnly: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.SeqExprOnly: Boolean Item @@ -6119,6 +6209,7 @@ FSharp.Compiler.Syntax.SynAccess+Tags: Int32 Internal FSharp.Compiler.Syntax.SynAccess+Tags: Int32 Private FSharp.Compiler.Syntax.SynAccess+Tags: Int32 Public FSharp.Compiler.Syntax.SynAccess: Boolean Equals(FSharp.Compiler.Syntax.SynAccess) +FSharp.Compiler.Syntax.SynAccess: Boolean Equals(FSharp.Compiler.Syntax.SynAccess, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.SynAccess: Boolean Equals(System.Object) FSharp.Compiler.Syntax.SynAccess: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.SynAccess: Boolean IsInternal @@ -6237,6 +6328,7 @@ FSharp.Compiler.Syntax.SynBindingKind+Tags: Int32 Do FSharp.Compiler.Syntax.SynBindingKind+Tags: Int32 Normal FSharp.Compiler.Syntax.SynBindingKind+Tags: Int32 StandaloneExpression FSharp.Compiler.Syntax.SynBindingKind: Boolean Equals(FSharp.Compiler.Syntax.SynBindingKind) +FSharp.Compiler.Syntax.SynBindingKind: Boolean Equals(FSharp.Compiler.Syntax.SynBindingKind, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.SynBindingKind: Boolean Equals(System.Object) FSharp.Compiler.Syntax.SynBindingKind: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.SynBindingKind: Boolean IsDo @@ -6275,6 +6367,7 @@ FSharp.Compiler.Syntax.SynBindingReturnInfo: System.String ToString() FSharp.Compiler.Syntax.SynByteStringKind+Tags: Int32 Regular FSharp.Compiler.Syntax.SynByteStringKind+Tags: Int32 Verbatim FSharp.Compiler.Syntax.SynByteStringKind: Boolean Equals(FSharp.Compiler.Syntax.SynByteStringKind) +FSharp.Compiler.Syntax.SynByteStringKind: Boolean Equals(FSharp.Compiler.Syntax.SynByteStringKind, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.SynByteStringKind: Boolean Equals(System.Object) FSharp.Compiler.Syntax.SynByteStringKind: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.SynByteStringKind: Boolean IsRegular @@ -7910,6 +8003,7 @@ FSharp.Compiler.Syntax.SynMemberKind+Tags: Int32 PropertyGet FSharp.Compiler.Syntax.SynMemberKind+Tags: Int32 PropertyGetSet FSharp.Compiler.Syntax.SynMemberKind+Tags: Int32 PropertySet FSharp.Compiler.Syntax.SynMemberKind: Boolean Equals(FSharp.Compiler.Syntax.SynMemberKind) +FSharp.Compiler.Syntax.SynMemberKind: Boolean Equals(FSharp.Compiler.Syntax.SynMemberKind, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.SynMemberKind: Boolean Equals(System.Object) FSharp.Compiler.Syntax.SynMemberKind: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.SynMemberKind: Boolean IsClassConstructor @@ -8132,6 +8226,7 @@ FSharp.Compiler.Syntax.SynModuleOrNamespaceKind+Tags: Int32 DeclaredNamespace FSharp.Compiler.Syntax.SynModuleOrNamespaceKind+Tags: Int32 GlobalNamespace FSharp.Compiler.Syntax.SynModuleOrNamespaceKind+Tags: Int32 NamedModule FSharp.Compiler.Syntax.SynModuleOrNamespaceKind: Boolean Equals(FSharp.Compiler.Syntax.SynModuleOrNamespaceKind) +FSharp.Compiler.Syntax.SynModuleOrNamespaceKind: Boolean Equals(FSharp.Compiler.Syntax.SynModuleOrNamespaceKind, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.SynModuleOrNamespaceKind: Boolean Equals(System.Object) FSharp.Compiler.Syntax.SynModuleOrNamespaceKind: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.SynModuleOrNamespaceKind: Boolean IsAnonModule @@ -8675,6 +8770,7 @@ FSharp.Compiler.Syntax.SynStringKind+Tags: Int32 Regular FSharp.Compiler.Syntax.SynStringKind+Tags: Int32 TripleQuote FSharp.Compiler.Syntax.SynStringKind+Tags: Int32 Verbatim FSharp.Compiler.Syntax.SynStringKind: Boolean Equals(FSharp.Compiler.Syntax.SynStringKind) +FSharp.Compiler.Syntax.SynStringKind: Boolean Equals(FSharp.Compiler.Syntax.SynStringKind, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.SynStringKind: Boolean Equals(System.Object) FSharp.Compiler.Syntax.SynStringKind: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.SynStringKind: Boolean IsRegular @@ -9638,6 +9734,7 @@ FSharp.Compiler.Syntax.SyntaxVisitorBase`1[T]: Void .ctor() FSharp.Compiler.Syntax.TyparStaticReq+Tags: Int32 HeadType FSharp.Compiler.Syntax.TyparStaticReq+Tags: Int32 None FSharp.Compiler.Syntax.TyparStaticReq: Boolean Equals(FSharp.Compiler.Syntax.TyparStaticReq) +FSharp.Compiler.Syntax.TyparStaticReq: Boolean Equals(FSharp.Compiler.Syntax.TyparStaticReq, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.TyparStaticReq: Boolean Equals(System.Object) FSharp.Compiler.Syntax.TyparStaticReq: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.TyparStaticReq: Boolean IsHeadType @@ -10492,6 +10589,7 @@ FSharp.Compiler.Text.TextTag+Tags: Int32 UnionCase FSharp.Compiler.Text.TextTag+Tags: Int32 UnknownEntity FSharp.Compiler.Text.TextTag+Tags: Int32 UnknownType FSharp.Compiler.Text.TextTag: Boolean Equals(FSharp.Compiler.Text.TextTag) +FSharp.Compiler.Text.TextTag: Boolean Equals(FSharp.Compiler.Text.TextTag, System.Collections.IEqualityComparer) FSharp.Compiler.Text.TextTag: Boolean Equals(System.Object) FSharp.Compiler.Text.TextTag: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Text.TextTag: Boolean IsActivePatternCase @@ -10695,6 +10793,7 @@ FSharp.Compiler.Tokenization.FSharpTokenColorKind: FSharp.Compiler.Tokenization. FSharp.Compiler.Tokenization.FSharpTokenColorKind: FSharp.Compiler.Tokenization.FSharpTokenColorKind UpperIdentifier FSharp.Compiler.Tokenization.FSharpTokenColorKind: Int32 value__ FSharp.Compiler.Tokenization.FSharpTokenInfo: Boolean Equals(FSharp.Compiler.Tokenization.FSharpTokenInfo) +FSharp.Compiler.Tokenization.FSharpTokenInfo: Boolean Equals(FSharp.Compiler.Tokenization.FSharpTokenInfo, System.Collections.IEqualityComparer) FSharp.Compiler.Tokenization.FSharpTokenInfo: Boolean Equals(System.Object) FSharp.Compiler.Tokenization.FSharpTokenInfo: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Tokenization.FSharpTokenInfo: FSharp.Compiler.Tokenization.FSharpTokenCharKind CharClass @@ -10912,6 +11011,7 @@ FSharp.Compiler.Tokenization.FSharpTokenKind+Tags: Int32 With FSharp.Compiler.Tokenization.FSharpTokenKind+Tags: Int32 Yield FSharp.Compiler.Tokenization.FSharpTokenKind+Tags: Int32 YieldBang FSharp.Compiler.Tokenization.FSharpTokenKind: Boolean Equals(FSharp.Compiler.Tokenization.FSharpTokenKind) +FSharp.Compiler.Tokenization.FSharpTokenKind: Boolean Equals(FSharp.Compiler.Tokenization.FSharpTokenKind, System.Collections.IEqualityComparer) FSharp.Compiler.Tokenization.FSharpTokenKind: Boolean Equals(System.Object) FSharp.Compiler.Tokenization.FSharpTokenKind: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Tokenization.FSharpTokenKind: Boolean IsAbstract diff --git a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl index 6c8423483a0..b37d8e1b528 100644 --- a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl +++ b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.SurfaceArea.netstandard20.release.bsl @@ -14,6 +14,7 @@ FSharp.Compiler.AbstractIL.IL+ILArgConvention+Tags: Int32 StdCall FSharp.Compiler.AbstractIL.IL+ILArgConvention+Tags: Int32 ThisCall FSharp.Compiler.AbstractIL.IL+ILArgConvention+Tags: Int32 VarArg FSharp.Compiler.AbstractIL.IL+ILArgConvention: Boolean Equals(ILArgConvention) +FSharp.Compiler.AbstractIL.IL+ILArgConvention: Boolean Equals(ILArgConvention, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILArgConvention: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILArgConvention: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILArgConvention: Boolean IsCDecl @@ -181,6 +182,7 @@ FSharp.Compiler.AbstractIL.IL+ILAttribElem+UInt32: UInt32 get_Item() FSharp.Compiler.AbstractIL.IL+ILAttribElem+UInt64: UInt64 Item FSharp.Compiler.AbstractIL.IL+ILAttribElem+UInt64: UInt64 get_Item() FSharp.Compiler.AbstractIL.IL+ILAttribElem: Boolean Equals(ILAttribElem) +FSharp.Compiler.AbstractIL.IL+ILAttribElem: Boolean Equals(ILAttribElem, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILAttribElem: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILAttribElem: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILAttribElem: Boolean IsArray @@ -275,6 +277,7 @@ FSharp.Compiler.AbstractIL.IL+ILAttribute+Encoded: Microsoft.FSharp.Collections. FSharp.Compiler.AbstractIL.IL+ILAttribute+Tags: Int32 Decoded FSharp.Compiler.AbstractIL.IL+ILAttribute+Tags: Int32 Encoded FSharp.Compiler.AbstractIL.IL+ILAttribute: Boolean Equals(ILAttribute) +FSharp.Compiler.AbstractIL.IL+ILAttribute: Boolean Equals(ILAttribute, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILAttribute: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILAttribute: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILAttribute: Boolean IsDecoded @@ -298,6 +301,7 @@ FSharp.Compiler.AbstractIL.IL+ILAttributes: ILAttribute[] AsArray() FSharp.Compiler.AbstractIL.IL+ILAttributes: Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILAttribute] AsList() FSharp.Compiler.AbstractIL.IL+ILAttributesStored: System.String ToString() FSharp.Compiler.AbstractIL.IL+ILCallingConv: Boolean Equals(ILCallingConv) +FSharp.Compiler.AbstractIL.IL+ILCallingConv: Boolean Equals(ILCallingConv, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILCallingConv: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILCallingConv: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILCallingConv: ILArgConvention Item2 @@ -318,6 +322,7 @@ FSharp.Compiler.AbstractIL.IL+ILCallingConv: Int32 Tag FSharp.Compiler.AbstractIL.IL+ILCallingConv: Int32 get_Tag() FSharp.Compiler.AbstractIL.IL+ILCallingConv: System.String ToString() FSharp.Compiler.AbstractIL.IL+ILCallingSignature: Boolean Equals(ILCallingSignature) +FSharp.Compiler.AbstractIL.IL+ILCallingSignature: Boolean Equals(ILCallingSignature, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILCallingSignature: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILCallingSignature: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILCallingSignature: ILCallingConv CallingConv @@ -361,6 +366,7 @@ FSharp.Compiler.AbstractIL.IL+ILDefaultPInvokeEncoding+Tags: Int32 Ansi FSharp.Compiler.AbstractIL.IL+ILDefaultPInvokeEncoding+Tags: Int32 Auto FSharp.Compiler.AbstractIL.IL+ILDefaultPInvokeEncoding+Tags: Int32 Unicode FSharp.Compiler.AbstractIL.IL+ILDefaultPInvokeEncoding: Boolean Equals(ILDefaultPInvokeEncoding) +FSharp.Compiler.AbstractIL.IL+ILDefaultPInvokeEncoding: Boolean Equals(ILDefaultPInvokeEncoding, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILDefaultPInvokeEncoding: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILDefaultPInvokeEncoding: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILDefaultPInvokeEncoding: Boolean IsAnsi @@ -510,6 +516,7 @@ FSharp.Compiler.AbstractIL.IL+ILFieldInit+UInt64: UInt64 get_Item() FSharp.Compiler.AbstractIL.IL+ILFieldInit+UInt8: Byte Item FSharp.Compiler.AbstractIL.IL+ILFieldInit+UInt8: Byte get_Item() FSharp.Compiler.AbstractIL.IL+ILFieldInit: Boolean Equals(ILFieldInit) +FSharp.Compiler.AbstractIL.IL+ILFieldInit: Boolean Equals(ILFieldInit, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILFieldInit: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILFieldInit: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILFieldInit: Boolean IsBool @@ -579,6 +586,7 @@ FSharp.Compiler.AbstractIL.IL+ILFieldInit: Int32 get_Tag() FSharp.Compiler.AbstractIL.IL+ILFieldInit: System.Object AsObject() FSharp.Compiler.AbstractIL.IL+ILFieldInit: System.String ToString() FSharp.Compiler.AbstractIL.IL+ILFieldRef: Boolean Equals(ILFieldRef) +FSharp.Compiler.AbstractIL.IL+ILFieldRef: Boolean Equals(ILFieldRef, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILFieldRef: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILFieldRef: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILFieldRef: ILType Type @@ -595,6 +603,7 @@ FSharp.Compiler.AbstractIL.IL+ILFieldRef: System.String ToString() FSharp.Compiler.AbstractIL.IL+ILFieldRef: System.String get_Name() FSharp.Compiler.AbstractIL.IL+ILFieldRef: Void .ctor(ILTypeRef, System.String, ILType) FSharp.Compiler.AbstractIL.IL+ILFieldSpec: Boolean Equals(ILFieldSpec) +FSharp.Compiler.AbstractIL.IL+ILFieldSpec: Boolean Equals(ILFieldSpec, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILFieldSpec: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILFieldSpec: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILFieldSpec: ILFieldRef FieldRef @@ -640,6 +649,7 @@ FSharp.Compiler.AbstractIL.IL+ILGenericVariance+Tags: Int32 CoVariant FSharp.Compiler.AbstractIL.IL+ILGenericVariance+Tags: Int32 ContraVariant FSharp.Compiler.AbstractIL.IL+ILGenericVariance+Tags: Int32 NonVariant FSharp.Compiler.AbstractIL.IL+ILGenericVariance: Boolean Equals(ILGenericVariance) +FSharp.Compiler.AbstractIL.IL+ILGenericVariance: Boolean Equals(ILGenericVariance, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILGenericVariance: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILGenericVariance: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILGenericVariance: Boolean IsCoVariant @@ -671,6 +681,7 @@ FSharp.Compiler.AbstractIL.IL+ILMemberAccess+Tags: Int32 FamilyOrAssembly FSharp.Compiler.AbstractIL.IL+ILMemberAccess+Tags: Int32 Private FSharp.Compiler.AbstractIL.IL+ILMemberAccess+Tags: Int32 Public FSharp.Compiler.AbstractIL.IL+ILMemberAccess: Boolean Equals(ILMemberAccess) +FSharp.Compiler.AbstractIL.IL+ILMemberAccess: Boolean Equals(ILMemberAccess, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILMemberAccess: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILMemberAccess: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILMemberAccess: Boolean IsAssembly @@ -801,6 +812,7 @@ FSharp.Compiler.AbstractIL.IL+ILMethodDefs: Microsoft.FSharp.Collections.FSharpL FSharp.Compiler.AbstractIL.IL+ILMethodDefs: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILMethodDef] TryFindInstanceByNameAndCallingSignature(System.String, ILCallingSignature) FSharp.Compiler.AbstractIL.IL+ILMethodDefs: System.Collections.Generic.IDictionary`2[System.String,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILMethodDef]] CreateDictionary(ILMethodDef[]) FSharp.Compiler.AbstractIL.IL+ILMethodImplDef: Boolean Equals(ILMethodImplDef) +FSharp.Compiler.AbstractIL.IL+ILMethodImplDef: Boolean Equals(ILMethodImplDef, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILMethodImplDef: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILMethodImplDef: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILMethodImplDef: ILMethodSpec OverrideBy @@ -1005,6 +1017,7 @@ FSharp.Compiler.AbstractIL.IL+ILNativeType+Tags: Int32 UInt64 FSharp.Compiler.AbstractIL.IL+ILNativeType+Tags: Int32 VariantBool FSharp.Compiler.AbstractIL.IL+ILNativeType+Tags: Int32 Void FSharp.Compiler.AbstractIL.IL+ILNativeType: Boolean Equals(ILNativeType) +FSharp.Compiler.AbstractIL.IL+ILNativeType: Boolean Equals(ILNativeType, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILNativeType: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILNativeType: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILNativeType: Boolean IsANSIBSTR @@ -1250,6 +1263,7 @@ FSharp.Compiler.AbstractIL.IL+ILPropertyDef: System.String get_Name() FSharp.Compiler.AbstractIL.IL+ILPropertyDef: Void .ctor(System.String, System.Reflection.PropertyAttributes, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILMethodRef], Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILMethodRef], ILThisConvention, ILType, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILFieldInit], Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType], ILAttributes) FSharp.Compiler.AbstractIL.IL+ILPropertyDefs: System.String ToString() FSharp.Compiler.AbstractIL.IL+ILReferences: Boolean Equals(ILReferences) +FSharp.Compiler.AbstractIL.IL+ILReferences: Boolean Equals(ILReferences, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILReferences: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILReferences: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILReferences: ILAssemblyRef[] AssemblyReferences @@ -1292,6 +1306,7 @@ FSharp.Compiler.AbstractIL.IL+ILScopeRef+Tags: Int32 Local FSharp.Compiler.AbstractIL.IL+ILScopeRef+Tags: Int32 Module FSharp.Compiler.AbstractIL.IL+ILScopeRef+Tags: Int32 PrimaryAssembly FSharp.Compiler.AbstractIL.IL+ILScopeRef: Boolean Equals(ILScopeRef) +FSharp.Compiler.AbstractIL.IL+ILScopeRef: Boolean Equals(ILScopeRef, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILScopeRef: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILScopeRef: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILScopeRef: Boolean IsAssembly @@ -1346,6 +1361,7 @@ FSharp.Compiler.AbstractIL.IL+ILThisConvention+Tags: Int32 Instance FSharp.Compiler.AbstractIL.IL+ILThisConvention+Tags: Int32 InstanceExplicit FSharp.Compiler.AbstractIL.IL+ILThisConvention+Tags: Int32 Static FSharp.Compiler.AbstractIL.IL+ILThisConvention: Boolean Equals(ILThisConvention) +FSharp.Compiler.AbstractIL.IL+ILThisConvention: Boolean Equals(ILThisConvention, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILThisConvention: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILThisConvention: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILThisConvention: Boolean IsInstance @@ -1401,6 +1417,7 @@ FSharp.Compiler.AbstractIL.IL+ILType+TypeVar: UInt16 get_Item() FSharp.Compiler.AbstractIL.IL+ILType+Value: ILTypeSpec Item FSharp.Compiler.AbstractIL.IL+ILType+Value: ILTypeSpec get_Item() FSharp.Compiler.AbstractIL.IL+ILType: Boolean Equals(ILType) +FSharp.Compiler.AbstractIL.IL+ILType: Boolean Equals(ILType, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILType: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILType: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILType: Boolean IsArray @@ -1529,6 +1546,7 @@ FSharp.Compiler.AbstractIL.IL+ILTypeDefAccess+Tags: Int32 Nested FSharp.Compiler.AbstractIL.IL+ILTypeDefAccess+Tags: Int32 Private FSharp.Compiler.AbstractIL.IL+ILTypeDefAccess+Tags: Int32 Public FSharp.Compiler.AbstractIL.IL+ILTypeDefAccess: Boolean Equals(ILTypeDefAccess) +FSharp.Compiler.AbstractIL.IL+ILTypeDefAccess: Boolean Equals(ILTypeDefAccess, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILTypeDefAccess: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILTypeDefAccess: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILTypeDefAccess: Boolean IsNested @@ -1558,6 +1576,7 @@ FSharp.Compiler.AbstractIL.IL+ILTypeDefKind+Tags: Int32 Enum FSharp.Compiler.AbstractIL.IL+ILTypeDefKind+Tags: Int32 Interface FSharp.Compiler.AbstractIL.IL+ILTypeDefKind+Tags: Int32 ValueType FSharp.Compiler.AbstractIL.IL+ILTypeDefKind: Boolean Equals(ILTypeDefKind) +FSharp.Compiler.AbstractIL.IL+ILTypeDefKind: Boolean Equals(ILTypeDefKind, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILTypeDefKind: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILTypeDefKind: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILTypeDefKind: Boolean IsClass @@ -1597,6 +1616,7 @@ FSharp.Compiler.AbstractIL.IL+ILTypeDefLayout+Tags: Int32 Auto FSharp.Compiler.AbstractIL.IL+ILTypeDefLayout+Tags: Int32 Explicit FSharp.Compiler.AbstractIL.IL+ILTypeDefLayout+Tags: Int32 Sequential FSharp.Compiler.AbstractIL.IL+ILTypeDefLayout: Boolean Equals(ILTypeDefLayout) +FSharp.Compiler.AbstractIL.IL+ILTypeDefLayout: Boolean Equals(ILTypeDefLayout, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILTypeDefLayout: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILTypeDefLayout: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILTypeDefLayout: Boolean IsAuto @@ -1624,6 +1644,7 @@ FSharp.Compiler.AbstractIL.IL+ILTypeDefs: System.Collections.Generic.IDictionary FSharp.Compiler.AbstractIL.IL+ILTypeInit+Tags: Int32 BeforeField FSharp.Compiler.AbstractIL.IL+ILTypeInit+Tags: Int32 OnAny FSharp.Compiler.AbstractIL.IL+ILTypeInit: Boolean Equals(ILTypeInit) +FSharp.Compiler.AbstractIL.IL+ILTypeInit: Boolean Equals(ILTypeInit, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILTypeInit: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILTypeInit: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILTypeInit: Boolean IsBeforeField @@ -1682,6 +1703,7 @@ FSharp.Compiler.AbstractIL.IL+ILTypeSpec: System.String ToString() FSharp.Compiler.AbstractIL.IL+ILTypeSpec: System.String get_FullName() FSharp.Compiler.AbstractIL.IL+ILTypeSpec: System.String get_Name() FSharp.Compiler.AbstractIL.IL+ILVersionInfo: Boolean Equals(ILVersionInfo) +FSharp.Compiler.AbstractIL.IL+ILVersionInfo: Boolean Equals(ILVersionInfo, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILVersionInfo: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+ILVersionInfo: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+ILVersionInfo: Int32 CompareTo(ILVersionInfo) @@ -1709,6 +1731,7 @@ FSharp.Compiler.AbstractIL.IL+MethodBody+Tags: Int32 Native FSharp.Compiler.AbstractIL.IL+MethodBody+Tags: Int32 NotAvailable FSharp.Compiler.AbstractIL.IL+MethodBody+Tags: Int32 PInvoke FSharp.Compiler.AbstractIL.IL+MethodBody: Boolean Equals(MethodBody) +FSharp.Compiler.AbstractIL.IL+MethodBody: Boolean Equals(MethodBody, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+MethodBody: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+MethodBody: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+MethodBody: Boolean IsAbstract @@ -1744,6 +1767,7 @@ FSharp.Compiler.AbstractIL.IL+PublicKey+PublicKeyToken: Byte[] get_Item() FSharp.Compiler.AbstractIL.IL+PublicKey+Tags: Int32 PublicKey FSharp.Compiler.AbstractIL.IL+PublicKey+Tags: Int32 PublicKeyToken FSharp.Compiler.AbstractIL.IL+PublicKey: Boolean Equals(PublicKey) +FSharp.Compiler.AbstractIL.IL+PublicKey: Boolean Equals(PublicKey, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+PublicKey: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.IL+PublicKey: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.IL+PublicKey: Boolean IsKey @@ -1894,6 +1918,7 @@ FSharp.Compiler.AbstractIL.ILBinaryReader+ILReaderOptions: Void .ctor(Microsoft. FSharp.Compiler.AbstractIL.ILBinaryReader+MetadataOnlyFlag+Tags: Int32 No FSharp.Compiler.AbstractIL.ILBinaryReader+MetadataOnlyFlag+Tags: Int32 Yes FSharp.Compiler.AbstractIL.ILBinaryReader+MetadataOnlyFlag: Boolean Equals(MetadataOnlyFlag) +FSharp.Compiler.AbstractIL.ILBinaryReader+MetadataOnlyFlag: Boolean Equals(MetadataOnlyFlag, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.ILBinaryReader+MetadataOnlyFlag: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.ILBinaryReader+MetadataOnlyFlag: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.ILBinaryReader+MetadataOnlyFlag: Boolean IsNo @@ -1916,6 +1941,7 @@ FSharp.Compiler.AbstractIL.ILBinaryReader+MetadataOnlyFlag: System.String ToStri FSharp.Compiler.AbstractIL.ILBinaryReader+ReduceMemoryFlag+Tags: Int32 No FSharp.Compiler.AbstractIL.ILBinaryReader+ReduceMemoryFlag+Tags: Int32 Yes FSharp.Compiler.AbstractIL.ILBinaryReader+ReduceMemoryFlag: Boolean Equals(ReduceMemoryFlag) +FSharp.Compiler.AbstractIL.ILBinaryReader+ReduceMemoryFlag: Boolean Equals(ReduceMemoryFlag, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.ILBinaryReader+ReduceMemoryFlag: Boolean Equals(System.Object) FSharp.Compiler.AbstractIL.ILBinaryReader+ReduceMemoryFlag: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.AbstractIL.ILBinaryReader+ReduceMemoryFlag: Boolean IsNo @@ -1972,6 +1998,7 @@ FSharp.Compiler.CodeAnalysis.FSharpCheckFileAnswer+Succeeded: FSharp.Compiler.Co FSharp.Compiler.CodeAnalysis.FSharpCheckFileAnswer+Tags: Int32 Aborted FSharp.Compiler.CodeAnalysis.FSharpCheckFileAnswer+Tags: Int32 Succeeded FSharp.Compiler.CodeAnalysis.FSharpCheckFileAnswer: Boolean Equals(FSharp.Compiler.CodeAnalysis.FSharpCheckFileAnswer) +FSharp.Compiler.CodeAnalysis.FSharpCheckFileAnswer: Boolean Equals(FSharp.Compiler.CodeAnalysis.FSharpCheckFileAnswer, System.Collections.IEqualityComparer) FSharp.Compiler.CodeAnalysis.FSharpCheckFileAnswer: Boolean Equals(System.Object) FSharp.Compiler.CodeAnalysis.FSharpCheckFileAnswer: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.CodeAnalysis.FSharpCheckFileAnswer: Boolean IsAborted @@ -2125,6 +2152,7 @@ FSharp.Compiler.CodeAnalysis.FSharpParseFileResults: System.String[] get_Depende FSharp.Compiler.CodeAnalysis.FSharpParsingOptions: Boolean ApplyLineDirectives FSharp.Compiler.CodeAnalysis.FSharpParsingOptions: Boolean CompilingFSharpCore FSharp.Compiler.CodeAnalysis.FSharpParsingOptions: Boolean Equals(FSharp.Compiler.CodeAnalysis.FSharpParsingOptions) +FSharp.Compiler.CodeAnalysis.FSharpParsingOptions: Boolean Equals(FSharp.Compiler.CodeAnalysis.FSharpParsingOptions, System.Collections.IEqualityComparer) FSharp.Compiler.CodeAnalysis.FSharpParsingOptions: Boolean Equals(System.Object) FSharp.Compiler.CodeAnalysis.FSharpParsingOptions: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.CodeAnalysis.FSharpParsingOptions: Boolean IsExe @@ -2160,6 +2188,7 @@ FSharp.Compiler.CodeAnalysis.FSharpProjectContext: FSharp.Compiler.Symbols.FShar FSharp.Compiler.CodeAnalysis.FSharpProjectContext: FSharp.Compiler.Symbols.FSharpAccessibilityRights get_AccessibilityRights() FSharp.Compiler.CodeAnalysis.FSharpProjectContext: Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Symbols.FSharpAssembly] GetReferencedAssemblies() FSharp.Compiler.CodeAnalysis.FSharpProjectOptions: Boolean Equals(FSharp.Compiler.CodeAnalysis.FSharpProjectOptions) +FSharp.Compiler.CodeAnalysis.FSharpProjectOptions: Boolean Equals(FSharp.Compiler.CodeAnalysis.FSharpProjectOptions, System.Collections.IEqualityComparer) FSharp.Compiler.CodeAnalysis.FSharpProjectOptions: Boolean Equals(System.Object) FSharp.Compiler.CodeAnalysis.FSharpProjectOptions: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.CodeAnalysis.FSharpProjectOptions: Boolean IsIncompleteTypeCheckEnvironment @@ -2272,6 +2301,7 @@ FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment+EditingOrCompilation: B FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment+Tags: Int32 CompilationAndEvaluation FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment+Tags: Int32 EditingOrCompilation FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment: Boolean Equals(FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment) +FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment: Boolean Equals(FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment, System.Collections.IEqualityComparer) FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment: Boolean Equals(System.Object) FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment: Boolean IsCompilationAndEvaluation @@ -2291,6 +2321,7 @@ FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment: Int32 GetHashCode(Syst FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment: Int32 Tag FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment: Int32 get_Tag() FSharp.Compiler.CodeAnalysis.LegacyResolutionEnvironment: System.String ToString() +FSharp.Compiler.CodeAnalysis.LegacyResolutionFailure: Boolean Equals(System.Exception, System.Collections.IEqualityComparer) FSharp.Compiler.CodeAnalysis.LegacyResolutionFailure: Boolean Equals(System.Object) FSharp.Compiler.CodeAnalysis.LegacyResolutionFailure: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.CodeAnalysis.LegacyResolutionFailure: Int32 GetHashCode() @@ -2320,6 +2351,7 @@ FSharp.Compiler.CodeAnalysis.ProjectSnapshot+FSharpFileSnapshot: System.String g FSharp.Compiler.CodeAnalysis.ProjectSnapshot+FSharpFileSnapshot: System.Threading.Tasks.Task`1[FSharp.Compiler.Text.ISourceTextNew] GetSource() FSharp.Compiler.CodeAnalysis.ProjectSnapshot+FSharpFileSnapshot: Void .ctor(System.String, System.String, Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,System.Threading.Tasks.Task`1[FSharp.Compiler.Text.ISourceTextNew]]) FSharp.Compiler.CodeAnalysis.ProjectSnapshot+FSharpProjectIdentifier: Boolean Equals(FSharpProjectIdentifier) +FSharp.Compiler.CodeAnalysis.ProjectSnapshot+FSharpProjectIdentifier: Boolean Equals(FSharpProjectIdentifier, System.Collections.IEqualityComparer) FSharp.Compiler.CodeAnalysis.ProjectSnapshot+FSharpProjectIdentifier: Boolean Equals(System.Object) FSharp.Compiler.CodeAnalysis.ProjectSnapshot+FSharpProjectIdentifier: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.CodeAnalysis.ProjectSnapshot+FSharpProjectIdentifier: FSharpProjectIdentifier NewFSharpProjectIdentifier(System.String, System.String) @@ -2407,6 +2439,7 @@ FSharp.Compiler.CodeAnalysis.ProjectSnapshot+FSharpReferencedProjectSnapshot: Sy FSharp.Compiler.CodeAnalysis.ProjectSnapshot+FSharpReferencedProjectSnapshot: System.String ToString() FSharp.Compiler.CodeAnalysis.ProjectSnapshot+FSharpReferencedProjectSnapshot: System.String get_OutputFile() FSharp.Compiler.CodeAnalysis.ProjectSnapshot+ReferenceOnDisk: Boolean Equals(ReferenceOnDisk) +FSharp.Compiler.CodeAnalysis.ProjectSnapshot+ReferenceOnDisk: Boolean Equals(ReferenceOnDisk, System.Collections.IEqualityComparer) FSharp.Compiler.CodeAnalysis.ProjectSnapshot+ReferenceOnDisk: Boolean Equals(System.Object) FSharp.Compiler.CodeAnalysis.ProjectSnapshot+ReferenceOnDisk: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.CodeAnalysis.ProjectSnapshot+ReferenceOnDisk: Int32 CompareTo(ReferenceOnDisk) @@ -2452,6 +2485,7 @@ FSharp.Compiler.DependencyManager.DependencyProvider: Void ClearResultsCache(Sys FSharp.Compiler.DependencyManager.ErrorReportType+Tags: Int32 Error FSharp.Compiler.DependencyManager.ErrorReportType+Tags: Int32 Warning FSharp.Compiler.DependencyManager.ErrorReportType: Boolean Equals(FSharp.Compiler.DependencyManager.ErrorReportType) +FSharp.Compiler.DependencyManager.ErrorReportType: Boolean Equals(FSharp.Compiler.DependencyManager.ErrorReportType, System.Collections.IEqualityComparer) FSharp.Compiler.DependencyManager.ErrorReportType: Boolean Equals(System.Object) FSharp.Compiler.DependencyManager.ErrorReportType: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.DependencyManager.ErrorReportType: Boolean IsError @@ -2533,6 +2567,7 @@ FSharp.Compiler.Diagnostics.ExtendedData+DiagnosticContextInfo+Tags: Int32 Seque FSharp.Compiler.Diagnostics.ExtendedData+DiagnosticContextInfo+Tags: Int32 TupleInRecordFields FSharp.Compiler.Diagnostics.ExtendedData+DiagnosticContextInfo+Tags: Int32 YieldInComputationExpression FSharp.Compiler.Diagnostics.ExtendedData+DiagnosticContextInfo: Boolean Equals(DiagnosticContextInfo) +FSharp.Compiler.Diagnostics.ExtendedData+DiagnosticContextInfo: Boolean Equals(DiagnosticContextInfo, System.Collections.IEqualityComparer) FSharp.Compiler.Diagnostics.ExtendedData+DiagnosticContextInfo: Boolean Equals(System.Object) FSharp.Compiler.Diagnostics.ExtendedData+DiagnosticContextInfo: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Diagnostics.ExtendedData+DiagnosticContextInfo: Boolean IsCollectionElement @@ -2666,6 +2701,7 @@ FSharp.Compiler.Diagnostics.FSharpDiagnosticKind+Tags: Int32 AddIndexerDot FSharp.Compiler.Diagnostics.FSharpDiagnosticKind+Tags: Int32 RemoveIndexerDot FSharp.Compiler.Diagnostics.FSharpDiagnosticKind+Tags: Int32 ReplaceWithSuggestion FSharp.Compiler.Diagnostics.FSharpDiagnosticKind: Boolean Equals(FSharp.Compiler.Diagnostics.FSharpDiagnosticKind) +FSharp.Compiler.Diagnostics.FSharpDiagnosticKind: Boolean Equals(FSharp.Compiler.Diagnostics.FSharpDiagnosticKind, System.Collections.IEqualityComparer) FSharp.Compiler.Diagnostics.FSharpDiagnosticKind: Boolean Equals(System.Object) FSharp.Compiler.Diagnostics.FSharpDiagnosticKind: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Diagnostics.FSharpDiagnosticKind: Boolean IsAddIndexerDot @@ -2691,6 +2727,7 @@ FSharp.Compiler.Diagnostics.FSharpDiagnosticKind: Int32 get_Tag() FSharp.Compiler.Diagnostics.FSharpDiagnosticKind: System.String ToString() FSharp.Compiler.Diagnostics.FSharpDiagnosticOptions: Boolean CheckXmlDocs FSharp.Compiler.Diagnostics.FSharpDiagnosticOptions: Boolean Equals(FSharp.Compiler.Diagnostics.FSharpDiagnosticOptions) +FSharp.Compiler.Diagnostics.FSharpDiagnosticOptions: Boolean Equals(FSharp.Compiler.Diagnostics.FSharpDiagnosticOptions, System.Collections.IEqualityComparer) FSharp.Compiler.Diagnostics.FSharpDiagnosticOptions: Boolean Equals(System.Object) FSharp.Compiler.Diagnostics.FSharpDiagnosticOptions: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Diagnostics.FSharpDiagnosticOptions: Boolean GlobalWarnAsError @@ -2720,6 +2757,7 @@ FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity+Tags: Int32 Hidden FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity+Tags: Int32 Info FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity+Tags: Int32 Warning FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity: Boolean Equals(FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity) +FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity: Boolean Equals(FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity, System.Collections.IEqualityComparer) FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity: Boolean Equals(System.Object) FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity: Boolean IsError @@ -2752,6 +2790,7 @@ FSharp.Compiler.EditorServices.AssemblyContent: Microsoft.FSharp.Collections.FSh FSharp.Compiler.EditorServices.AssemblyContentType+Tags: Int32 Full FSharp.Compiler.EditorServices.AssemblyContentType+Tags: Int32 Public FSharp.Compiler.EditorServices.AssemblyContentType: Boolean Equals(FSharp.Compiler.EditorServices.AssemblyContentType) +FSharp.Compiler.EditorServices.AssemblyContentType: Boolean Equals(FSharp.Compiler.EditorServices.AssemblyContentType, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.AssemblyContentType: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.AssemblyContentType: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.AssemblyContentType: Boolean IsFull @@ -2820,6 +2859,7 @@ FSharp.Compiler.EditorServices.CompletionContext+Tags: Int32 Type FSharp.Compiler.EditorServices.CompletionContext+Tags: Int32 TypeAbbreviationOrSingleCaseUnion FSharp.Compiler.EditorServices.CompletionContext+Tags: Int32 UnionCaseFieldsDeclaration FSharp.Compiler.EditorServices.CompletionContext: Boolean Equals(FSharp.Compiler.EditorServices.CompletionContext) +FSharp.Compiler.EditorServices.CompletionContext: Boolean Equals(FSharp.Compiler.EditorServices.CompletionContext, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.CompletionContext: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.CompletionContext: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.CompletionContext: Boolean IsAttributeApplication @@ -2887,6 +2927,7 @@ FSharp.Compiler.EditorServices.CompletionItemKind+Tags: Int32 Other FSharp.Compiler.EditorServices.CompletionItemKind+Tags: Int32 Property FSharp.Compiler.EditorServices.CompletionItemKind+Tags: Int32 SuggestedName FSharp.Compiler.EditorServices.CompletionItemKind: Boolean Equals(FSharp.Compiler.EditorServices.CompletionItemKind) +FSharp.Compiler.EditorServices.CompletionItemKind: Boolean Equals(FSharp.Compiler.EditorServices.CompletionItemKind, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.CompletionItemKind: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.CompletionItemKind: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.CompletionItemKind: Boolean IsArgument @@ -2974,6 +3015,7 @@ FSharp.Compiler.EditorServices.EntityKind+Tags: Int32 FunctionOrValue FSharp.Compiler.EditorServices.EntityKind+Tags: Int32 Module FSharp.Compiler.EditorServices.EntityKind+Tags: Int32 Type FSharp.Compiler.EditorServices.EntityKind: Boolean Equals(FSharp.Compiler.EditorServices.EntityKind) +FSharp.Compiler.EditorServices.EntityKind: Boolean Equals(FSharp.Compiler.EditorServices.EntityKind, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.EntityKind: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.EntityKind: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.EntityKind: Boolean IsAttribute @@ -3024,6 +3066,7 @@ FSharp.Compiler.EditorServices.FSharpGlyph+Tags: Int32 Typedef FSharp.Compiler.EditorServices.FSharpGlyph+Tags: Int32 Union FSharp.Compiler.EditorServices.FSharpGlyph+Tags: Int32 Variable FSharp.Compiler.EditorServices.FSharpGlyph: Boolean Equals(FSharp.Compiler.EditorServices.FSharpGlyph) +FSharp.Compiler.EditorServices.FSharpGlyph: Boolean Equals(FSharp.Compiler.EditorServices.FSharpGlyph, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.FSharpGlyph: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.FSharpGlyph: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.FSharpGlyph: Boolean IsClass @@ -3170,6 +3213,7 @@ FSharp.Compiler.EditorServices.FindDeclExternalSymbol+Tags: Int32 Type FSharp.Compiler.EditorServices.FindDeclExternalSymbol+Type: System.String fullName FSharp.Compiler.EditorServices.FindDeclExternalSymbol+Type: System.String get_fullName() FSharp.Compiler.EditorServices.FindDeclExternalSymbol: Boolean Equals(FSharp.Compiler.EditorServices.FindDeclExternalSymbol) +FSharp.Compiler.EditorServices.FindDeclExternalSymbol: Boolean Equals(FSharp.Compiler.EditorServices.FindDeclExternalSymbol, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.FindDeclExternalSymbol: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.FindDeclExternalSymbol: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.FindDeclExternalSymbol: Boolean IsConstructor @@ -3220,6 +3264,7 @@ FSharp.Compiler.EditorServices.FindDeclExternalType+Type: System.String get_full FSharp.Compiler.EditorServices.FindDeclExternalType+TypeVar: System.String get_typeName() FSharp.Compiler.EditorServices.FindDeclExternalType+TypeVar: System.String typeName FSharp.Compiler.EditorServices.FindDeclExternalType: Boolean Equals(FSharp.Compiler.EditorServices.FindDeclExternalType) +FSharp.Compiler.EditorServices.FindDeclExternalType: Boolean Equals(FSharp.Compiler.EditorServices.FindDeclExternalType, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.FindDeclExternalType: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.FindDeclExternalType: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.FindDeclExternalType: Boolean IsArray @@ -3258,6 +3303,7 @@ FSharp.Compiler.EditorServices.FindDeclFailureReason+Tags: Int32 Unknown FSharp.Compiler.EditorServices.FindDeclFailureReason+Unknown: System.String get_message() FSharp.Compiler.EditorServices.FindDeclFailureReason+Unknown: System.String message FSharp.Compiler.EditorServices.FindDeclFailureReason: Boolean Equals(FSharp.Compiler.EditorServices.FindDeclFailureReason) +FSharp.Compiler.EditorServices.FindDeclFailureReason: Boolean Equals(FSharp.Compiler.EditorServices.FindDeclFailureReason, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.FindDeclFailureReason: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.FindDeclFailureReason: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.FindDeclFailureReason: Boolean IsNoSourceCode @@ -3297,6 +3343,7 @@ FSharp.Compiler.EditorServices.FindDeclResult+Tags: Int32 DeclFound FSharp.Compiler.EditorServices.FindDeclResult+Tags: Int32 DeclNotFound FSharp.Compiler.EditorServices.FindDeclResult+Tags: Int32 ExternalDecl FSharp.Compiler.EditorServices.FindDeclResult: Boolean Equals(FSharp.Compiler.EditorServices.FindDeclResult) +FSharp.Compiler.EditorServices.FindDeclResult: Boolean Equals(FSharp.Compiler.EditorServices.FindDeclResult, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.FindDeclResult: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.FindDeclResult: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.FindDeclResult: Boolean IsDeclFound @@ -3323,6 +3370,7 @@ FSharp.Compiler.EditorServices.InheritanceContext+Tags: Int32 Class FSharp.Compiler.EditorServices.InheritanceContext+Tags: Int32 Interface FSharp.Compiler.EditorServices.InheritanceContext+Tags: Int32 Unknown FSharp.Compiler.EditorServices.InheritanceContext: Boolean Equals(FSharp.Compiler.EditorServices.InheritanceContext) +FSharp.Compiler.EditorServices.InheritanceContext: Boolean Equals(FSharp.Compiler.EditorServices.InheritanceContext, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.InheritanceContext: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.InheritanceContext: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.InheritanceContext: Boolean IsClass @@ -3347,6 +3395,7 @@ FSharp.Compiler.EditorServices.InheritanceContext: Int32 Tag FSharp.Compiler.EditorServices.InheritanceContext: Int32 get_Tag() FSharp.Compiler.EditorServices.InheritanceContext: System.String ToString() FSharp.Compiler.EditorServices.InsertionContext: Boolean Equals(FSharp.Compiler.EditorServices.InsertionContext) +FSharp.Compiler.EditorServices.InsertionContext: Boolean Equals(FSharp.Compiler.EditorServices.InsertionContext, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.InsertionContext: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.InsertionContext: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.InsertionContext: FSharp.Compiler.EditorServices.ScopeKind ScopeKind @@ -3358,6 +3407,7 @@ FSharp.Compiler.EditorServices.InsertionContext: Int32 GetHashCode(System.Collec FSharp.Compiler.EditorServices.InsertionContext: System.String ToString() FSharp.Compiler.EditorServices.InsertionContext: Void .ctor(FSharp.Compiler.EditorServices.ScopeKind, FSharp.Compiler.Text.Position) FSharp.Compiler.EditorServices.InsertionContextEntity: Boolean Equals(FSharp.Compiler.EditorServices.InsertionContextEntity) +FSharp.Compiler.EditorServices.InsertionContextEntity: Boolean Equals(FSharp.Compiler.EditorServices.InsertionContextEntity, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.InsertionContextEntity: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.InsertionContextEntity: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.InsertionContextEntity: Int32 CompareTo(FSharp.Compiler.EditorServices.InsertionContextEntity) @@ -3413,6 +3463,7 @@ FSharp.Compiler.EditorServices.InterfaceStubGenerator: System.String FormatInter FSharp.Compiler.EditorServices.LookupType+Tags: Int32 Fuzzy FSharp.Compiler.EditorServices.LookupType+Tags: Int32 Precise FSharp.Compiler.EditorServices.LookupType: Boolean Equals(FSharp.Compiler.EditorServices.LookupType) +FSharp.Compiler.EditorServices.LookupType: Boolean Equals(FSharp.Compiler.EditorServices.LookupType, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.LookupType: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.LookupType: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.LookupType: Boolean IsFuzzy @@ -3433,6 +3484,7 @@ FSharp.Compiler.EditorServices.LookupType: Int32 Tag FSharp.Compiler.EditorServices.LookupType: Int32 get_Tag() FSharp.Compiler.EditorServices.LookupType: System.String ToString() FSharp.Compiler.EditorServices.MaybeUnresolvedIdent: Boolean Equals(FSharp.Compiler.EditorServices.MaybeUnresolvedIdent) +FSharp.Compiler.EditorServices.MaybeUnresolvedIdent: Boolean Equals(FSharp.Compiler.EditorServices.MaybeUnresolvedIdent, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.MaybeUnresolvedIdent: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.MaybeUnresolvedIdent: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.MaybeUnresolvedIdent: Boolean Resolved @@ -3473,6 +3525,7 @@ FSharp.Compiler.EditorServices.MethodGroupItemParameter: System.String Parameter FSharp.Compiler.EditorServices.MethodGroupItemParameter: System.String get_CanonicalTypeTextForSorting() FSharp.Compiler.EditorServices.MethodGroupItemParameter: System.String get_ParameterName() FSharp.Compiler.EditorServices.ModuleKind: Boolean Equals(FSharp.Compiler.EditorServices.ModuleKind) +FSharp.Compiler.EditorServices.ModuleKind: Boolean Equals(FSharp.Compiler.EditorServices.ModuleKind, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.ModuleKind: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.ModuleKind: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.ModuleKind: Boolean HasModuleSuffix @@ -3507,6 +3560,7 @@ FSharp.Compiler.EditorServices.NavigableContainerType+Tags: Int32 Module FSharp.Compiler.EditorServices.NavigableContainerType+Tags: Int32 Namespace FSharp.Compiler.EditorServices.NavigableContainerType+Tags: Int32 Type FSharp.Compiler.EditorServices.NavigableContainerType: Boolean Equals(FSharp.Compiler.EditorServices.NavigableContainerType) +FSharp.Compiler.EditorServices.NavigableContainerType: Boolean Equals(FSharp.Compiler.EditorServices.NavigableContainerType, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.NavigableContainerType: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.NavigableContainerType: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.NavigableContainerType: Boolean IsException @@ -3539,6 +3593,7 @@ FSharp.Compiler.EditorServices.NavigableContainerType: Int32 Tag FSharp.Compiler.EditorServices.NavigableContainerType: Int32 get_Tag() FSharp.Compiler.EditorServices.NavigableContainerType: System.String ToString() FSharp.Compiler.EditorServices.NavigableItem: Boolean Equals(FSharp.Compiler.EditorServices.NavigableItem) +FSharp.Compiler.EditorServices.NavigableItem: Boolean Equals(FSharp.Compiler.EditorServices.NavigableItem, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.NavigableItem: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.NavigableItem: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.NavigableItem: Boolean IsSignature @@ -3569,6 +3624,7 @@ FSharp.Compiler.EditorServices.NavigableItemKind+Tags: Int32 Property FSharp.Compiler.EditorServices.NavigableItemKind+Tags: Int32 Type FSharp.Compiler.EditorServices.NavigableItemKind+Tags: Int32 UnionCase FSharp.Compiler.EditorServices.NavigableItemKind: Boolean Equals(FSharp.Compiler.EditorServices.NavigableItemKind) +FSharp.Compiler.EditorServices.NavigableItemKind: Boolean Equals(FSharp.Compiler.EditorServices.NavigableItemKind, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.NavigableItemKind: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.NavigableItemKind: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.NavigableItemKind: Boolean IsConstructor @@ -3635,6 +3691,7 @@ FSharp.Compiler.EditorServices.NavigationEntityKind+Tags: Int32 Namespace FSharp.Compiler.EditorServices.NavigationEntityKind+Tags: Int32 Record FSharp.Compiler.EditorServices.NavigationEntityKind+Tags: Int32 Union FSharp.Compiler.EditorServices.NavigationEntityKind: Boolean Equals(FSharp.Compiler.EditorServices.NavigationEntityKind) +FSharp.Compiler.EditorServices.NavigationEntityKind: Boolean Equals(FSharp.Compiler.EditorServices.NavigationEntityKind, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.NavigationEntityKind: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.NavigationEntityKind: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.NavigationEntityKind: Boolean IsClass @@ -3708,6 +3765,7 @@ FSharp.Compiler.EditorServices.NavigationItemKind+Tags: Int32 Other FSharp.Compiler.EditorServices.NavigationItemKind+Tags: Int32 Property FSharp.Compiler.EditorServices.NavigationItemKind+Tags: Int32 Type FSharp.Compiler.EditorServices.NavigationItemKind: Boolean Equals(FSharp.Compiler.EditorServices.NavigationItemKind) +FSharp.Compiler.EditorServices.NavigationItemKind: Boolean Equals(FSharp.Compiler.EditorServices.NavigationItemKind, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.NavigationItemKind: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.NavigationItemKind: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.NavigationItemKind: Boolean IsException @@ -3766,6 +3824,7 @@ FSharp.Compiler.EditorServices.NavigationTopLevelDeclaration: Void .ctor(FSharp. FSharp.Compiler.EditorServices.OpenStatementInsertionPoint+Tags: Int32 Nearest FSharp.Compiler.EditorServices.OpenStatementInsertionPoint+Tags: Int32 TopLevel FSharp.Compiler.EditorServices.OpenStatementInsertionPoint: Boolean Equals(FSharp.Compiler.EditorServices.OpenStatementInsertionPoint) +FSharp.Compiler.EditorServices.OpenStatementInsertionPoint: Boolean Equals(FSharp.Compiler.EditorServices.OpenStatementInsertionPoint, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.OpenStatementInsertionPoint: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.OpenStatementInsertionPoint: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.OpenStatementInsertionPoint: Boolean IsNearest @@ -3813,6 +3872,7 @@ FSharp.Compiler.EditorServices.ParsedInput: Microsoft.FSharp.Core.FSharpOption`1 FSharp.Compiler.EditorServices.ParsedInput: Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.Text.Position,System.Boolean]] TryFindExpressionASTLeftOfDotLeftOfCursor(FSharp.Compiler.Text.Position, FSharp.Compiler.Syntax.ParsedInput) FSharp.Compiler.EditorServices.ParsedInput: System.String[] GetFullNameOfSmallestModuleOrNamespaceAtPoint(FSharp.Compiler.Text.Position, FSharp.Compiler.Syntax.ParsedInput) FSharp.Compiler.EditorServices.PartialLongName: Boolean Equals(FSharp.Compiler.EditorServices.PartialLongName) +FSharp.Compiler.EditorServices.PartialLongName: Boolean Equals(FSharp.Compiler.EditorServices.PartialLongName, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.PartialLongName: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.PartialLongName: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.PartialLongName: FSharp.Compiler.EditorServices.PartialLongName Empty(Int32) @@ -3853,6 +3913,7 @@ FSharp.Compiler.EditorServices.PatternContext+UnionCaseFieldIdentifier: FSharp.C FSharp.Compiler.EditorServices.PatternContext+UnionCaseFieldIdentifier: Microsoft.FSharp.Collections.FSharpList`1[System.String] get_referencedFields() FSharp.Compiler.EditorServices.PatternContext+UnionCaseFieldIdentifier: Microsoft.FSharp.Collections.FSharpList`1[System.String] referencedFields FSharp.Compiler.EditorServices.PatternContext: Boolean Equals(FSharp.Compiler.EditorServices.PatternContext) +FSharp.Compiler.EditorServices.PatternContext: Boolean Equals(FSharp.Compiler.EditorServices.PatternContext, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.PatternContext: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.PatternContext: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.PatternContext: Boolean IsNamedUnionCaseField @@ -3906,6 +3967,7 @@ FSharp.Compiler.EditorServices.RecordContext+Tags: Int32 Declaration FSharp.Compiler.EditorServices.RecordContext+Tags: Int32 Empty FSharp.Compiler.EditorServices.RecordContext+Tags: Int32 New FSharp.Compiler.EditorServices.RecordContext: Boolean Equals(FSharp.Compiler.EditorServices.RecordContext) +FSharp.Compiler.EditorServices.RecordContext: Boolean Equals(FSharp.Compiler.EditorServices.RecordContext, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.RecordContext: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.RecordContext: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.RecordContext: Boolean IsConstructor @@ -3940,6 +4002,7 @@ FSharp.Compiler.EditorServices.ScopeKind+Tags: Int32 NestedModule FSharp.Compiler.EditorServices.ScopeKind+Tags: Int32 OpenDeclaration FSharp.Compiler.EditorServices.ScopeKind+Tags: Int32 TopModule FSharp.Compiler.EditorServices.ScopeKind: Boolean Equals(FSharp.Compiler.EditorServices.ScopeKind) +FSharp.Compiler.EditorServices.ScopeKind: Boolean Equals(FSharp.Compiler.EditorServices.ScopeKind, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.ScopeKind: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.ScopeKind: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.ScopeKind: Boolean IsHashDirective @@ -3972,6 +4035,7 @@ FSharp.Compiler.EditorServices.ScopeKind: Int32 Tag FSharp.Compiler.EditorServices.ScopeKind: Int32 get_Tag() FSharp.Compiler.EditorServices.ScopeKind: System.String ToString() FSharp.Compiler.EditorServices.SemanticClassificationItem: Boolean Equals(FSharp.Compiler.EditorServices.SemanticClassificationItem) +FSharp.Compiler.EditorServices.SemanticClassificationItem: Boolean Equals(FSharp.Compiler.EditorServices.SemanticClassificationItem, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.SemanticClassificationItem: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.SemanticClassificationItem: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.SemanticClassificationItem: FSharp.Compiler.EditorServices.SemanticClassificationType Type @@ -4021,6 +4085,7 @@ FSharp.Compiler.EditorServices.SemanticClassificationType: FSharp.Compiler.Edito FSharp.Compiler.EditorServices.SemanticClassificationType: Int32 value__ FSharp.Compiler.EditorServices.SemanticClassificationView: Void ForEach(Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.EditorServices.SemanticClassificationItem,Microsoft.FSharp.Core.Unit]) FSharp.Compiler.EditorServices.SimplifyNames+SimplifiableRange: Boolean Equals(SimplifiableRange) +FSharp.Compiler.EditorServices.SimplifyNames+SimplifiableRange: Boolean Equals(SimplifiableRange, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.SimplifyNames+SimplifiableRange: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.SimplifyNames+SimplifiableRange: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.SimplifyNames+SimplifiableRange: FSharp.Compiler.Text.Range Range @@ -4036,6 +4101,7 @@ FSharp.Compiler.EditorServices.SimplifyNames: Microsoft.FSharp.Control.FSharpAsy FSharp.Compiler.EditorServices.Structure+Collapse+Tags: Int32 Below FSharp.Compiler.EditorServices.Structure+Collapse+Tags: Int32 Same FSharp.Compiler.EditorServices.Structure+Collapse: Boolean Equals(Collapse) +FSharp.Compiler.EditorServices.Structure+Collapse: Boolean Equals(Collapse, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.Structure+Collapse: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.Structure+Collapse: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.Structure+Collapse: Boolean IsBelow @@ -4102,6 +4168,7 @@ FSharp.Compiler.EditorServices.Structure+Scope+Tags: Int32 XmlDocComment FSharp.Compiler.EditorServices.Structure+Scope+Tags: Int32 YieldOrReturn FSharp.Compiler.EditorServices.Structure+Scope+Tags: Int32 YieldOrReturnBang FSharp.Compiler.EditorServices.Structure+Scope: Boolean Equals(Scope) +FSharp.Compiler.EditorServices.Structure+Scope: Boolean Equals(Scope, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.Structure+Scope: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.Structure+Scope: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.Structure+Scope: Boolean IsArrayOrList @@ -4298,6 +4365,7 @@ FSharp.Compiler.EditorServices.Structure+Scope: Scope get_YieldOrReturn() FSharp.Compiler.EditorServices.Structure+Scope: Scope get_YieldOrReturnBang() FSharp.Compiler.EditorServices.Structure+Scope: System.String ToString() FSharp.Compiler.EditorServices.Structure+ScopeRange: Boolean Equals(ScopeRange) +FSharp.Compiler.EditorServices.Structure+ScopeRange: Boolean Equals(ScopeRange, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.Structure+ScopeRange: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.Structure+ScopeRange: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.Structure+ScopeRange: Collapse Collapse @@ -4324,6 +4392,7 @@ FSharp.Compiler.EditorServices.ToolTipElement+Tags: Int32 CompositionError FSharp.Compiler.EditorServices.ToolTipElement+Tags: Int32 Group FSharp.Compiler.EditorServices.ToolTipElement+Tags: Int32 None FSharp.Compiler.EditorServices.ToolTipElement: Boolean Equals(FSharp.Compiler.EditorServices.ToolTipElement) +FSharp.Compiler.EditorServices.ToolTipElement: Boolean Equals(FSharp.Compiler.EditorServices.ToolTipElement, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.ToolTipElement: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.ToolTipElement: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.ToolTipElement: Boolean IsCompositionError @@ -4346,6 +4415,7 @@ FSharp.Compiler.EditorServices.ToolTipElement: Int32 Tag FSharp.Compiler.EditorServices.ToolTipElement: Int32 get_Tag() FSharp.Compiler.EditorServices.ToolTipElement: System.String ToString() FSharp.Compiler.EditorServices.ToolTipElementData: Boolean Equals(FSharp.Compiler.EditorServices.ToolTipElementData) +FSharp.Compiler.EditorServices.ToolTipElementData: Boolean Equals(FSharp.Compiler.EditorServices.ToolTipElementData, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.ToolTipElementData: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.ToolTipElementData: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.ToolTipElementData: FSharp.Compiler.Symbols.FSharpXmlDoc XmlDoc @@ -4365,6 +4435,7 @@ FSharp.Compiler.EditorServices.ToolTipElementData: Microsoft.FSharp.Core.FSharpO FSharp.Compiler.EditorServices.ToolTipElementData: System.String ToString() FSharp.Compiler.EditorServices.ToolTipElementData: Void .ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Symbols.FSharpSymbol], FSharp.Compiler.Text.TaggedText[], FSharp.Compiler.Symbols.FSharpXmlDoc, Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Text.TaggedText[]], Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.TaggedText[]], Microsoft.FSharp.Core.FSharpOption`1[System.String]) FSharp.Compiler.EditorServices.ToolTipText: Boolean Equals(FSharp.Compiler.EditorServices.ToolTipText) +FSharp.Compiler.EditorServices.ToolTipText: Boolean Equals(FSharp.Compiler.EditorServices.ToolTipText, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.ToolTipText: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.ToolTipText: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.ToolTipText: FSharp.Compiler.EditorServices.ToolTipText NewToolTipText(Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.EditorServices.ToolTipElement]) @@ -4376,6 +4447,7 @@ FSharp.Compiler.EditorServices.ToolTipText: Microsoft.FSharp.Collections.FSharpL FSharp.Compiler.EditorServices.ToolTipText: Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.EditorServices.ToolTipElement] get_Item() FSharp.Compiler.EditorServices.ToolTipText: System.String ToString() FSharp.Compiler.EditorServices.TupledArgumentLocation: Boolean Equals(FSharp.Compiler.EditorServices.TupledArgumentLocation) +FSharp.Compiler.EditorServices.TupledArgumentLocation: Boolean Equals(FSharp.Compiler.EditorServices.TupledArgumentLocation, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.TupledArgumentLocation: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.TupledArgumentLocation: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.TupledArgumentLocation: Boolean IsNamedArgument @@ -4387,6 +4459,7 @@ FSharp.Compiler.EditorServices.TupledArgumentLocation: Int32 GetHashCode(System. FSharp.Compiler.EditorServices.TupledArgumentLocation: System.String ToString() FSharp.Compiler.EditorServices.TupledArgumentLocation: Void .ctor(Boolean, FSharp.Compiler.Text.Range) FSharp.Compiler.EditorServices.UnresolvedSymbol: Boolean Equals(FSharp.Compiler.EditorServices.UnresolvedSymbol) +FSharp.Compiler.EditorServices.UnresolvedSymbol: Boolean Equals(FSharp.Compiler.EditorServices.UnresolvedSymbol, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.UnresolvedSymbol: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.UnresolvedSymbol: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.UnresolvedSymbol: Int32 CompareTo(FSharp.Compiler.EditorServices.UnresolvedSymbol) @@ -4407,6 +4480,7 @@ FSharp.Compiler.EditorServices.UnusedOpens: Microsoft.FSharp.Control.FSharpAsync FSharp.Compiler.EditorServices.XmlDocComment: Microsoft.FSharp.Core.FSharpOption`1[System.Int32] IsBlank(System.String) FSharp.Compiler.EditorServices.XmlDocParser: Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.EditorServices.XmlDocable] GetXmlDocables(FSharp.Compiler.Text.ISourceText, FSharp.Compiler.Syntax.ParsedInput) FSharp.Compiler.EditorServices.XmlDocable: Boolean Equals(FSharp.Compiler.EditorServices.XmlDocable) +FSharp.Compiler.EditorServices.XmlDocable: Boolean Equals(FSharp.Compiler.EditorServices.XmlDocable, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.XmlDocable: Boolean Equals(System.Object) FSharp.Compiler.EditorServices.XmlDocable: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.EditorServices.XmlDocable: FSharp.Compiler.EditorServices.XmlDocable NewXmlDocable(Int32, Int32, Microsoft.FSharp.Collections.FSharpList`1[System.String]) @@ -5133,6 +5207,7 @@ FSharp.Compiler.Symbols.FSharpImplementationFileDeclaration+Tags: Int32 Entity FSharp.Compiler.Symbols.FSharpImplementationFileDeclaration+Tags: Int32 InitAction FSharp.Compiler.Symbols.FSharpImplementationFileDeclaration+Tags: Int32 MemberOrFunctionOrValue FSharp.Compiler.Symbols.FSharpImplementationFileDeclaration: Boolean Equals(FSharp.Compiler.Symbols.FSharpImplementationFileDeclaration) +FSharp.Compiler.Symbols.FSharpImplementationFileDeclaration: Boolean Equals(FSharp.Compiler.Symbols.FSharpImplementationFileDeclaration, System.Collections.IEqualityComparer) FSharp.Compiler.Symbols.FSharpImplementationFileDeclaration: Boolean Equals(System.Object) FSharp.Compiler.Symbols.FSharpImplementationFileDeclaration: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Symbols.FSharpImplementationFileDeclaration: Boolean IsEntity @@ -5158,6 +5233,7 @@ FSharp.Compiler.Symbols.FSharpInlineAnnotation+Tags: Int32 AlwaysInline FSharp.Compiler.Symbols.FSharpInlineAnnotation+Tags: Int32 NeverInline FSharp.Compiler.Symbols.FSharpInlineAnnotation+Tags: Int32 OptionalInline FSharp.Compiler.Symbols.FSharpInlineAnnotation: Boolean Equals(FSharp.Compiler.Symbols.FSharpInlineAnnotation) +FSharp.Compiler.Symbols.FSharpInlineAnnotation: Boolean Equals(FSharp.Compiler.Symbols.FSharpInlineAnnotation, System.Collections.IEqualityComparer) FSharp.Compiler.Symbols.FSharpInlineAnnotation: Boolean Equals(System.Object) FSharp.Compiler.Symbols.FSharpInlineAnnotation: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Symbols.FSharpInlineAnnotation: Boolean IsAggressiveInline @@ -5522,6 +5598,7 @@ FSharp.Compiler.Symbols.FSharpXmlDoc+Tags: Int32 FromXmlFile FSharp.Compiler.Symbols.FSharpXmlDoc+Tags: Int32 FromXmlText FSharp.Compiler.Symbols.FSharpXmlDoc+Tags: Int32 None FSharp.Compiler.Symbols.FSharpXmlDoc: Boolean Equals(FSharp.Compiler.Symbols.FSharpXmlDoc) +FSharp.Compiler.Symbols.FSharpXmlDoc: Boolean Equals(FSharp.Compiler.Symbols.FSharpXmlDoc, System.Collections.IEqualityComparer) FSharp.Compiler.Symbols.FSharpXmlDoc: Boolean Equals(System.Object) FSharp.Compiler.Symbols.FSharpXmlDoc: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Symbols.FSharpXmlDoc: Boolean IsFromXmlFile @@ -5550,6 +5627,7 @@ FSharp.Compiler.Syntax.DebugPointAtBinding+Tags: Int32 Yes FSharp.Compiler.Syntax.DebugPointAtBinding+Yes: FSharp.Compiler.Text.Range get_range() FSharp.Compiler.Syntax.DebugPointAtBinding+Yes: FSharp.Compiler.Text.Range range FSharp.Compiler.Syntax.DebugPointAtBinding: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtBinding) +FSharp.Compiler.Syntax.DebugPointAtBinding: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtBinding, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtBinding: Boolean Equals(System.Object) FSharp.Compiler.Syntax.DebugPointAtBinding: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtBinding: Boolean IsNoneAtDo @@ -5584,6 +5662,7 @@ FSharp.Compiler.Syntax.DebugPointAtFinally+Tags: Int32 Yes FSharp.Compiler.Syntax.DebugPointAtFinally+Yes: FSharp.Compiler.Text.Range get_range() FSharp.Compiler.Syntax.DebugPointAtFinally+Yes: FSharp.Compiler.Text.Range range FSharp.Compiler.Syntax.DebugPointAtFinally: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtFinally) +FSharp.Compiler.Syntax.DebugPointAtFinally: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtFinally, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtFinally: Boolean Equals(System.Object) FSharp.Compiler.Syntax.DebugPointAtFinally: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtFinally: Boolean IsNo @@ -5605,6 +5684,7 @@ FSharp.Compiler.Syntax.DebugPointAtFor+Tags: Int32 Yes FSharp.Compiler.Syntax.DebugPointAtFor+Yes: FSharp.Compiler.Text.Range get_range() FSharp.Compiler.Syntax.DebugPointAtFor+Yes: FSharp.Compiler.Text.Range range FSharp.Compiler.Syntax.DebugPointAtFor: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtFor) +FSharp.Compiler.Syntax.DebugPointAtFor: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtFor, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtFor: Boolean Equals(System.Object) FSharp.Compiler.Syntax.DebugPointAtFor: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtFor: Boolean IsNo @@ -5626,6 +5706,7 @@ FSharp.Compiler.Syntax.DebugPointAtInOrTo+Tags: Int32 Yes FSharp.Compiler.Syntax.DebugPointAtInOrTo+Yes: FSharp.Compiler.Text.Range get_range() FSharp.Compiler.Syntax.DebugPointAtInOrTo+Yes: FSharp.Compiler.Text.Range range FSharp.Compiler.Syntax.DebugPointAtInOrTo: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtInOrTo) +FSharp.Compiler.Syntax.DebugPointAtInOrTo: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtInOrTo, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtInOrTo: Boolean Equals(System.Object) FSharp.Compiler.Syntax.DebugPointAtInOrTo: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtInOrTo: Boolean IsNo @@ -5643,6 +5724,7 @@ FSharp.Compiler.Syntax.DebugPointAtInOrTo: Int32 Tag FSharp.Compiler.Syntax.DebugPointAtInOrTo: Int32 get_Tag() FSharp.Compiler.Syntax.DebugPointAtInOrTo: System.String ToString() FSharp.Compiler.Syntax.DebugPointAtLeafExpr: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtLeafExpr) +FSharp.Compiler.Syntax.DebugPointAtLeafExpr: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtLeafExpr, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtLeafExpr: Boolean Equals(System.Object) FSharp.Compiler.Syntax.DebugPointAtLeafExpr: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtLeafExpr: FSharp.Compiler.Syntax.DebugPointAtLeafExpr NewYes(FSharp.Compiler.Text.Range) @@ -5658,6 +5740,7 @@ FSharp.Compiler.Syntax.DebugPointAtSequential+Tags: Int32 SuppressExpr FSharp.Compiler.Syntax.DebugPointAtSequential+Tags: Int32 SuppressNeither FSharp.Compiler.Syntax.DebugPointAtSequential+Tags: Int32 SuppressStmt FSharp.Compiler.Syntax.DebugPointAtSequential: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtSequential) +FSharp.Compiler.Syntax.DebugPointAtSequential: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtSequential, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtSequential: Boolean Equals(System.Object) FSharp.Compiler.Syntax.DebugPointAtSequential: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtSequential: Boolean IsSuppressBoth @@ -5688,6 +5771,7 @@ FSharp.Compiler.Syntax.DebugPointAtSequential: System.String ToString() FSharp.Compiler.Syntax.DebugPointAtTarget+Tags: Int32 No FSharp.Compiler.Syntax.DebugPointAtTarget+Tags: Int32 Yes FSharp.Compiler.Syntax.DebugPointAtTarget: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtTarget) +FSharp.Compiler.Syntax.DebugPointAtTarget: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtTarget, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtTarget: Boolean Equals(System.Object) FSharp.Compiler.Syntax.DebugPointAtTarget: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtTarget: Boolean IsNo @@ -5712,6 +5796,7 @@ FSharp.Compiler.Syntax.DebugPointAtTry+Tags: Int32 Yes FSharp.Compiler.Syntax.DebugPointAtTry+Yes: FSharp.Compiler.Text.Range get_range() FSharp.Compiler.Syntax.DebugPointAtTry+Yes: FSharp.Compiler.Text.Range range FSharp.Compiler.Syntax.DebugPointAtTry: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtTry) +FSharp.Compiler.Syntax.DebugPointAtTry: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtTry, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtTry: Boolean Equals(System.Object) FSharp.Compiler.Syntax.DebugPointAtTry: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtTry: Boolean IsNo @@ -5733,6 +5818,7 @@ FSharp.Compiler.Syntax.DebugPointAtWhile+Tags: Int32 Yes FSharp.Compiler.Syntax.DebugPointAtWhile+Yes: FSharp.Compiler.Text.Range get_range() FSharp.Compiler.Syntax.DebugPointAtWhile+Yes: FSharp.Compiler.Text.Range range FSharp.Compiler.Syntax.DebugPointAtWhile: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtWhile) +FSharp.Compiler.Syntax.DebugPointAtWhile: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtWhile, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtWhile: Boolean Equals(System.Object) FSharp.Compiler.Syntax.DebugPointAtWhile: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtWhile: Boolean IsNo @@ -5754,6 +5840,7 @@ FSharp.Compiler.Syntax.DebugPointAtWith+Tags: Int32 Yes FSharp.Compiler.Syntax.DebugPointAtWith+Yes: FSharp.Compiler.Text.Range get_range() FSharp.Compiler.Syntax.DebugPointAtWith+Yes: FSharp.Compiler.Text.Range range FSharp.Compiler.Syntax.DebugPointAtWith: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtWith) +FSharp.Compiler.Syntax.DebugPointAtWith: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtWith, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtWith: Boolean Equals(System.Object) FSharp.Compiler.Syntax.DebugPointAtWith: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.DebugPointAtWith: Boolean IsNo @@ -6030,6 +6117,7 @@ FSharp.Compiler.Syntax.ParsedSigFileInput: System.String get_fileName() FSharp.Compiler.Syntax.ParserDetail+Tags: Int32 ErrorRecovery FSharp.Compiler.Syntax.ParserDetail+Tags: Int32 Ok FSharp.Compiler.Syntax.ParserDetail: Boolean Equals(FSharp.Compiler.Syntax.ParserDetail) +FSharp.Compiler.Syntax.ParserDetail: Boolean Equals(FSharp.Compiler.Syntax.ParserDetail, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.ParserDetail: Boolean Equals(System.Object) FSharp.Compiler.Syntax.ParserDetail: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.ParserDetail: Boolean IsErrorRecovery @@ -6083,6 +6171,7 @@ FSharp.Compiler.Syntax.QualifiedNameOfFile: System.String Text FSharp.Compiler.Syntax.QualifiedNameOfFile: System.String ToString() FSharp.Compiler.Syntax.QualifiedNameOfFile: System.String get_Text() FSharp.Compiler.Syntax.ScopedPragma: Boolean Equals(FSharp.Compiler.Syntax.ScopedPragma) +FSharp.Compiler.Syntax.ScopedPragma: Boolean Equals(FSharp.Compiler.Syntax.ScopedPragma, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.ScopedPragma: Boolean Equals(System.Object) FSharp.Compiler.Syntax.ScopedPragma: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.ScopedPragma: FSharp.Compiler.Syntax.ScopedPragma NewWarningOff(FSharp.Compiler.Text.Range, Int32) @@ -6096,6 +6185,7 @@ FSharp.Compiler.Syntax.ScopedPragma: Int32 get_warningNumber() FSharp.Compiler.Syntax.ScopedPragma: Int32 warningNumber FSharp.Compiler.Syntax.ScopedPragma: System.String ToString() FSharp.Compiler.Syntax.SeqExprOnly: Boolean Equals(FSharp.Compiler.Syntax.SeqExprOnly) +FSharp.Compiler.Syntax.SeqExprOnly: Boolean Equals(FSharp.Compiler.Syntax.SeqExprOnly, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.SeqExprOnly: Boolean Equals(System.Object) FSharp.Compiler.Syntax.SeqExprOnly: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.SeqExprOnly: Boolean Item @@ -6119,6 +6209,7 @@ FSharp.Compiler.Syntax.SynAccess+Tags: Int32 Internal FSharp.Compiler.Syntax.SynAccess+Tags: Int32 Private FSharp.Compiler.Syntax.SynAccess+Tags: Int32 Public FSharp.Compiler.Syntax.SynAccess: Boolean Equals(FSharp.Compiler.Syntax.SynAccess) +FSharp.Compiler.Syntax.SynAccess: Boolean Equals(FSharp.Compiler.Syntax.SynAccess, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.SynAccess: Boolean Equals(System.Object) FSharp.Compiler.Syntax.SynAccess: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.SynAccess: Boolean IsInternal @@ -6237,6 +6328,7 @@ FSharp.Compiler.Syntax.SynBindingKind+Tags: Int32 Do FSharp.Compiler.Syntax.SynBindingKind+Tags: Int32 Normal FSharp.Compiler.Syntax.SynBindingKind+Tags: Int32 StandaloneExpression FSharp.Compiler.Syntax.SynBindingKind: Boolean Equals(FSharp.Compiler.Syntax.SynBindingKind) +FSharp.Compiler.Syntax.SynBindingKind: Boolean Equals(FSharp.Compiler.Syntax.SynBindingKind, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.SynBindingKind: Boolean Equals(System.Object) FSharp.Compiler.Syntax.SynBindingKind: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.SynBindingKind: Boolean IsDo @@ -6275,6 +6367,7 @@ FSharp.Compiler.Syntax.SynBindingReturnInfo: System.String ToString() FSharp.Compiler.Syntax.SynByteStringKind+Tags: Int32 Regular FSharp.Compiler.Syntax.SynByteStringKind+Tags: Int32 Verbatim FSharp.Compiler.Syntax.SynByteStringKind: Boolean Equals(FSharp.Compiler.Syntax.SynByteStringKind) +FSharp.Compiler.Syntax.SynByteStringKind: Boolean Equals(FSharp.Compiler.Syntax.SynByteStringKind, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.SynByteStringKind: Boolean Equals(System.Object) FSharp.Compiler.Syntax.SynByteStringKind: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.SynByteStringKind: Boolean IsRegular @@ -7910,6 +8003,7 @@ FSharp.Compiler.Syntax.SynMemberKind+Tags: Int32 PropertyGet FSharp.Compiler.Syntax.SynMemberKind+Tags: Int32 PropertyGetSet FSharp.Compiler.Syntax.SynMemberKind+Tags: Int32 PropertySet FSharp.Compiler.Syntax.SynMemberKind: Boolean Equals(FSharp.Compiler.Syntax.SynMemberKind) +FSharp.Compiler.Syntax.SynMemberKind: Boolean Equals(FSharp.Compiler.Syntax.SynMemberKind, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.SynMemberKind: Boolean Equals(System.Object) FSharp.Compiler.Syntax.SynMemberKind: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.SynMemberKind: Boolean IsClassConstructor @@ -8132,6 +8226,7 @@ FSharp.Compiler.Syntax.SynModuleOrNamespaceKind+Tags: Int32 DeclaredNamespace FSharp.Compiler.Syntax.SynModuleOrNamespaceKind+Tags: Int32 GlobalNamespace FSharp.Compiler.Syntax.SynModuleOrNamespaceKind+Tags: Int32 NamedModule FSharp.Compiler.Syntax.SynModuleOrNamespaceKind: Boolean Equals(FSharp.Compiler.Syntax.SynModuleOrNamespaceKind) +FSharp.Compiler.Syntax.SynModuleOrNamespaceKind: Boolean Equals(FSharp.Compiler.Syntax.SynModuleOrNamespaceKind, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.SynModuleOrNamespaceKind: Boolean Equals(System.Object) FSharp.Compiler.Syntax.SynModuleOrNamespaceKind: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.SynModuleOrNamespaceKind: Boolean IsAnonModule @@ -8675,6 +8770,7 @@ FSharp.Compiler.Syntax.SynStringKind+Tags: Int32 Regular FSharp.Compiler.Syntax.SynStringKind+Tags: Int32 TripleQuote FSharp.Compiler.Syntax.SynStringKind+Tags: Int32 Verbatim FSharp.Compiler.Syntax.SynStringKind: Boolean Equals(FSharp.Compiler.Syntax.SynStringKind) +FSharp.Compiler.Syntax.SynStringKind: Boolean Equals(FSharp.Compiler.Syntax.SynStringKind, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.SynStringKind: Boolean Equals(System.Object) FSharp.Compiler.Syntax.SynStringKind: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.SynStringKind: Boolean IsRegular @@ -9638,6 +9734,7 @@ FSharp.Compiler.Syntax.SyntaxVisitorBase`1[T]: Void .ctor() FSharp.Compiler.Syntax.TyparStaticReq+Tags: Int32 HeadType FSharp.Compiler.Syntax.TyparStaticReq+Tags: Int32 None FSharp.Compiler.Syntax.TyparStaticReq: Boolean Equals(FSharp.Compiler.Syntax.TyparStaticReq) +FSharp.Compiler.Syntax.TyparStaticReq: Boolean Equals(FSharp.Compiler.Syntax.TyparStaticReq, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.TyparStaticReq: Boolean Equals(System.Object) FSharp.Compiler.Syntax.TyparStaticReq: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Syntax.TyparStaticReq: Boolean IsHeadType @@ -10492,6 +10589,7 @@ FSharp.Compiler.Text.TextTag+Tags: Int32 UnionCase FSharp.Compiler.Text.TextTag+Tags: Int32 UnknownEntity FSharp.Compiler.Text.TextTag+Tags: Int32 UnknownType FSharp.Compiler.Text.TextTag: Boolean Equals(FSharp.Compiler.Text.TextTag) +FSharp.Compiler.Text.TextTag: Boolean Equals(FSharp.Compiler.Text.TextTag, System.Collections.IEqualityComparer) FSharp.Compiler.Text.TextTag: Boolean Equals(System.Object) FSharp.Compiler.Text.TextTag: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Text.TextTag: Boolean IsActivePatternCase @@ -10695,6 +10793,7 @@ FSharp.Compiler.Tokenization.FSharpTokenColorKind: FSharp.Compiler.Tokenization. FSharp.Compiler.Tokenization.FSharpTokenColorKind: FSharp.Compiler.Tokenization.FSharpTokenColorKind UpperIdentifier FSharp.Compiler.Tokenization.FSharpTokenColorKind: Int32 value__ FSharp.Compiler.Tokenization.FSharpTokenInfo: Boolean Equals(FSharp.Compiler.Tokenization.FSharpTokenInfo) +FSharp.Compiler.Tokenization.FSharpTokenInfo: Boolean Equals(FSharp.Compiler.Tokenization.FSharpTokenInfo, System.Collections.IEqualityComparer) FSharp.Compiler.Tokenization.FSharpTokenInfo: Boolean Equals(System.Object) FSharp.Compiler.Tokenization.FSharpTokenInfo: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Tokenization.FSharpTokenInfo: FSharp.Compiler.Tokenization.FSharpTokenCharKind CharClass @@ -10912,6 +11011,7 @@ FSharp.Compiler.Tokenization.FSharpTokenKind+Tags: Int32 With FSharp.Compiler.Tokenization.FSharpTokenKind+Tags: Int32 Yield FSharp.Compiler.Tokenization.FSharpTokenKind+Tags: Int32 YieldBang FSharp.Compiler.Tokenization.FSharpTokenKind: Boolean Equals(FSharp.Compiler.Tokenization.FSharpTokenKind) +FSharp.Compiler.Tokenization.FSharpTokenKind: Boolean Equals(FSharp.Compiler.Tokenization.FSharpTokenKind, System.Collections.IEqualityComparer) FSharp.Compiler.Tokenization.FSharpTokenKind: Boolean Equals(System.Object) FSharp.Compiler.Tokenization.FSharpTokenKind: Boolean Equals(System.Object, System.Collections.IEqualityComparer) FSharp.Compiler.Tokenization.FSharpTokenKind: Boolean IsAbstract diff --git a/tests/FSharp.Compiler.Service.Tests/SurfaceArea.fs b/tests/FSharp.Compiler.Service.Tests/SurfaceArea.fs index 0f88afd1d7f..2e09e6cc65d 100644 --- a/tests/FSharp.Compiler.Service.Tests/SurfaceArea.fs +++ b/tests/FSharp.Compiler.Service.Tests/SurfaceArea.fs @@ -2,6 +2,7 @@ namespace Tests.Service.SurfaceArea +open System open System.IO open System.Reflection open NUnit.Framework @@ -34,5 +35,9 @@ type SurfaceAreaTest() = let baseline = Path.Combine(__SOURCE_DIRECTORY__, $"FSharp.Compiler.Service.SurfaceArea.{platform}.{flavor}.bsl") let outFileName = $"FSharp.Compiler.Service.SurfaceArea.{platform}.{flavor}.out" - FSharp.Test.SurfaceArea.verify assembly baseline outFileName + + let realSig = Environment.GetEnvironmentVariable("FSHARP_REALSIG") + match realSig with + | "false" -> Assert.True(true, "Skipping the test, the surface area without real sig differs and doesn't matter.") + | _ -> FSharp.Test.SurfaceArea.verify assembly baseline outFileName diff --git a/tests/FSharp.Core.UnitTests/FSharp.Core.SurfaceArea.netstandard20.debug.bsl b/tests/FSharp.Core.UnitTests/FSharp.Core.SurfaceArea.netstandard20.debug.bsl index f50a8c62300..def2dea16c8 100644 --- a/tests/FSharp.Core.UnitTests/FSharp.Core.SurfaceArea.netstandard20.debug.bsl +++ b/tests/FSharp.Core.UnitTests/FSharp.Core.SurfaceArea.netstandard20.debug.bsl @@ -205,6 +205,7 @@ Microsoft.FSharp.Collections.ComparisonIdentity: System.Collections.Generic.ICom Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: Int32 Cons Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: Int32 Empty Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean Equals(Microsoft.FSharp.Collections.FSharpList`1[T]) +Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean Equals(Microsoft.FSharp.Collections.FSharpList`1[T], System.Collections.IEqualityComparer) Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean IsCons @@ -1015,6 +1016,7 @@ Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: Int32 Choice1Of2 Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: Int32 Choice2Of2 Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) +Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean IsChoice1Of2 @@ -1043,6 +1045,7 @@ Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 Choice1Of3 Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 Choice2Of3 Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 Choice3Of3 Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) +Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean IsChoice1Of3 @@ -1078,6 +1081,7 @@ Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice2Of4 Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice3Of4 Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice4Of4 Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) +Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean IsChoice1Of4 @@ -1120,6 +1124,7 @@ Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice5Of5 Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) +Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 @@ -1169,6 +1174,7 @@ Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice6Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) +Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 @@ -1225,6 +1231,7 @@ Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice5Of Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice7Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) +Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 @@ -1283,6 +1290,7 @@ Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Void .ctor(Int32, Int Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: Int32 None Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: Int32 Some Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpOption`1[T]) +Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpOption`1[T], Microsoft.FSharp.Core.FSharpOption`1[T], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean IsNone @@ -1305,6 +1313,7 @@ Microsoft.FSharp.Core.FSharpOption`1[T]: T Value Microsoft.FSharp.Core.FSharpOption`1[T]: T get_Value() Microsoft.FSharp.Core.FSharpOption`1[T]: Void .ctor(T) Microsoft.FSharp.Core.FSharpRef`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpRef`1[T]) +Microsoft.FSharp.Core.FSharpRef`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpRef`1[T], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpRef`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpRef`1[T]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpRef`1[T]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpRef`1[T]) @@ -1323,6 +1332,7 @@ Microsoft.FSharp.Core.FSharpRef`1[T]: Void set_contents(T) Microsoft.FSharp.Core.FSharpResult`2+Tags[T,TError]: Int32 Error Microsoft.FSharp.Core.FSharpResult`2+Tags[T,TError]: Int32 Ok Microsoft.FSharp.Core.FSharpResult`2[T,TError]: Boolean Equals(Microsoft.FSharp.Core.FSharpResult`2[T,TError]) +Microsoft.FSharp.Core.FSharpResult`2[T,TError]: Boolean Equals(Microsoft.FSharp.Core.FSharpResult`2[T,TError], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpResult`2[T,TError]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpResult`2[T,TError]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpResult`2[T,TError]: Boolean IsError @@ -1348,6 +1358,7 @@ Microsoft.FSharp.Core.FSharpTypeFunc: Void .ctor() Microsoft.FSharp.Core.FSharpValueOption`1+Tags[T]: Int32 ValueNone Microsoft.FSharp.Core.FSharpValueOption`1+Tags[T]: Int32 ValueSome Microsoft.FSharp.Core.FSharpValueOption`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpValueOption`1[T]) +Microsoft.FSharp.Core.FSharpValueOption`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpValueOption`1[T], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpValueOption`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpValueOption`1[T]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpValueOption`1[T]: Boolean IsNone @@ -1544,6 +1555,7 @@ Microsoft.FSharp.Core.LanguagePrimitives: UInt64 ParseUInt64(System.String) Microsoft.FSharp.Core.LanguagePrimitives: UInt64 UInt64WithMeasure(UInt64) Microsoft.FSharp.Core.LanguagePrimitives: UIntPtr UIntPtrWithMeasure(UIntPtr) Microsoft.FSharp.Core.LiteralAttribute: Void .ctor() +Microsoft.FSharp.Core.MatchFailureException: Boolean Equals(System.Exception, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.MatchFailureException: Boolean Equals(System.Object) Microsoft.FSharp.Core.MatchFailureException: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.MatchFailureException: Int32 Data1 diff --git a/tests/FSharp.Core.UnitTests/FSharp.Core.SurfaceArea.netstandard20.release.bsl b/tests/FSharp.Core.UnitTests/FSharp.Core.SurfaceArea.netstandard20.release.bsl index 964805cfa2e..bac32123722 100644 --- a/tests/FSharp.Core.UnitTests/FSharp.Core.SurfaceArea.netstandard20.release.bsl +++ b/tests/FSharp.Core.UnitTests/FSharp.Core.SurfaceArea.netstandard20.release.bsl @@ -205,6 +205,7 @@ Microsoft.FSharp.Collections.ComparisonIdentity: System.Collections.Generic.ICom Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: Int32 Cons Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: Int32 Empty Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean Equals(Microsoft.FSharp.Collections.FSharpList`1[T]) +Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean Equals(Microsoft.FSharp.Collections.FSharpList`1[T], System.Collections.IEqualityComparer) Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean IsCons @@ -1015,6 +1016,7 @@ Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: Int32 Choice1Of2 Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: Int32 Choice2Of2 Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) +Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean IsChoice1Of2 @@ -1043,6 +1045,7 @@ Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 Choice1Of3 Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 Choice2Of3 Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 Choice3Of3 Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) +Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean IsChoice1Of3 @@ -1078,6 +1081,7 @@ Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice2Of4 Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice3Of4 Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice4Of4 Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) +Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean IsChoice1Of4 @@ -1120,6 +1124,7 @@ Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice5Of5 Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) +Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 @@ -1169,6 +1174,7 @@ Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice6Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) +Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 @@ -1225,6 +1231,7 @@ Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice5Of Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice7Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) +Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 @@ -1283,6 +1290,7 @@ Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Void .ctor(Int32, Int Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: Int32 None Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: Int32 Some Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpOption`1[T]) +Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpOption`1[T], Microsoft.FSharp.Core.FSharpOption`1[T], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean IsNone @@ -1305,6 +1313,7 @@ Microsoft.FSharp.Core.FSharpOption`1[T]: T Value Microsoft.FSharp.Core.FSharpOption`1[T]: T get_Value() Microsoft.FSharp.Core.FSharpOption`1[T]: Void .ctor(T) Microsoft.FSharp.Core.FSharpRef`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpRef`1[T]) +Microsoft.FSharp.Core.FSharpRef`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpRef`1[T], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpRef`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpRef`1[T]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpRef`1[T]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpRef`1[T]) @@ -1323,6 +1332,7 @@ Microsoft.FSharp.Core.FSharpRef`1[T]: Void set_contents(T) Microsoft.FSharp.Core.FSharpResult`2+Tags[T,TError]: Int32 Error Microsoft.FSharp.Core.FSharpResult`2+Tags[T,TError]: Int32 Ok Microsoft.FSharp.Core.FSharpResult`2[T,TError]: Boolean Equals(Microsoft.FSharp.Core.FSharpResult`2[T,TError]) +Microsoft.FSharp.Core.FSharpResult`2[T,TError]: Boolean Equals(Microsoft.FSharp.Core.FSharpResult`2[T,TError], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpResult`2[T,TError]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpResult`2[T,TError]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpResult`2[T,TError]: Boolean IsError @@ -1348,6 +1358,7 @@ Microsoft.FSharp.Core.FSharpTypeFunc: Void .ctor() Microsoft.FSharp.Core.FSharpValueOption`1+Tags[T]: Int32 ValueNone Microsoft.FSharp.Core.FSharpValueOption`1+Tags[T]: Int32 ValueSome Microsoft.FSharp.Core.FSharpValueOption`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpValueOption`1[T]) +Microsoft.FSharp.Core.FSharpValueOption`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpValueOption`1[T], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpValueOption`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpValueOption`1[T]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpValueOption`1[T]: Boolean IsNone @@ -1544,6 +1555,7 @@ Microsoft.FSharp.Core.LanguagePrimitives: UInt64 ParseUInt64(System.String) Microsoft.FSharp.Core.LanguagePrimitives: UInt64 UInt64WithMeasure(UInt64) Microsoft.FSharp.Core.LanguagePrimitives: UIntPtr UIntPtrWithMeasure(UIntPtr) Microsoft.FSharp.Core.LiteralAttribute: Void .ctor() +Microsoft.FSharp.Core.MatchFailureException: Boolean Equals(System.Exception, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.MatchFailureException: Boolean Equals(System.Object) Microsoft.FSharp.Core.MatchFailureException: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.MatchFailureException: Int32 Data1 @@ -2545,4 +2557,4 @@ Microsoft.FSharp.Reflection.UnionCaseInfo: System.String Name Microsoft.FSharp.Reflection.UnionCaseInfo: System.String ToString() Microsoft.FSharp.Reflection.UnionCaseInfo: System.String get_Name() Microsoft.FSharp.Reflection.UnionCaseInfo: System.Type DeclaringType -Microsoft.FSharp.Reflection.UnionCaseInfo: System.Type get_DeclaringType() +Microsoft.FSharp.Reflection.UnionCaseInfo: System.Type get_DeclaringType() \ No newline at end of file diff --git a/tests/FSharp.Core.UnitTests/FSharp.Core.SurfaceArea.netstandard21.debug.bsl b/tests/FSharp.Core.UnitTests/FSharp.Core.SurfaceArea.netstandard21.debug.bsl index 9efe28bb17c..5fa4760b53e 100644 --- a/tests/FSharp.Core.UnitTests/FSharp.Core.SurfaceArea.netstandard21.debug.bsl +++ b/tests/FSharp.Core.UnitTests/FSharp.Core.SurfaceArea.netstandard21.debug.bsl @@ -205,6 +205,7 @@ Microsoft.FSharp.Collections.ComparisonIdentity: System.Collections.Generic.ICom Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: Int32 Cons Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: Int32 Empty Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean Equals(Microsoft.FSharp.Collections.FSharpList`1[T]) +Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean Equals(Microsoft.FSharp.Collections.FSharpList`1[T], System.Collections.IEqualityComparer) Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean IsCons @@ -1016,6 +1017,7 @@ Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: Int32 Choice1Of2 Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: Int32 Choice2Of2 Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) +Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean IsChoice1Of2 @@ -1044,6 +1046,7 @@ Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 Choice1Of3 Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 Choice2Of3 Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 Choice3Of3 Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) +Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean IsChoice1Of3 @@ -1079,6 +1082,7 @@ Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice2Of4 Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice3Of4 Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice4Of4 Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) +Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean IsChoice1Of4 @@ -1121,6 +1125,7 @@ Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice5Of5 Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) +Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 @@ -1170,6 +1175,7 @@ Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice6Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) +Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 @@ -1226,6 +1232,7 @@ Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice5Of Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice7Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) +Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 @@ -1284,6 +1291,7 @@ Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Void .ctor(Int32, Int Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: Int32 None Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: Int32 Some Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpOption`1[T]) +Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpOption`1[T], Microsoft.FSharp.Core.FSharpOption`1[T], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean IsNone @@ -1306,6 +1314,7 @@ Microsoft.FSharp.Core.FSharpOption`1[T]: T Value Microsoft.FSharp.Core.FSharpOption`1[T]: T get_Value() Microsoft.FSharp.Core.FSharpOption`1[T]: Void .ctor(T) Microsoft.FSharp.Core.FSharpRef`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpRef`1[T]) +Microsoft.FSharp.Core.FSharpRef`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpRef`1[T], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpRef`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpRef`1[T]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpRef`1[T]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpRef`1[T]) @@ -1324,6 +1333,7 @@ Microsoft.FSharp.Core.FSharpRef`1[T]: Void set_contents(T) Microsoft.FSharp.Core.FSharpResult`2+Tags[T,TError]: Int32 Error Microsoft.FSharp.Core.FSharpResult`2+Tags[T,TError]: Int32 Ok Microsoft.FSharp.Core.FSharpResult`2[T,TError]: Boolean Equals(Microsoft.FSharp.Core.FSharpResult`2[T,TError]) +Microsoft.FSharp.Core.FSharpResult`2[T,TError]: Boolean Equals(Microsoft.FSharp.Core.FSharpResult`2[T,TError], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpResult`2[T,TError]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpResult`2[T,TError]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpResult`2[T,TError]: Boolean IsError @@ -1349,6 +1359,7 @@ Microsoft.FSharp.Core.FSharpTypeFunc: Void .ctor() Microsoft.FSharp.Core.FSharpValueOption`1+Tags[T]: Int32 ValueNone Microsoft.FSharp.Core.FSharpValueOption`1+Tags[T]: Int32 ValueSome Microsoft.FSharp.Core.FSharpValueOption`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpValueOption`1[T]) +Microsoft.FSharp.Core.FSharpValueOption`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpValueOption`1[T], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpValueOption`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpValueOption`1[T]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpValueOption`1[T]: Boolean IsNone @@ -1545,6 +1556,7 @@ Microsoft.FSharp.Core.LanguagePrimitives: UInt64 ParseUInt64(System.String) Microsoft.FSharp.Core.LanguagePrimitives: UInt64 UInt64WithMeasure(UInt64) Microsoft.FSharp.Core.LanguagePrimitives: UIntPtr UIntPtrWithMeasure(UIntPtr) Microsoft.FSharp.Core.LiteralAttribute: Void .ctor() +Microsoft.FSharp.Core.MatchFailureException: Boolean Equals(System.Exception, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.MatchFailureException: Boolean Equals(System.Object) Microsoft.FSharp.Core.MatchFailureException: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.MatchFailureException: Int32 Data1 diff --git a/tests/FSharp.Core.UnitTests/FSharp.Core.SurfaceArea.netstandard21.release.bsl b/tests/FSharp.Core.UnitTests/FSharp.Core.SurfaceArea.netstandard21.release.bsl index eefd052ca17..2d02c4cb1bb 100644 --- a/tests/FSharp.Core.UnitTests/FSharp.Core.SurfaceArea.netstandard21.release.bsl +++ b/tests/FSharp.Core.UnitTests/FSharp.Core.SurfaceArea.netstandard21.release.bsl @@ -205,6 +205,7 @@ Microsoft.FSharp.Collections.ComparisonIdentity: System.Collections.Generic.ICom Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: Int32 Cons Microsoft.FSharp.Collections.FSharpList`1+Tags[T]: Int32 Empty Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean Equals(Microsoft.FSharp.Collections.FSharpList`1[T]) +Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean Equals(Microsoft.FSharp.Collections.FSharpList`1[T], System.Collections.IEqualityComparer) Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Collections.FSharpList`1[T]: Boolean IsCons @@ -1016,6 +1017,7 @@ Microsoft.FSharp.Core.FSharpChoice`2+Choice2Of2[T1,T2]: T2 get_Item() Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: Int32 Choice1Of2 Microsoft.FSharp.Core.FSharpChoice`2+Tags[T1,T2]: Int32 Choice2Of2 Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]) +Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`2[T1,T2], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`2[T1,T2]: Boolean IsChoice1Of2 @@ -1044,6 +1046,7 @@ Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 Choice1Of3 Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 Choice2Of3 Microsoft.FSharp.Core.FSharpChoice`3+Tags[T1,T2,T3]: Int32 Choice3Of3 Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]) +Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`3[T1,T2,T3]: Boolean IsChoice1Of3 @@ -1079,6 +1082,7 @@ Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice2Of4 Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice3Of4 Microsoft.FSharp.Core.FSharpChoice`4+Tags[T1,T2,T3,T4]: Int32 Choice4Of4 Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]) +Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`4[T1,T2,T3,T4]: Boolean IsChoice1Of4 @@ -1121,6 +1125,7 @@ Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice3Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice4Of5 Microsoft.FSharp.Core.FSharpChoice`5+Tags[T1,T2,T3,T4,T5]: Int32 Choice5Of5 Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]) +Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`5[T1,T2,T3,T4,T5]: Boolean IsChoice1Of5 @@ -1170,6 +1175,7 @@ Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice4Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice5Of6 Microsoft.FSharp.Core.FSharpChoice`6+Tags[T1,T2,T3,T4,T5,T6]: Int32 Choice6Of6 Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]) +Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`6[T1,T2,T3,T4,T5,T6]: Boolean IsChoice1Of6 @@ -1226,6 +1232,7 @@ Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice5Of Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice6Of7 Microsoft.FSharp.Core.FSharpChoice`7+Tags[T1,T2,T3,T4,T5,T6,T7]: Int32 Choice7Of7 Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]) +Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpChoice`7[T1,T2,T3,T4,T5,T6,T7]: Boolean IsChoice1Of7 @@ -1284,6 +1291,7 @@ Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute: Void .ctor(Int32, Int Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: Int32 None Microsoft.FSharp.Core.FSharpOption`1+Tags[T]: Int32 Some Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpOption`1[T]) +Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpOption`1[T], Microsoft.FSharp.Core.FSharpOption`1[T], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpOption`1[T]: Boolean IsNone @@ -1306,6 +1314,7 @@ Microsoft.FSharp.Core.FSharpOption`1[T]: T Value Microsoft.FSharp.Core.FSharpOption`1[T]: T get_Value() Microsoft.FSharp.Core.FSharpOption`1[T]: Void .ctor(T) Microsoft.FSharp.Core.FSharpRef`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpRef`1[T]) +Microsoft.FSharp.Core.FSharpRef`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpRef`1[T], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpRef`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpRef`1[T]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpRef`1[T]: Int32 CompareTo(Microsoft.FSharp.Core.FSharpRef`1[T]) @@ -1324,6 +1333,7 @@ Microsoft.FSharp.Core.FSharpRef`1[T]: Void set_contents(T) Microsoft.FSharp.Core.FSharpResult`2+Tags[T,TError]: Int32 Error Microsoft.FSharp.Core.FSharpResult`2+Tags[T,TError]: Int32 Ok Microsoft.FSharp.Core.FSharpResult`2[T,TError]: Boolean Equals(Microsoft.FSharp.Core.FSharpResult`2[T,TError]) +Microsoft.FSharp.Core.FSharpResult`2[T,TError]: Boolean Equals(Microsoft.FSharp.Core.FSharpResult`2[T,TError], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpResult`2[T,TError]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpResult`2[T,TError]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpResult`2[T,TError]: Boolean IsError @@ -1349,6 +1359,7 @@ Microsoft.FSharp.Core.FSharpTypeFunc: Void .ctor() Microsoft.FSharp.Core.FSharpValueOption`1+Tags[T]: Int32 ValueNone Microsoft.FSharp.Core.FSharpValueOption`1+Tags[T]: Int32 ValueSome Microsoft.FSharp.Core.FSharpValueOption`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpValueOption`1[T]) +Microsoft.FSharp.Core.FSharpValueOption`1[T]: Boolean Equals(Microsoft.FSharp.Core.FSharpValueOption`1[T], System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpValueOption`1[T]: Boolean Equals(System.Object) Microsoft.FSharp.Core.FSharpValueOption`1[T]: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.FSharpValueOption`1[T]: Boolean IsNone @@ -1545,6 +1556,7 @@ Microsoft.FSharp.Core.LanguagePrimitives: UInt64 ParseUInt64(System.String) Microsoft.FSharp.Core.LanguagePrimitives: UInt64 UInt64WithMeasure(UInt64) Microsoft.FSharp.Core.LanguagePrimitives: UIntPtr UIntPtrWithMeasure(UIntPtr) Microsoft.FSharp.Core.LiteralAttribute: Void .ctor() +Microsoft.FSharp.Core.MatchFailureException: Boolean Equals(System.Exception, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.MatchFailureException: Boolean Equals(System.Object) Microsoft.FSharp.Core.MatchFailureException: Boolean Equals(System.Object, System.Collections.IEqualityComparer) Microsoft.FSharp.Core.MatchFailureException: Int32 Data1 diff --git a/tests/benchmarks/CompiledCodeBenchmarks/MicroPerf/Equality/ExactEquals.fs b/tests/benchmarks/CompiledCodeBenchmarks/MicroPerf/Equality/ExactEquals.fs new file mode 100644 index 00000000000..b175fe6b8ba --- /dev/null +++ b/tests/benchmarks/CompiledCodeBenchmarks/MicroPerf/Equality/ExactEquals.fs @@ -0,0 +1,132 @@ +namespace Equality + +open BenchmarkDotNet.Attributes + +[] +type Struct(v: int, u: int) = + member _.V = v + member _.U = u + +[] +type Union = Union of int * int + +[] +type Record = { V: int; U: int } + +[] +type GenericStruct<'T>(v: 'T, u: int) = + member _.V = v + member _.U = u + +[] +type GenericRecord<'T> = { V: 'T; U: int } + +[] +type GenericUnion<'T> = GenericUnion of 'T * int + +[] +type TinyStruct(v: int) = + member _.V = v + +[] +type TinyUnion = TinyUnion of int + +[] +type TinyRecord = { V: int } + +[] +type ExactEquals_EqualityTests() = + + [] + member _.Struct() = + Struct(1, 2) = Struct(2, 3) + + [] + member _.StructUnion() = + Union (1, 2) = Union (2, 3) + + [] + member _.StructRecord() = + { V = 1; U = 2 } = { V = 2; U = 3 } + + [] + member _.GenericStruct() = + Struct(1, 2) = Struct(2, 3) + + [] + member _.GenericStructUnion() = + GenericUnion (1, 2) = GenericUnion (2, 3) + + [] + member _.GenericStructRecord() = + { V = 1; U = 2 } = { V = 2; U = 3 } + + [] + member _.TinyStruct() = + TinyStruct 1 = TinyStruct 2 + + [] + member _.TinyStructUnion() = + TinyUnion 1 = TinyUnion 2 + + [] + member _.TinyStructRecord() = + { V = 1 } = { V = 2 } + +[] +type ExactEquals_Fslib() = + + [] + member _.ValueOption_Some() = + ValueSome (1, 2) = ValueSome (2, 3) + + [] + member _.ValueOption_None() = + ValueNone = ValueNone + + [] + member _.Result_Ok() = + Ok (1, 2) = Ok (2, 3) + + [] + member _.Result_Error() = + Error (1, 2) = Error (2, 3) + +[] +type ExactEquals_Arrays() = + + let array = Array.init 1000 (fun n -> Struct(n, n)) + let existingElement = Struct (1, 1) + let nonexistingElement = Struct (-1, -1) + + [] + member _.ArrayContainsExisting() = + array |> Array.contains existingElement + + [] + member _.ArrayContainsNonexisting() = + array |> Array.contains nonexistingElement + + [] + member _.ArrayExistsExisting() = + array |> Array.exists ((=) existingElement) + + [] + member _.ArrayExistsNonexisting() = + array |> Array.exists ((=) nonexistingElement) + + [] + member _.ArrayTryFindExisting() = + array |> Array.tryFind ((=) existingElement) + + [] + member _.ArrayTryFindNonexisting() = + array |> Array.tryFind ((=) nonexistingElement) + + [] + member _.ArrayTryFindIndexExisting() = + array |> Array.tryFindIndex ((=) existingElement) + + [] + member _.ArrayTryFindIndexNonexisting() = + array |> Array.tryFindIndex ((=) nonexistingElement) diff --git a/tests/benchmarks/CompiledCodeBenchmarks/MicroPerf/MicroPerf.fsproj b/tests/benchmarks/CompiledCodeBenchmarks/MicroPerf/MicroPerf.fsproj index 2cbfaf0aaba..2830bcffe41 100644 --- a/tests/benchmarks/CompiledCodeBenchmarks/MicroPerf/MicroPerf.fsproj +++ b/tests/benchmarks/CompiledCodeBenchmarks/MicroPerf/MicroPerf.fsproj @@ -24,6 +24,7 @@ + diff --git a/tests/fsharp/Compiler/CodeGen/EmittedIL/ReferenceAssemblyTests.fs b/tests/fsharp/Compiler/CodeGen/EmittedIL/ReferenceAssemblyTests.fs index 0a932212df8..ddf93122ee3 100644 --- a/tests/fsharp/Compiler/CodeGen/EmittedIL/ReferenceAssemblyTests.fs +++ b/tests/fsharp/Compiler/CodeGen/EmittedIL/ReferenceAssemblyTests.fs @@ -277,6 +277,17 @@ module Nested = IL_0001: throw } + .method public hidebysig instance bool + Equals(class ReferenceAssembly/Nested/Test obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldnull + IL_0001: throw + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed @@ -424,6 +435,17 @@ module Nested = IL_0001: throw } + .method public hidebysig instance bool + Equals(class ReferenceAssembly/Nested/Test obj, + class [runtime]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [runtime]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + + .maxstack 8 + IL_0000: ldnull + IL_0001: throw + } + .method public hidebysig virtual final instance bool Equals(object obj, class [runtime]System.Collections.IEqualityComparer comp) cil managed