From 214ae88406c147dd3a0449c105c4aee0791f872f Mon Sep 17 00:00:00 2001 From: Don Syme Date: Wed, 23 Jun 2021 18:28:08 +0100 Subject: [PATCH 1/7] improve debugging of retail code by not erasing locals and debug points intra-assembly --- src/fsharp/Optimizer.fs | 52 ++++++++++++++++++++++++-------------- src/fsharp/TypedTreeOps.fs | 2 +- 2 files changed, 34 insertions(+), 20 deletions(-) diff --git a/src/fsharp/Optimizer.fs b/src/fsharp/Optimizer.fs index d579077b081..8ced61ab28e 100644 --- a/src/fsharp/Optimizer.fs +++ b/src/fsharp/Optimizer.fs @@ -97,13 +97,13 @@ type ExprValueInfo = | ConstValue of Const * TType - /// CurriedLambdaValue(id, arity, size, lambdaExpression, ty) + /// CurriedLambdaValue(id, arity, size, lambdaExpression, isCrossAssembly, ty) /// /// arities: The number of bunches of untupled args and type args, and /// the number of args in each bunch. NOTE: This include type arguments. /// expr: The value, a lambda term. /// ty: The type of lambda term - | CurriedLambdaValue of id: Unique * arity: int * size: int * value: Expr * TType + | CurriedLambdaValue of id: Unique * arity: int * size: int * lambdaExpr: Expr * isCrossAssembly: bool * lambdaExprTy: TType /// ConstExprValue(size, value) | ConstExprValue of size: int * value: Expr @@ -202,7 +202,7 @@ let rec exprValueInfoL g exprVal = | TupleValue vinfos -> bracketL (exprValueInfosL g vinfos) | RecdValue (_, vinfos) -> braceL (exprValueInfosL g vinfos) | UnionCaseValue (ucr, vinfos) -> unionCaseRefL ucr ^^ bracketL (exprValueInfosL g vinfos) - | CurriedLambdaValue(_lambdaId, _arities, _bsize, expr, _ety) -> wordL (tagText "lam") ++ exprL expr (* (sprintf "lam(size=%d)" bsize) *) + | CurriedLambdaValue(_lambdaId, _arities, _bsize, expr, _isCrossAssembly, _ety) -> wordL (tagText "lam") ++ exprL expr (* (sprintf "lam(size=%d)" bsize) *) | ConstExprValue (_size, x) -> exprL x and exprValueInfosL g vinfos = commaListL (List.map (exprValueInfoL g) (Array.toList vinfos)) @@ -252,7 +252,7 @@ and SizeOfValueInfo x = | TupleValue vinfos | RecdValue (_, vinfos) | UnionCaseValue (_, vinfos) -> 1 + SizeOfValueInfos vinfos - | CurriedLambdaValue(_lambdaId, _arities, _bsize, _expr, _ety) -> 1 + | CurriedLambdaValue _ -> 1 | ConstExprValue (_size, _) -> 1 let [] minDepthForASizeNode = 5 // for small vinfos do not record size info, save space @@ -279,7 +279,7 @@ let BoundValueInfoBySize vinfo = | UnionCaseValue (ucr, vinfos) -> UnionCaseValue (ucr, Array.map (bound (depth-1)) vinfos) | ConstValue _ -> x | UnknownValue -> x - | CurriedLambdaValue(_lambdaId, _arities, _bsize, _expr, _ety) -> x + | CurriedLambdaValue _ -> x | ConstExprValue (_size, _) -> x let maxDepth = 6 (* beware huge constants! *) let trimDepth = 3 @@ -661,7 +661,7 @@ let (|StripConstValue|_|) ev = let (|StripLambdaValue|_|) ev = match stripValue ev with - | CurriedLambdaValue (id, arity, sz, expr, ty) -> Some (id, arity, sz, expr, ty) + | CurriedLambdaValue (id, arity, sz, expr, isCrossAssembly, ty) -> Some (id, arity, sz, expr, isCrossAssembly, ty) | _ -> None let destTupleValue ev = @@ -1064,7 +1064,7 @@ let AbstractLazyModulInfoByHiding isAssemblyBoundary mhi = else ValValue (vref2, detailR) // Check for escape in lambda - | CurriedLambdaValue (_, _, _, expr, _) | ConstExprValue(_, expr) when + | CurriedLambdaValue (_, _, _, expr, _, _) | ConstExprValue(_, expr) when (let fvs = freeInExpr CollectAll expr (isAssemblyBoundary && not (freeVarsAllPublic fvs)) || Zset.exists hiddenVal fvs.FreeLocals || @@ -1158,7 +1158,7 @@ let AbstractExprInfoByVars (boundVars: Val list, boundTyVars) ivalue = ValValue (v2, detailR) // Check for escape in lambda - | CurriedLambdaValue (_, _, _, expr, _) | ConstExprValue(_, expr) when + | CurriedLambdaValue (_, _, _, expr, _, _) | ConstExprValue(_, expr) when (let fvs = freeInExpr (if isNil boundTyVars then CollectLocals else CollectTyparsAndLocals) expr (not (isNil boundVars) && List.exists (Zset.memberOf fvs.FreeLocals) boundVars) || (not (isNil boundTyVars) && List.exists (Zset.memberOf fvs.FreeTyvars.FreeTypars) boundTyVars) || @@ -1207,7 +1207,7 @@ let RemapOptimizationInfo g tmenv = | UnionCaseValue(cspec, vinfos) -> UnionCaseValue (remapUnionCaseRef tmenv.tyconRefRemap cspec, Array.map remapExprInfo vinfos) | SizeValue(_vdepth, vinfo) -> MakeSizedValueInfo (remapExprInfo vinfo) | UnknownValue -> UnknownValue - | CurriedLambdaValue (uniq, arity, sz, expr, ty) -> CurriedLambdaValue (uniq, arity, sz, remapExpr g CloneAll tmenv expr, remapPossibleForallTy g tmenv ty) + | CurriedLambdaValue (uniq, arity, sz, expr, isCrossAssembly, ty) -> CurriedLambdaValue (uniq, arity, sz, remapExpr g CloneAll tmenv expr, isCrossAssembly, remapPossibleForallTy g tmenv ty) | ConstValue (c, ty) -> ConstValue (c, remapPossibleForallTy g tmenv ty) | ConstExprValue (sz, expr) -> ConstExprValue (sz, remapExpr g CloneAll tmenv expr) @@ -2557,6 +2557,17 @@ and OptimizeTraitCall cenv env (traitInfo, args, m) = let argsR, arginfos = OptimizeExprsThenConsiderSplits cenv env args OptimizeExprOpFallback cenv env (TOp.TraitCall traitInfo, [], argsR, m) arginfos UnknownValue +and CopyExprForInlining cenv isCrossAssembly expr m = + if isCrossAssembly then + // Debug points are erased when doing cross-assembly inlining + // Locals are marked compiler generated when doing cross-assembly inlining + expr + |> copyExpr cenv.g CloneAllAndMarkExprValsAsCompilerGenerated + |> remarkExpr m + else + expr + |> copyExpr cenv.g CloneAll + /// Make optimization decisions once we know the optimization information /// for a value and TryOptimizeVal cenv env (vOpt: ValRef option, mustInline, valInfoForVal, m) = @@ -2590,8 +2601,9 @@ and TryOptimizeVal cenv env (vOpt: ValRef option, mustInline, valInfoForVal, m) | ConstExprValue(_size, expr) -> Some (remarkExpr m (copyExpr cenv.g CloneAllAndMarkExprValsAsCompilerGenerated expr)) - | CurriedLambdaValue (_, _, _, expr, _) when mustInline -> - Some (remarkExpr m (copyExpr cenv.g CloneAllAndMarkExprValsAsCompilerGenerated expr)) + | CurriedLambdaValue (_, _, _, expr, isCrossAssembly, _) when mustInline -> + let exprCopy = CopyExprForInlining cenv isCrossAssembly expr m + Some exprCopy | TupleValue _ | UnionCaseValue _ | RecdValue _ when mustInline -> failwith "tuple, union and record values cannot be marked 'inline'" @@ -2887,7 +2899,7 @@ and TryDevirtualizeApplication cenv env (f, tyargs, args, m) = and TryInlineApplication cenv env finfo (tyargs: TType list, args: Expr list, m) = // Considering inlining app match finfo.Info with - | StripLambdaValue (lambdaId, arities, size, f2, f2ty) when + | StripLambdaValue (lambdaId, arities, size, f2, isCrossAssembly, f2ty) when (// Considering inlining lambda cenv.optimizing && cenv.settings.InlineLambdas () && @@ -2948,7 +2960,8 @@ and TryInlineApplication cenv env finfo (tyargs: TType list, args: Expr list, m) // Inlining lambda (* ---------- printf "Inlining lambda near %a = %s\n" outputRange m (showL (exprL f2)) (* JAMES: *) ----------*) - let f2R = remarkExpr m (copyExpr cenv.g CloneAllAndMarkExprValsAsCompilerGenerated f2) + let f2R = CopyExprForInlining cenv isCrossAssembly f2 m + // Optimizing arguments after inlining // REVIEW: this is a cheapshot way of optimizing the arg expressions as well without the restriction of recursive @@ -3086,14 +3099,14 @@ and OptimizeLambdas (vspec: Val option) cenv env topValInfo e ety = // can't inline any values with semi-recursive object references to self or base let valu = match baseValOpt with - | None -> CurriedLambdaValue (lambdaId, arities, bsize, exprR, ety) + | None -> CurriedLambdaValue (lambdaId, arities, bsize, exprR, false, ety) | Some baseVal -> let fvs = freeInExpr CollectLocals bodyR if fvs.UsesMethodLocalConstructs || fvs.FreeLocals.Contains baseVal then UnknownValue else let expr2 = mkMemberLambdas m tps ctorThisValOpt None vsl (bodyR, bodyty) - CurriedLambdaValue (lambdaId, arities, bsize, expr2, ety) + CurriedLambdaValue (lambdaId, arities, bsize, expr2, false, ety) let estimatedSize = match vspec with @@ -3323,7 +3336,7 @@ and OptimizeBinding cenv isRec env (TBind(vref, expr, spBind)) = // Trim out optimization information for expressions that call protected members let rec cut ivalue = match ivalue with - | CurriedLambdaValue (_, arities, size, body, _) -> + | CurriedLambdaValue (_, arities, size, body, _, _) -> if size > (cenv.settings.lambdaInlineThreshold + arities + 2) then // Discarding lambda for large binding UnknownValue @@ -3600,7 +3613,7 @@ let rec p_ExprValueInfo x st = | UnionCaseValue (a, b) -> p_byte 4 st p_tup2 p_ucref (p_array p_ExprValueInfo) (a, b) st - | CurriedLambdaValue (_, b, c, d, e) -> + | CurriedLambdaValue (_, b, c, d, _isCrossAssembly, e) -> p_byte 5 st p_tup4 p_int p_int p_expr p_ty (b, c, d, e) st | ConstExprValue (a, b) -> @@ -3635,11 +3648,12 @@ let rec u_ExprInfo st = | 2 -> u_tup2 u_vref loop st |> (fun (a, b) -> ValValue (a, b)) | 3 -> u_array loop st |> (fun a -> TupleValue a) | 4 -> u_tup2 u_ucref (u_array loop) st |> (fun (a, b) -> UnionCaseValue (a, b)) - | 5 -> u_tup4 u_int u_int u_expr u_ty st |> (fun (b, c, d, e) -> CurriedLambdaValue (newUnique(), b, c, d, e)) + | 5 -> u_tup4 u_int u_int u_expr u_ty st |> (fun (b, c, d, e) -> CurriedLambdaValue (newUnique(), b, c, d, (* isCrossAssembly *) true, e)) | 6 -> u_tup2 u_int u_expr st |> (fun (a, b) -> ConstExprValue (a, b)) | 7 -> u_tup2 u_tcref (u_array loop) st |> (fun (a, b) -> RecdValue (a, b)) | _ -> failwith "loop" - MakeSizedValueInfo (loop st) (* calc size of unpicked ExprValueInfo *) + // calc size of unpicked ExprValueInfo + MakeSizedValueInfo (loop st) and u_ValInfo st = let a, b = u_tup2 u_ExprInfo u_bool st diff --git a/src/fsharp/TypedTreeOps.fs b/src/fsharp/TypedTreeOps.fs index 8ddaa5e7e17..9fd50c3f059 100644 --- a/src/fsharp/TypedTreeOps.fs +++ b/src/fsharp/TypedTreeOps.fs @@ -7539,7 +7539,7 @@ let rec MakeApplicationAndBetaReduceAux g (f, fty, tyargsl: TType list list, arg match f with | Expr.TyLambda (_, tyvs, body, _, bodyty) when tyvs.Length = List.length tyargs -> let tpenv = bindTypars tyvs tyargs emptyTyparInst - let body = remarkExpr m (instExpr g tpenv body) + let body = instExpr g tpenv body let bodyty' = instType tpenv bodyty MakeApplicationAndBetaReduceAux g (body, bodyty', rest, argsl, m) From 0c5298a7ae594889a7d592e98fe5c077e2b8ea71 Mon Sep 17 00:00:00 2001 From: Don Syme Date: Wed, 23 Jun 2021 20:01:09 +0100 Subject: [PATCH 2/7] fix ranges for optimized code --- src/fsharp/DetupleArgs.fs | 4 ++-- src/fsharp/InnerLambdasToTopLevelFuncs.fs | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/fsharp/DetupleArgs.fs b/src/fsharp/DetupleArgs.fs index 2ff48082fa5..609ab4c202f 100644 --- a/src/fsharp/DetupleArgs.fs +++ b/src/fsharp/DetupleArgs.fs @@ -715,7 +715,7 @@ let fixupApp (penv: penv) (fx, fty, tys, args, m) = // Is it a val app, where the val has a transform? match fx with - | Expr.Val (vref, _, m) -> + | Expr.Val (vref, _, vm) -> let f = vref.Deref match hasTransfrom penv f with | Some trans -> @@ -723,7 +723,7 @@ let fixupApp (penv: penv) (fx, fty, tys, args, m) = let callPattern = trans.transformCallPattern let transformedVal = trans.transformedVal let fCty = transformedVal.Type - let fCx = exprForVal m transformedVal + let fCx = exprForVal vm transformedVal (* [[f tps args ]] -> transformedVal tps [[COLLAPSED: args]] *) let env = {prefix = "arg";m = m;eg=penv.g} let bindings = [] diff --git a/src/fsharp/InnerLambdasToTopLevelFuncs.fs b/src/fsharp/InnerLambdasToTopLevelFuncs.fs index 7721d0ccbac..ba968c72a01 100644 --- a/src/fsharp/InnerLambdasToTopLevelFuncs.fs +++ b/src/fsharp/InnerLambdasToTopLevelFuncs.fs @@ -1067,7 +1067,7 @@ module Pass4_RewriteAssembly = // Is it a val app, where the val f is TLR with arity wf? // CLEANUP NOTE: should be using a mkApps to make all applications match fx with - | Expr.Val (fvref: ValRef, _, m) when + | Expr.Val (fvref: ValRef, _, vm) when (Zset.contains fvref.Deref penv.tlrS) && (let wf = Zmap.force fvref.Deref penv.arityM ("TransApp - wf", nameOfVal) IsArityMet fvref wf tys args) -> @@ -1078,9 +1078,9 @@ module Pass4_RewriteAssembly = let envp = Zmap.force fc penv.envPackM ("TransApp - envp", string) let fHat = Zmap.force f penv.fHatM ("TransApp - fHat", nameOfVal) let tys = (List.map mkTyparTy envp.ep_etps) @ tys - let aenvExprs = List.map (exprForVal m) envp.ep_aenvs + let aenvExprs = List.map (exprForVal vm) envp.ep_aenvs let args = aenvExprs @ args - mkApps penv.g ((exprForVal m fHat, fHat.Type), [tys], args, m) (* change, direct fHat call with closure (reqdTypars, aenvs) *) + mkApps penv.g ((exprForVal vm fHat, fHat.Type), [tys], args, m) (* change, direct fHat call with closure (reqdTypars, aenvs) *) | _ -> if isNil tys && isNil args then fx From 7715b447029862672fdb9e9da5eaa2d04d802b49 Mon Sep 17 00:00:00 2001 From: Don Syme Date: Thu, 24 Jun 2021 13:05:06 +0100 Subject: [PATCH 3/7] fix baselines and range for immediate application of inline function --- src/fsharp/Optimizer.fs | 12 +++++++- .../Source/CodeGen/EmittedIL/CompareIL.cmd | 6 ++-- .../Linq101Grouping01.il.bsl | 6 ++-- .../Linq101SetOperators01.il.bsl | 8 ++--- .../EmittedIL/Tuples/OptionalArg01.il.bsl | 30 ++++++++++++------- .../EmittedIL/Tuples/TupleElimination.il.bsl | 14 ++++----- .../Source/Optimizations/CompareIL.cmd | 6 ++-- 7 files changed, 53 insertions(+), 29 deletions(-) diff --git a/src/fsharp/Optimizer.fs b/src/fsharp/Optimizer.fs index 8ced61ab28e..7576eb749ca 100644 --- a/src/fsharp/Optimizer.fs +++ b/src/fsharp/Optimizer.fs @@ -2975,6 +2975,16 @@ and TryInlineApplication cenv env finfo (tyargs: TType list, args: Expr list, m) | _ -> None +/// When optimizing a function in an application, use the whole range including arguments for the range +/// to apply to 'inline' code +and OptimizeFuncInApplication cenv env f0 mWithArgs = + let f0 = stripExpr f0 + match f0 with + | Expr.Val (v, _vFlags, _) -> + OptimizeVal cenv env f0 (v, mWithArgs) + | _ -> + OptimizeExpr cenv env f0 + /// Optimize/analyze an application of a function to type and term arguments and OptimizeApplication cenv env (f0, f0ty, tyargs, args, m) = // trying to devirtualize @@ -2983,7 +2993,7 @@ and OptimizeApplication cenv env (f0, f0ty, tyargs, args, m) = // devirtualized res | None -> - let newf0, finfo = OptimizeExpr cenv env f0 + let newf0, finfo = OptimizeFuncInApplication cenv env f0 m match TryInlineApplication cenv env finfo (tyargs, args, m) with | Some res -> // inlined diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/CompareIL.cmd b/tests/fsharpqa/Source/CodeGen/EmittedIL/CompareIL.cmd index 0e3c4acf219..ea97cebadcb 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/CompareIL.cmd +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/CompareIL.cmd @@ -1,15 +1,17 @@ REM == %1 --> assembly ildasm /TEXT /LINENUM /NOBAR "%~nx1" >"%~n1.il" -IF NOT ERRORLEVEL 0 exit 1 +IF %ERRORLEVEL% NEQ 0 exit /b 1 echo %~dp0..\..\..\testenv\bin\ILComparer.exe "%~n1.il.bsl" "%~n1.il" %~dp0..\..\..\testenv\bin\ILComparer.exe "%~n1.il.bsl" "%~n1.il" +IF %ERRORLEVEL% EQU 0 exit /b 0 + if /i "%TEST_UPDATE_BSL%" == "1" ( echo copy /y "%~n1.il" "%~n1.il.bsl" copy /y "%~n1.il" "%~n1.il.bsl" ) -exit /b %ERRORLEVEL% +exit /b 1 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Grouping01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Grouping01.il.bsl index e5bad87d725..38346254e8f 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Grouping01.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Grouping01.il.bsl @@ -50,13 +50,13 @@ // Offset: 0x00000408 Length: 0x00000129 } .module Linq101Grouping01.exe -// MVID: {60B78A59-FB79-E5BF-A745-0383598AB760} +// MVID: {60D46F1F-FB79-E5BF-A745-03831F6FD460} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06730000 +// Image base: 0x05800000 // =============== CLASS MEMBERS DECLARATION =================== @@ -371,7 +371,7 @@ { // Code size 8 (0x8) .maxstack 8 - .line 25,25 : 24,25 '' + .line 25,25 : 23,28 '' IL_0000: ldarg.1 IL_0001: ldc.i4.0 IL_0002: callvirt instance char [netstandard]System.String::get_Chars(int32) diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101SetOperators01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101SetOperators01.il.bsl index 02331dbae8c..baba5ea96e7 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101SetOperators01.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101SetOperators01.il.bsl @@ -45,13 +45,13 @@ // Offset: 0x00000390 Length: 0x0000011E } .module Linq101SetOperators01.exe -// MVID: {60B78A59-4EE5-349F-A745-0383598AB760} +// MVID: {60D46F1F-4EE5-349F-A745-03831F6FD460} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06940000 +// Image base: 0x04FA0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -846,7 +846,7 @@ IL_0057: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101SetOperators01/productFirstChars@33::'enum' IL_005c: callvirt instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1::get_Current() IL_0061: stloc.0 - .line 33,33 : 29,30 '' + .line 33,33 : 16,33 '' IL_0062: ldarg.0 IL_0063: ldc.i4.2 IL_0064: stfld int32 Linq101SetOperators01/productFirstChars@33::pc @@ -1196,7 +1196,7 @@ IL_0057: ldfld class [mscorlib]System.Collections.Generic.IEnumerator`1 Linq101SetOperators01/customerFirstChars@39::'enum' IL_005c: callvirt instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1::get_Current() IL_0061: stloc.0 - .line 39,39 : 29,30 '' + .line 39,39 : 16,33 '' IL_0062: ldarg.0 IL_0063: ldc.i4.2 IL_0064: stfld int32 Linq101SetOperators01/customerFirstChars@39::pc diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/Tuples/OptionalArg01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/Tuples/OptionalArg01.il.bsl index 92b9f88d01f..01eb586a73f 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/Tuples/OptionalArg01.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/Tuples/OptionalArg01.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000460 Length: 0x00000445 } .module OptionalArg01.exe -// MVID: {60B68B97-4F48-B5AF-A745-0383978BB660} +// MVID: {60D46F2D-4F48-B5AF-A745-03832D6FD460} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x05C20000 +// Image base: 0x06C40000 // =============== CLASS MEMBERS DECLARATION =================== @@ -205,7 +205,7 @@ { // Code size 7 (0x7) .maxstack 8 - .line 19,19 : 5,11 '' + .line 10,10 : 23,44 '' IL_0000: ldc.i4.0 IL_0001: newobj instance void class [mscorlib]System.Collections.Generic.List`1::.ctor(int32) IL_0006: ret @@ -216,17 +216,20 @@ { // Code size 22 (0x16) .maxstack 4 - .locals init ([0] class OptionalArg01/A V_0, - [1] class [mscorlib]System.Collections.Generic.List`1 V_1) + .locals init ([0] class OptionalArg01/A v1, + [1] class [mscorlib]System.Collections.Generic.List`1 attribs) .line 27,27 : 5,17 '' IL_0000: newobj instance void OptionalArg01/A::.ctor() IL_0005: stloc.0 + .line 10,10 : 9,44 '' IL_0006: ldc.i4.1 IL_0007: newobj instance void class [mscorlib]System.Collections.Generic.List`1::.ctor(int32) IL_000c: stloc.1 + .line 11,11 : 47,62 '' IL_000d: ldloc.1 IL_000e: ldloc.0 IL_000f: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + .line 13,13 : 9,16 '' IL_0014: ldloc.1 IL_0015: ret } // end of method OptionalArg01::test2 @@ -236,17 +239,20 @@ { // Code size 22 (0x16) .maxstack 4 - .locals init ([0] class OptionalArg01/A V_0, - [1] class [mscorlib]System.Collections.Generic.List`1 V_1) + .locals init ([0] class OptionalArg01/A v2, + [1] class [mscorlib]System.Collections.Generic.List`1 attribs) .line 35,35 : 5,17 '' IL_0000: newobj instance void OptionalArg01/A::.ctor() IL_0005: stloc.0 + .line 10,10 : 9,44 '' IL_0006: ldc.i4.1 IL_0007: newobj instance void class [mscorlib]System.Collections.Generic.List`1::.ctor(int32) IL_000c: stloc.1 + .line 12,12 : 47,62 '' IL_000d: ldloc.1 IL_000e: ldloc.0 IL_000f: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + .line 13,13 : 9,16 '' IL_0014: ldloc.1 IL_0015: ret } // end of method OptionalArg01::test3 @@ -256,23 +262,27 @@ { // Code size 35 (0x23) .maxstack 4 - .locals init ([0] class OptionalArg01/A V_0, - [1] class OptionalArg01/A V_1, - [2] class [mscorlib]System.Collections.Generic.List`1 V_2) + .locals init ([0] class OptionalArg01/A v1, + [1] class OptionalArg01/A v2, + [2] class [mscorlib]System.Collections.Generic.List`1 attribs) .line 45,45 : 5,25 '' IL_0000: newobj instance void OptionalArg01/A::.ctor() IL_0005: stloc.0 IL_0006: newobj instance void OptionalArg01/A::.ctor() IL_000b: stloc.1 + .line 10,10 : 9,44 '' IL_000c: ldc.i4.2 IL_000d: newobj instance void class [mscorlib]System.Collections.Generic.List`1::.ctor(int32) IL_0012: stloc.2 + .line 11,11 : 47,62 '' IL_0013: ldloc.2 IL_0014: ldloc.0 IL_0015: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + .line 12,12 : 47,62 '' IL_001a: ldloc.2 IL_001b: ldloc.1 IL_001c: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + .line 13,13 : 9,16 '' IL_0021: ldloc.2 IL_0022: ret } // end of method OptionalArg01::test4 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/Tuples/TupleElimination.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/Tuples/TupleElimination.il.bsl index c7180964946..ba2f7ee8e8e 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/Tuples/TupleElimination.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/Tuples/TupleElimination.il.bsl @@ -41,13 +41,13 @@ // Offset: 0x00000230 Length: 0x0000007B } .module TupleElimination.exe -// MVID: {60CB69C6-DFDD-92DF-A745-0383C669CB60} +// MVID: {60D46F2D-DFDD-92DF-A745-03832D6FD460} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06AF0000 +// Image base: 0x06A70000 // =============== CLASS MEMBERS DECLARATION =================== @@ -98,11 +98,11 @@ IL_000a: callvirt instance bool class [mscorlib]System.Collections.Generic.Dictionary`2::TryGetValue(!0, !1&) IL_000f: stloc.2 - .line 10,10 : 5,6 '' + .line 10,10 : 5,8 '' IL_0010: ldloc.2 IL_0011: call void TupleElimination::p@5(!!0) IL_0016: nop - .line 11,11 : 5,6 '' + .line 11,11 : 5,8 '' IL_0017: ldloc.1 IL_0018: call void TupleElimination::p@5(!!0) IL_001d: nop @@ -118,15 +118,15 @@ IL_002f: newobj instance void class [mscorlib]System.Tuple`2::.ctor(!0, !1) IL_0034: stloc.s t - .line 15,15 : 5,6 '' + .line 15,15 : 5,8 '' IL_0036: ldloc.s V_4 IL_0038: call void TupleElimination::p@5(!!0) IL_003d: nop - .line 16,16 : 5,6 '' + .line 16,16 : 5,8 '' IL_003e: ldloc.3 IL_003f: call void TupleElimination::p@5(!!0) IL_0044: nop - .line 21,21 : 5,6 '' + .line 21,21 : 5,9 '' IL_0045: ldloc.s t IL_0047: call void TupleElimination::p@5>(!!0) IL_004c: nop diff --git a/tests/fsharpqa/Source/Optimizations/CompareIL.cmd b/tests/fsharpqa/Source/Optimizations/CompareIL.cmd index 3c34a493298..ca278788982 100644 --- a/tests/fsharpqa/Source/Optimizations/CompareIL.cmd +++ b/tests/fsharpqa/Source/Optimizations/CompareIL.cmd @@ -1,15 +1,17 @@ REM == %1 --> assembly ildasm /TEXT /LINENUM /NOBAR "%~nx1" >"%~n1.il" -IF NOT ERRORLEVEL 0 exit 1 +IF %ERRORLEVEL% NEQ 0 exit /b 1 echo ..\..\..\testenv\bin\ILComparer.exe "%~n1.il.bsl" "%~n1.il" ..\..\..\testenv\bin\ILComparer.exe "%~n1.il.bsl" "%~n1.il" +IF %ERRORLEVEL% EQU 0 exit /b 0 + if /i "%TEST_UPDATE_BSL%" == "1" ( echo copy /y "%~n1.il" "%~n1.il.bsl" copy /y "%~n1.il" "%~n1.il.bsl" ) -exit /b %ERRORLEVEL% +exit /b 1 From ccdc6d65f73e4a9cd564299e53eb7eeddcf7ba91 Mon Sep 17 00:00:00 2001 From: Don Syme Date: Thu, 24 Jun 2021 14:24:35 +0100 Subject: [PATCH 4/7] add manual debug stepping tests and fix test baselines --- tests/fsharp/typecheck/sigs/neg117.bsl | 2 +- .../ToplevelModuleP.il.bsl | 1737 ----------- .../ToplevelNamespaceP.il.bsl | 2529 ----------------- .../EmittedIL/SerializableAttribute/env.lst | 4 +- .../TheBigFileOfDebugStepping.fsx | 62 + 5 files changed, 65 insertions(+), 4269 deletions(-) delete mode 100644 tests/fsharpqa/Source/CodeGen/EmittedIL/SerializableAttribute/ToplevelModuleP.il.bsl delete mode 100644 tests/fsharpqa/Source/CodeGen/EmittedIL/SerializableAttribute/ToplevelNamespaceP.il.bsl diff --git a/tests/fsharp/typecheck/sigs/neg117.bsl b/tests/fsharp/typecheck/sigs/neg117.bsl index 9ad81d0003f..2c8fbee14c0 100644 --- a/tests/fsharp/typecheck/sigs/neg117.bsl +++ b/tests/fsharp/typecheck/sigs/neg117.bsl @@ -1,5 +1,5 @@ -neg117.fs(79,18,79,59): ilxgen error FS0041: No overloads match for method 'Transform'. +neg117.fs(74,51,74,121): ilxgen error FS0041: No overloads match for method 'Transform'. Known return type: ('a -> Neg117.TargetA.M1 Microsoft.FSharp.Core.[]) diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/SerializableAttribute/ToplevelModuleP.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/SerializableAttribute/ToplevelModuleP.il.bsl deleted file mode 100644 index 771eaa3d503..00000000000 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/SerializableAttribute/ToplevelModuleP.il.bsl +++ /dev/null @@ -1,1737 +0,0 @@ - -// Microsoft (R) .NET Framework IL Disassembler. Version 4.6.81.0 -// Copyright (c) Microsoft Corporation. All rights reserved. - - - -// Metadata version: v4.0.30319 -.assembly extern retargetable mscorlib -{ - .publickeytoken = (7C EC 85 D7 BE A7 79 8E ) // |.....y. - .ver 2:0:5:0 -} -.assembly extern FSharp.Core -{ - .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: - .ver 3:47:41:0 -} -.assembly ToplevelModuleP -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, - int32, - int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) - - // --- The following custom attribute is added automatically, do not uncomment ------- - // .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 00 01 00 00 00 00 ) - - .hash algorithm 0x00008004 - .ver 0:0:0:0 -} -.mresource public FSharpSignatureData.ToplevelModuleP -{ - // Offset: 0x00000000 Length: 0x0000114F -} -.mresource public FSharpOptimizationData.ToplevelModuleP -{ - // Offset: 0x00001158 Length: 0x000003FE -} -.module ToplevelModuleP.dll -// MVID: {576266E1-5A3A-8E4D-A745-0383E1666257} -.imagebase 0x00400000 -.file alignment 0x00000200 -.stackreserve 0x00100000 -.subsystem 0x0003 // WINDOWS_CUI -.corflags 0x00000001 // ILONLY -// Image base: 0x00A70000 - - -// =============== CLASS MEMBERS DECLARATION =================== - -.class public abstract auto ansi sealed ABC - extends [mscorlib]System.Object -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) - .class auto autochar sealed nested public beforefieldinit Expr - extends [mscorlib]System.Object - implements class [mscorlib]System.IEquatable`1, - [mscorlib]System.Collections.IStructuralEquatable, - class [mscorlib]System.IComparable`1, - [mscorlib]System.IComparable, - [mscorlib]System.Collections.IStructuralComparable - { - .custom instance void [mscorlib]System.Diagnostics.DebuggerDisplayAttribute::.ctor(string) = ( 01 00 15 7B 5F 5F 44 65 62 75 67 44 69 73 70 6C // ...{__DebugDispl - 61 79 28 29 2C 6E 71 7D 00 00 ) // ay(),nq}.. - .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 initonly int32 item - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static 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 ) - // Code size 7 (0x7) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: newobj instance void ABC/Expr::.ctor(int32) - IL_0006: ret - } // end of method Expr::NewNum - - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 14 (0xe) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: call instance void [mscorlib]System.Object::.ctor() - IL_0006: ldarg.0 - IL_0007: ldarg.1 - IL_0008: stfld int32 ABC/Expr::item - IL_000d: ret - } // end of method Expr::.ctor - - .method public hidebysig instance int32 - get_Item() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 7 (0x7) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: ldfld int32 ABC/Expr::item - IL_0006: ret - } // end of method Expr::get_Item - - .method public hidebysig instance int32 - get_Tag() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 4 (0x4) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: pop - IL_0002: ldc.i4.0 - IL_0003: ret - } // end of method Expr::get_Tag - - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 22 (0x16) - .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 - } // end of method Expr::__DebugDisplay - - .method public strict virtual instance string - ToString() cil managed - { - // Code size 22 (0x16) - .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,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 - } // end of method Expr::ToString - - .method public hidebysig virtual final - instance int32 CompareTo(class ABC/Expr obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 81 (0x51) - .maxstack 4 - .locals init (class ABC/Expr V_0, - class ABC/Expr V_1, - class [mscorlib]System.Collections.IComparer V_2, - int32 V_3, - int32 V_4) - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_0043 - - IL_000b: ldarg.1 - IL_000c: ldnull - IL_000d: cgt.un - IL_000f: brfalse.s IL_0013 - - IL_0011: br.s IL_0015 - - IL_0013: br.s IL_0041 - - IL_0015: ldarg.0 - IL_0016: pop - IL_0017: ldarg.0 - IL_0018: stloc.0 - IL_0019: ldarg.1 - IL_001a: stloc.1 - IL_001b: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0020: stloc.2 - IL_0021: ldloc.0 - IL_0022: ldfld int32 ABC/Expr::item - IL_0027: stloc.3 - IL_0028: ldloc.1 - IL_0029: ldfld int32 ABC/Expr::item - IL_002e: stloc.s V_4 - IL_0030: ldloc.3 - IL_0031: ldloc.s V_4 - IL_0033: bge.s IL_0037 - - IL_0035: br.s IL_0039 - - IL_0037: br.s IL_003b - - IL_0039: ldc.i4.m1 - IL_003a: ret - - IL_003b: ldloc.3 - IL_003c: ldloc.s V_4 - IL_003e: cgt - IL_0040: ret - - IL_0041: ldc.i4.1 - IL_0042: ret - - IL_0043: ldarg.1 - IL_0044: ldnull - IL_0045: cgt.un - IL_0047: brfalse.s IL_004b - - IL_0049: br.s IL_004d - - IL_004b: br.s IL_004f - - IL_004d: ldc.i4.m1 - IL_004e: ret - - IL_004f: ldc.i4.0 - IL_0050: ret - } // end of method Expr::CompareTo - - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 14 (0xe) - .maxstack 8 - .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 6,6 : 14,18 'C:\\GitHub\\dsyme\\visualfsharp\\tests\\fsharpqa\\Source\\CodeGen\\EmittedIL\\SerializableAttribute\\ToplevelModule.fs' - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldarg.1 - IL_0003: unbox.any ABC/Expr - IL_0008: callvirt instance int32 ABC/Expr::CompareTo(class ABC/Expr) - IL_000d: ret - } // end of method Expr::CompareTo - - .method public hidebysig virtual final - instance int32 CompareTo(object obj, - class [mscorlib]System.Collections.IComparer comp) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 97 (0x61) - .maxstack 4 - .locals init ([0] class ABC/Expr V_0, - [1] class ABC/Expr V_1, - [2] class ABC/Expr V_2, - [3] class [mscorlib]System.Collections.IComparer V_3, - [4] int32 V_4, - [5] int32 V_5) - .line 6,6 : 14,18 - IL_0000: nop - IL_0001: ldarg.1 - IL_0002: unbox.any ABC/Expr - IL_0007: stloc.0 - IL_0008: ldarg.0 - IL_0009: ldnull - IL_000a: cgt.un - IL_000c: brfalse.s IL_0010 - - IL_000e: br.s IL_0012 - - IL_0010: br.s IL_004e - - .line 100001,100001 : 0,0 - IL_0012: ldarg.1 - IL_0013: unbox.any ABC/Expr - IL_0018: ldnull - IL_0019: cgt.un - IL_001b: brfalse.s IL_001f - - IL_001d: br.s IL_0021 - - IL_001f: br.s IL_004c - - .line 100001,100001 : 0,0 - IL_0021: ldarg.0 - IL_0022: pop - .line 100001,100001 : 0,0 - IL_0023: ldarg.0 - IL_0024: stloc.1 - IL_0025: ldloc.0 - IL_0026: stloc.2 - IL_0027: ldarg.2 - IL_0028: stloc.3 - IL_0029: ldloc.1 - IL_002a: ldfld int32 ABC/Expr::item - IL_002f: stloc.s V_4 - IL_0031: ldloc.2 - IL_0032: ldfld int32 ABC/Expr::item - IL_0037: stloc.s V_5 - IL_0039: ldloc.s V_4 - IL_003b: ldloc.s V_5 - IL_003d: bge.s IL_0041 - - IL_003f: br.s IL_0043 - - IL_0041: br.s IL_0045 - - .line 100001,100001 : 0,0 - IL_0043: ldc.i4.m1 - IL_0044: ret - - .line 100001,100001 : 0,0 - IL_0045: ldloc.s V_4 - IL_0047: ldloc.s V_5 - IL_0049: cgt - IL_004b: ret - - .line 100001,100001 : 0,0 - IL_004c: ldc.i4.1 - IL_004d: ret - - .line 100001,100001 : 0,0 - IL_004e: ldarg.1 - IL_004f: unbox.any ABC/Expr - IL_0054: ldnull - IL_0055: cgt.un - IL_0057: brfalse.s IL_005b - - IL_0059: br.s IL_005d - - IL_005b: br.s IL_005f - - .line 100001,100001 : 0,0 - IL_005d: ldc.i4.m1 - IL_005e: ret - - .line 100001,100001 : 0,0 - IL_005f: ldc.i4.0 - IL_0060: ret - } // end of method Expr::CompareTo - - .method public hidebysig virtual final - instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 46 (0x2e) - .maxstack 7 - .locals init (int32 V_0, - class ABC/Expr V_1, - class [mscorlib]System.Collections.IEqualityComparer V_2) - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_002c - - IL_000b: ldc.i4.0 - IL_000c: stloc.0 - IL_000d: ldarg.0 - IL_000e: pop - IL_000f: ldarg.0 - IL_0010: stloc.1 - IL_0011: ldc.i4.0 - IL_0012: stloc.0 - IL_0013: ldc.i4 0x9e3779b9 - IL_0018: ldarg.1 - IL_0019: stloc.2 - IL_001a: ldloc.1 - IL_001b: ldfld int32 ABC/Expr::item - IL_0020: ldloc.0 - IL_0021: ldc.i4.6 - IL_0022: shl - IL_0023: ldloc.0 - IL_0024: ldc.i4.2 - IL_0025: shr - IL_0026: add - IL_0027: add - IL_0028: add - IL_0029: stloc.0 - IL_002a: ldloc.0 - IL_002b: ret - - IL_002c: ldc.i4.0 - IL_002d: ret - } // end of method Expr::GetHashCode - - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 13 (0xd) - .maxstack 8 - .line 6,6 : 14,18 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() - IL_0007: callvirt instance int32 ABC/Expr::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) - IL_000c: ret - } // end of method Expr::GetHashCode - - .method public hidebysig virtual final - instance bool Equals(object obj, - class [mscorlib]System.Collections.IEqualityComparer comp) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 61 (0x3d) - .maxstack 4 - .locals init (class ABC/Expr V_0, - class ABC/Expr V_1, - class ABC/Expr V_2, - class ABC/Expr V_3, - class [mscorlib]System.Collections.IEqualityComparer V_4) - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_0035 - - IL_000b: ldarg.1 - IL_000c: isinst ABC/Expr - IL_0011: stloc.0 - IL_0012: ldloc.0 - IL_0013: brfalse.s IL_0017 - - IL_0015: br.s IL_0019 - - IL_0017: br.s IL_0033 - - IL_0019: ldloc.0 - IL_001a: stloc.1 - IL_001b: ldarg.0 - IL_001c: pop - IL_001d: ldarg.0 - IL_001e: stloc.2 - IL_001f: ldloc.1 - IL_0020: stloc.3 - IL_0021: ldarg.2 - IL_0022: stloc.s V_4 - IL_0024: ldloc.2 - IL_0025: ldfld int32 ABC/Expr::item - IL_002a: ldloc.3 - IL_002b: ldfld int32 ABC/Expr::item - 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 - } // end of method Expr::Equals - - .method public hidebysig virtual final - instance bool Equals(class ABC/Expr obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 52 (0x34) - .maxstack 4 - .locals init (class ABC/Expr V_0, - class ABC/Expr V_1) - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_002c - - IL_000b: ldarg.1 - IL_000c: ldnull - IL_000d: cgt.un - IL_000f: brfalse.s IL_0013 - - IL_0011: br.s IL_0015 - - IL_0013: br.s IL_002a - - IL_0015: ldarg.0 - IL_0016: pop - IL_0017: ldarg.0 - IL_0018: stloc.0 - IL_0019: ldarg.1 - IL_001a: stloc.1 - IL_001b: ldloc.0 - IL_001c: ldfld int32 ABC/Expr::item - IL_0021: ldloc.1 - IL_0022: ldfld int32 ABC/Expr::item - 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 - } // end of method Expr::Equals - - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 25 (0x19) - .maxstack 4 - .locals init (class ABC/Expr V_0) - IL_0000: nop - IL_0001: ldarg.1 - IL_0002: isinst ABC/Expr - IL_0007: stloc.0 - IL_0008: ldloc.0 - IL_0009: brfalse.s IL_000d - - IL_000b: br.s IL_000f - - IL_000d: br.s IL_0017 - - IL_000f: ldarg.0 - IL_0010: ldloc.0 - IL_0011: callvirt instance bool ABC/Expr::Equals(class ABC/Expr) - IL_0016: ret - - IL_0017: ldc.i4.0 - IL_0018: ret - } // end of method Expr::Equals - - .property instance int32 Tag() - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .get instance int32 ABC/Expr::get_Tag() - } // end of property Expr::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 [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .get instance int32 ABC/Expr::get_Item() - } // end of property Expr::Item - } // end of class Expr - - .class auto ansi nested public beforefieldinit MyExn - extends [mscorlib]System.Exception - implements [mscorlib]System.Collections.IStructuralEquatable - { - .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 - { - // Code size 14 (0xe) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: call instance void [mscorlib]System.Exception::.ctor() - IL_0006: ldarg.0 - IL_0007: ldarg.1 - IL_0008: stfld int32 ABC/MyExn::Data0@ - IL_000d: ret - } // end of method MyExn::.ctor - - .method public specialname rtspecialname - instance void .ctor() cil managed - { - // Code size 7 (0x7) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: call instance void [mscorlib]System.Exception::.ctor() - IL_0006: ret - } // end of method MyExn::.ctor - - .method public hidebysig specialname - instance int32 get_Data0() cil managed - { - // Code size 7 (0x7) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: ldfld int32 ABC/MyExn::Data0@ - IL_0006: ret - } // end of method MyExn::get_Data0 - - .method public hidebysig virtual instance int32 - GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 45 (0x2d) - .maxstack 7 - .locals init (int32 V_0, - class [mscorlib]System.Collections.IEqualityComparer V_1) - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_002b - - IL_000b: ldc.i4.0 - IL_000c: stloc.0 - IL_000d: ldc.i4 0x9e3779b9 - IL_0012: ldarg.1 - IL_0013: stloc.1 - IL_0014: ldarg.0 - IL_0015: castclass ABC/MyExn - IL_001a: call instance int32 ABC/MyExn::get_Data0() - IL_001f: ldloc.0 - IL_0020: ldc.i4.6 - IL_0021: shl - IL_0022: ldloc.0 - IL_0023: ldc.i4.2 - IL_0024: shr - IL_0025: add - IL_0026: add - IL_0027: add - IL_0028: stloc.0 - IL_0029: ldloc.0 - IL_002a: ret - - IL_002b: ldc.i4.0 - IL_002c: ret - } // end of method MyExn::GetHashCode - - .method public hidebysig virtual instance int32 - GetHashCode() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 13 (0xd) - .maxstack 8 - .line 7,7 : 19,24 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() - IL_0007: callvirt instance int32 ABC/MyExn::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) - IL_000c: ret - } // end of method MyExn::GetHashCode - - .method public hidebysig virtual instance bool - Equals(object obj, - class [mscorlib]System.Collections.IEqualityComparer comp) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 76 (0x4c) - .maxstack 4 - .locals init (class [mscorlib]System.Exception V_0, - class [mscorlib]System.Exception V_1, - class [mscorlib]System.Collections.IEqualityComparer V_2) - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_0044 - - IL_000b: ldarg.1 - IL_000c: isinst [mscorlib]System.Exception - IL_0011: stloc.0 - IL_0012: ldloc.0 - IL_0013: brfalse.s IL_0017 - - IL_0015: br.s IL_0019 - - IL_0017: br.s IL_0042 - - IL_0019: ldloc.0 - IL_001a: stloc.1 - IL_001b: ldloc.0 - IL_001c: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) - IL_0021: brtrue.s IL_0025 - - IL_0023: br.s IL_0040 - - IL_0025: ldarg.2 - IL_0026: stloc.2 - IL_0027: ldarg.0 - IL_0028: castclass ABC/MyExn - IL_002d: call instance int32 ABC/MyExn::get_Data0() - IL_0032: ldloc.1 - IL_0033: castclass ABC/MyExn - IL_0038: call instance int32 ABC/MyExn::get_Data0() - IL_003d: ceq - IL_003f: ret - - IL_0040: ldc.i4.0 - IL_0041: ret - - IL_0042: ldc.i4.0 - IL_0043: ret - - IL_0044: ldarg.1 - IL_0045: ldnull - IL_0046: cgt.un - IL_0048: ldc.i4.0 - IL_0049: ceq - IL_004b: ret - } // end of method MyExn::Equals - - .method public hidebysig instance bool - Equals(class [mscorlib]System.Exception obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 68 (0x44) - .maxstack 4 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_003c - - IL_000b: ldarg.1 - IL_000c: ldnull - IL_000d: cgt.un - IL_000f: brfalse.s IL_0013 - - IL_0011: br.s IL_0015 - - IL_0013: br.s IL_003a - - IL_0015: ldarg.1 - IL_0016: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) - IL_001b: brtrue.s IL_001f - - IL_001d: br.s IL_0038 - - IL_001f: ldarg.0 - IL_0020: castclass ABC/MyExn - IL_0025: call instance int32 ABC/MyExn::get_Data0() - IL_002a: ldarg.1 - IL_002b: castclass ABC/MyExn - IL_0030: call instance int32 ABC/MyExn::get_Data0() - IL_0035: ceq - IL_0037: ret - - IL_0038: ldc.i4.0 - IL_0039: ret - - IL_003a: ldc.i4.0 - IL_003b: ret - - IL_003c: ldarg.1 - IL_003d: ldnull - IL_003e: cgt.un - IL_0040: ldc.i4.0 - IL_0041: ceq - IL_0043: ret - } // end of method MyExn::Equals - - .method public hidebysig virtual instance bool - Equals(object obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 25 (0x19) - .maxstack 4 - .locals init (class [mscorlib]System.Exception V_0) - IL_0000: nop - IL_0001: ldarg.1 - IL_0002: isinst [mscorlib]System.Exception - IL_0007: stloc.0 - IL_0008: ldloc.0 - IL_0009: brfalse.s IL_000d - - IL_000b: br.s IL_000f - - IL_000d: br.s IL_0017 - - IL_000f: ldarg.0 - IL_0010: ldloc.0 - IL_0011: callvirt instance bool ABC/MyExn::Equals(class [mscorlib]System.Exception) - IL_0016: ret - - IL_0017: ldc.i4.0 - IL_0018: ret - } // end of method MyExn::Equals - - .property instance int32 Data0() - { - .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 ABC/MyExn::get_Data0() - } // end of property MyExn::Data0 - } // end of class MyExn - - .class auto ansi nested public A - extends [mscorlib]System.Object - { - .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 - { - // Code size 17 (0x11) - .maxstack 8 - .line 8,8 : 16,17 - IL_0000: ldarg.0 - IL_0001: callvirt instance void [mscorlib]System.Object::.ctor() - IL_0006: ldarg.0 - IL_0007: pop - IL_0008: nop - IL_0009: ldarg.0 - IL_000a: ldarg.1 - IL_000b: stfld string ABC/A::x - .line 8,8 : 14,15 - IL_0010: ret - } // end of method A::.ctor - - .method public hidebysig specialname - instance string get_X() cil managed - { - // Code size 8 (0x8) - .maxstack 8 - .line 8,8 : 42,43 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldfld string ABC/A::x - IL_0007: ret - } // end of method A::get_X - - .property instance string X() - { - .get instance string ABC/A::get_X() - } // end of property A::X - } // end of class A - - .class abstract auto ansi sealed nested public ABC - extends [mscorlib]System.Object - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) - .class auto autochar sealed nested public beforefieldinit Expr - extends [mscorlib]System.Object - implements class [mscorlib]System.IEquatable`1, - [mscorlib]System.Collections.IStructuralEquatable, - class [mscorlib]System.IComparable`1, - [mscorlib]System.IComparable, - [mscorlib]System.Collections.IStructuralComparable - { - .custom instance void [mscorlib]System.Diagnostics.DebuggerDisplayAttribute::.ctor(string) = ( 01 00 15 7B 5F 5F 44 65 62 75 67 44 69 73 70 6C // ...{__DebugDispl - 61 79 28 29 2C 6E 71 7D 00 00 ) // ay(),nq}.. - .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 initonly int32 item - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static 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 ) - // Code size 7 (0x7) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: newobj instance void ABC/ABC/Expr::.ctor(int32) - IL_0006: ret - } // end of method Expr::NewNum - - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 14 (0xe) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: call instance void [mscorlib]System.Object::.ctor() - IL_0006: ldarg.0 - IL_0007: ldarg.1 - IL_0008: stfld int32 ABC/ABC/Expr::item - IL_000d: ret - } // end of method Expr::.ctor - - .method public hidebysig instance int32 - get_Item() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 7 (0x7) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: ldfld int32 ABC/ABC/Expr::item - IL_0006: ret - } // end of method Expr::get_Item - - .method public hidebysig instance int32 - get_Tag() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 4 (0x4) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: pop - IL_0002: ldc.i4.0 - IL_0003: ret - } // end of method Expr::get_Tag - - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 22 (0x16) - .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 - } // end of method Expr::__DebugDisplay - - .method public strict virtual instance string - ToString() cil managed - { - // Code size 22 (0x16) - .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,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 - } // end of method Expr::ToString - - .method public hidebysig virtual final - instance int32 CompareTo(class ABC/ABC/Expr obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 81 (0x51) - .maxstack 4 - .locals init (class ABC/ABC/Expr V_0, - class ABC/ABC/Expr V_1, - class [mscorlib]System.Collections.IComparer V_2, - int32 V_3, - int32 V_4) - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_0043 - - IL_000b: ldarg.1 - IL_000c: ldnull - IL_000d: cgt.un - IL_000f: brfalse.s IL_0013 - - IL_0011: br.s IL_0015 - - IL_0013: br.s IL_0041 - - IL_0015: ldarg.0 - IL_0016: pop - IL_0017: ldarg.0 - IL_0018: stloc.0 - IL_0019: ldarg.1 - IL_001a: stloc.1 - IL_001b: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0020: stloc.2 - IL_0021: ldloc.0 - IL_0022: ldfld int32 ABC/ABC/Expr::item - IL_0027: stloc.3 - IL_0028: ldloc.1 - IL_0029: ldfld int32 ABC/ABC/Expr::item - IL_002e: stloc.s V_4 - IL_0030: ldloc.3 - IL_0031: ldloc.s V_4 - IL_0033: bge.s IL_0037 - - IL_0035: br.s IL_0039 - - IL_0037: br.s IL_003b - - IL_0039: ldc.i4.m1 - IL_003a: ret - - IL_003b: ldloc.3 - IL_003c: ldloc.s V_4 - IL_003e: cgt - IL_0040: ret - - IL_0041: ldc.i4.1 - IL_0042: ret - - IL_0043: ldarg.1 - IL_0044: ldnull - IL_0045: cgt.un - IL_0047: brfalse.s IL_004b - - IL_0049: br.s IL_004d - - IL_004b: br.s IL_004f - - IL_004d: ldc.i4.m1 - IL_004e: ret - - IL_004f: ldc.i4.0 - IL_0050: ret - } // end of method Expr::CompareTo - - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 14 (0xe) - .maxstack 8 - .line 16,16 : 18,22 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldarg.1 - IL_0003: unbox.any ABC/ABC/Expr - IL_0008: callvirt instance int32 ABC/ABC/Expr::CompareTo(class ABC/ABC/Expr) - IL_000d: ret - } // end of method Expr::CompareTo - - .method public hidebysig virtual final - instance int32 CompareTo(object obj, - class [mscorlib]System.Collections.IComparer comp) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 97 (0x61) - .maxstack 4 - .locals init ([0] class ABC/ABC/Expr V_0, - [1] class ABC/ABC/Expr V_1, - [2] class ABC/ABC/Expr V_2, - [3] class [mscorlib]System.Collections.IComparer V_3, - [4] int32 V_4, - [5] int32 V_5) - .line 16,16 : 18,22 - IL_0000: nop - IL_0001: ldarg.1 - IL_0002: unbox.any ABC/ABC/Expr - IL_0007: stloc.0 - IL_0008: ldarg.0 - IL_0009: ldnull - IL_000a: cgt.un - IL_000c: brfalse.s IL_0010 - - IL_000e: br.s IL_0012 - - IL_0010: br.s IL_004e - - .line 100001,100001 : 0,0 - IL_0012: ldarg.1 - IL_0013: unbox.any ABC/ABC/Expr - IL_0018: ldnull - IL_0019: cgt.un - IL_001b: brfalse.s IL_001f - - IL_001d: br.s IL_0021 - - IL_001f: br.s IL_004c - - .line 100001,100001 : 0,0 - IL_0021: ldarg.0 - IL_0022: pop - .line 100001,100001 : 0,0 - IL_0023: ldarg.0 - IL_0024: stloc.1 - IL_0025: ldloc.0 - IL_0026: stloc.2 - IL_0027: ldarg.2 - IL_0028: stloc.3 - IL_0029: ldloc.1 - IL_002a: ldfld int32 ABC/ABC/Expr::item - IL_002f: stloc.s V_4 - IL_0031: ldloc.2 - IL_0032: ldfld int32 ABC/ABC/Expr::item - IL_0037: stloc.s V_5 - IL_0039: ldloc.s V_4 - IL_003b: ldloc.s V_5 - IL_003d: bge.s IL_0041 - - IL_003f: br.s IL_0043 - - IL_0041: br.s IL_0045 - - .line 100001,100001 : 0,0 - IL_0043: ldc.i4.m1 - IL_0044: ret - - .line 100001,100001 : 0,0 - IL_0045: ldloc.s V_4 - IL_0047: ldloc.s V_5 - IL_0049: cgt - IL_004b: ret - - .line 100001,100001 : 0,0 - IL_004c: ldc.i4.1 - IL_004d: ret - - .line 100001,100001 : 0,0 - IL_004e: ldarg.1 - IL_004f: unbox.any ABC/ABC/Expr - IL_0054: ldnull - IL_0055: cgt.un - IL_0057: brfalse.s IL_005b - - IL_0059: br.s IL_005d - - IL_005b: br.s IL_005f - - .line 100001,100001 : 0,0 - IL_005d: ldc.i4.m1 - IL_005e: ret - - .line 100001,100001 : 0,0 - IL_005f: ldc.i4.0 - IL_0060: ret - } // end of method Expr::CompareTo - - .method public hidebysig virtual final - instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 46 (0x2e) - .maxstack 7 - .locals init (int32 V_0, - class ABC/ABC/Expr V_1, - class [mscorlib]System.Collections.IEqualityComparer V_2) - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_002c - - IL_000b: ldc.i4.0 - IL_000c: stloc.0 - IL_000d: ldarg.0 - IL_000e: pop - IL_000f: ldarg.0 - IL_0010: stloc.1 - IL_0011: ldc.i4.0 - IL_0012: stloc.0 - IL_0013: ldc.i4 0x9e3779b9 - IL_0018: ldarg.1 - IL_0019: stloc.2 - IL_001a: ldloc.1 - IL_001b: ldfld int32 ABC/ABC/Expr::item - IL_0020: ldloc.0 - IL_0021: ldc.i4.6 - IL_0022: shl - IL_0023: ldloc.0 - IL_0024: ldc.i4.2 - IL_0025: shr - IL_0026: add - IL_0027: add - IL_0028: add - IL_0029: stloc.0 - IL_002a: ldloc.0 - IL_002b: ret - - IL_002c: ldc.i4.0 - IL_002d: ret - } // end of method Expr::GetHashCode - - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 13 (0xd) - .maxstack 8 - .line 16,16 : 18,22 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() - IL_0007: callvirt instance int32 ABC/ABC/Expr::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) - IL_000c: ret - } // end of method Expr::GetHashCode - - .method public hidebysig virtual final - instance bool Equals(object obj, - class [mscorlib]System.Collections.IEqualityComparer comp) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 61 (0x3d) - .maxstack 4 - .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 [mscorlib]System.Collections.IEqualityComparer V_4) - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_0035 - - IL_000b: ldarg.1 - IL_000c: isinst ABC/ABC/Expr - IL_0011: stloc.0 - IL_0012: ldloc.0 - IL_0013: brfalse.s IL_0017 - - IL_0015: br.s IL_0019 - - IL_0017: br.s IL_0033 - - IL_0019: ldloc.0 - IL_001a: stloc.1 - IL_001b: ldarg.0 - IL_001c: pop - IL_001d: ldarg.0 - IL_001e: stloc.2 - IL_001f: ldloc.1 - IL_0020: stloc.3 - IL_0021: ldarg.2 - IL_0022: stloc.s V_4 - IL_0024: ldloc.2 - IL_0025: ldfld int32 ABC/ABC/Expr::item - IL_002a: ldloc.3 - IL_002b: ldfld int32 ABC/ABC/Expr::item - 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 - } // end of method Expr::Equals - - .method public hidebysig virtual final - instance bool Equals(class ABC/ABC/Expr obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 52 (0x34) - .maxstack 4 - .locals init (class ABC/ABC/Expr V_0, - class ABC/ABC/Expr V_1) - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_002c - - IL_000b: ldarg.1 - IL_000c: ldnull - IL_000d: cgt.un - IL_000f: brfalse.s IL_0013 - - IL_0011: br.s IL_0015 - - IL_0013: br.s IL_002a - - IL_0015: ldarg.0 - IL_0016: pop - IL_0017: ldarg.0 - IL_0018: stloc.0 - IL_0019: ldarg.1 - IL_001a: stloc.1 - IL_001b: ldloc.0 - IL_001c: ldfld int32 ABC/ABC/Expr::item - IL_0021: ldloc.1 - IL_0022: ldfld int32 ABC/ABC/Expr::item - 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 - } // end of method Expr::Equals - - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 25 (0x19) - .maxstack 4 - .locals init (class ABC/ABC/Expr V_0) - IL_0000: nop - IL_0001: ldarg.1 - IL_0002: isinst ABC/ABC/Expr - IL_0007: stloc.0 - IL_0008: ldloc.0 - IL_0009: brfalse.s IL_000d - - IL_000b: br.s IL_000f - - IL_000d: br.s IL_0017 - - IL_000f: ldarg.0 - IL_0010: ldloc.0 - IL_0011: callvirt instance bool ABC/ABC/Expr::Equals(class ABC/ABC/Expr) - IL_0016: ret - - IL_0017: ldc.i4.0 - IL_0018: ret - } // end of method Expr::Equals - - .property instance int32 Tag() - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .get instance int32 ABC/ABC/Expr::get_Tag() - } // end of property Expr::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 [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .get instance int32 ABC/ABC/Expr::get_Item() - } // end of property Expr::Item - } // end of class Expr - - .class auto ansi nested public beforefieldinit MyExn - extends [mscorlib]System.Exception - implements [mscorlib]System.Collections.IStructuralEquatable - { - .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 - { - // Code size 14 (0xe) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: call instance void [mscorlib]System.Exception::.ctor() - IL_0006: ldarg.0 - IL_0007: ldarg.1 - IL_0008: stfld int32 ABC/ABC/MyExn::Data0@ - IL_000d: ret - } // end of method MyExn::.ctor - - .method public specialname rtspecialname - instance void .ctor() cil managed - { - // Code size 7 (0x7) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: call instance void [mscorlib]System.Exception::.ctor() - IL_0006: ret - } // end of method MyExn::.ctor - - .method public hidebysig specialname - instance int32 get_Data0() cil managed - { - // Code size 7 (0x7) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: ldfld int32 ABC/ABC/MyExn::Data0@ - IL_0006: ret - } // end of method MyExn::get_Data0 - - .method public hidebysig virtual instance int32 - GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 45 (0x2d) - .maxstack 7 - .locals init (int32 V_0, - class [mscorlib]System.Collections.IEqualityComparer V_1) - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_002b - - IL_000b: ldc.i4.0 - IL_000c: stloc.0 - IL_000d: ldc.i4 0x9e3779b9 - IL_0012: ldarg.1 - IL_0013: stloc.1 - IL_0014: ldarg.0 - IL_0015: castclass ABC/ABC/MyExn - IL_001a: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_001f: ldloc.0 - IL_0020: ldc.i4.6 - IL_0021: shl - IL_0022: ldloc.0 - IL_0023: ldc.i4.2 - IL_0024: shr - IL_0025: add - IL_0026: add - IL_0027: add - IL_0028: stloc.0 - IL_0029: ldloc.0 - IL_002a: ret - - IL_002b: ldc.i4.0 - IL_002c: ret - } // end of method MyExn::GetHashCode - - .method public hidebysig virtual instance int32 - GetHashCode() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 13 (0xd) - .maxstack 8 - .line 17,17 : 23,28 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() - IL_0007: callvirt instance int32 ABC/ABC/MyExn::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) - IL_000c: ret - } // end of method MyExn::GetHashCode - - .method public hidebysig virtual instance bool - Equals(object obj, - class [mscorlib]System.Collections.IEqualityComparer comp) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 76 (0x4c) - .maxstack 4 - .locals init (class [mscorlib]System.Exception V_0, - class [mscorlib]System.Exception V_1, - class [mscorlib]System.Collections.IEqualityComparer V_2) - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_0044 - - IL_000b: ldarg.1 - IL_000c: isinst [mscorlib]System.Exception - IL_0011: stloc.0 - IL_0012: ldloc.0 - IL_0013: brfalse.s IL_0017 - - IL_0015: br.s IL_0019 - - IL_0017: br.s IL_0042 - - IL_0019: ldloc.0 - IL_001a: stloc.1 - IL_001b: ldloc.0 - IL_001c: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) - IL_0021: brtrue.s IL_0025 - - IL_0023: br.s IL_0040 - - IL_0025: ldarg.2 - IL_0026: stloc.2 - IL_0027: ldarg.0 - IL_0028: castclass ABC/ABC/MyExn - IL_002d: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0032: ldloc.1 - IL_0033: castclass ABC/ABC/MyExn - IL_0038: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_003d: ceq - IL_003f: ret - - IL_0040: ldc.i4.0 - IL_0041: ret - - IL_0042: ldc.i4.0 - IL_0043: ret - - IL_0044: ldarg.1 - IL_0045: ldnull - IL_0046: cgt.un - IL_0048: ldc.i4.0 - IL_0049: ceq - IL_004b: ret - } // end of method MyExn::Equals - - .method public hidebysig instance bool - Equals(class [mscorlib]System.Exception obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 68 (0x44) - .maxstack 4 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_003c - - IL_000b: ldarg.1 - IL_000c: ldnull - IL_000d: cgt.un - IL_000f: brfalse.s IL_0013 - - IL_0011: br.s IL_0015 - - IL_0013: br.s IL_003a - - IL_0015: ldarg.1 - IL_0016: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) - IL_001b: brtrue.s IL_001f - - IL_001d: br.s IL_0038 - - IL_001f: ldarg.0 - IL_0020: castclass ABC/ABC/MyExn - IL_0025: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_002a: ldarg.1 - IL_002b: castclass ABC/ABC/MyExn - IL_0030: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0035: ceq - IL_0037: ret - - IL_0038: ldc.i4.0 - IL_0039: ret - - IL_003a: ldc.i4.0 - IL_003b: ret - - IL_003c: ldarg.1 - IL_003d: ldnull - IL_003e: cgt.un - IL_0040: ldc.i4.0 - IL_0041: ceq - IL_0043: ret - } // end of method MyExn::Equals - - .method public hidebysig virtual instance bool - Equals(object obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 25 (0x19) - .maxstack 4 - .locals init (class [mscorlib]System.Exception V_0) - IL_0000: nop - IL_0001: ldarg.1 - IL_0002: isinst [mscorlib]System.Exception - IL_0007: stloc.0 - IL_0008: ldloc.0 - IL_0009: brfalse.s IL_000d - - IL_000b: br.s IL_000f - - IL_000d: br.s IL_0017 - - IL_000f: ldarg.0 - IL_0010: ldloc.0 - IL_0011: callvirt instance bool ABC/ABC/MyExn::Equals(class [mscorlib]System.Exception) - IL_0016: ret - - IL_0017: ldc.i4.0 - IL_0018: ret - } // end of method MyExn::Equals - - .property instance int32 Data0() - { - .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 ABC/ABC/MyExn::get_Data0() - } // end of property MyExn::Data0 - } // end of class MyExn - - .class auto ansi nested public A - extends [mscorlib]System.Object - { - .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 - { - // Code size 17 (0x11) - .maxstack 8 - .line 18,18 : 20,21 - IL_0000: ldarg.0 - IL_0001: callvirt instance void [mscorlib]System.Object::.ctor() - IL_0006: ldarg.0 - IL_0007: pop - IL_0008: nop - IL_0009: ldarg.0 - IL_000a: ldarg.1 - IL_000b: stfld string ABC/ABC/A::x - .line 18,18 : 18,19 - IL_0010: ret - } // end of method A::.ctor - - .method public hidebysig specialname - instance string get_X() cil managed - { - // Code size 8 (0x8) - .maxstack 8 - .line 18,18 : 46,47 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldfld string ABC/ABC/A::x - IL_0007: ret - } // end of method A::get_X - - .property instance string X() - { - .get instance string ABC/ABC/A::get_X() - } // end of property A::X - } // end of class A - - .method public static int32 'add'(int32 x, - int32 y) cil managed - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationArgumentCountsAttribute::.ctor(int32[]) = ( 01 00 02 00 00 00 01 00 00 00 01 00 00 00 00 00 ) - // Code size 5 (0x5) - .maxstack 8 - .line 21,21 : 27,32 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldarg.1 - IL_0003: add - IL_0004: ret - } // end of method ABC::'add' - - .method public specialname static string - get_greeting() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 7 (0x7) - .maxstack 8 - IL_0000: nop - IL_0001: ldstr "hello" - IL_0006: ret - } // end of method ABC::get_greeting - - .property string greeting() - { - .get string ABC/ABC::get_greeting() - } // end of property ABC::greeting - } // end of class ABC - - .method public static int32 'add'(int32 x, - int32 y) cil managed - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationArgumentCountsAttribute::.ctor(int32[]) = ( 01 00 02 00 00 00 01 00 00 00 01 00 00 00 00 00 ) - // Code size 5 (0x5) - .maxstack 8 - .line 11,11 : 23,28 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldarg.1 - IL_0003: add - IL_0004: ret - } // end of method ABC::'add' - - .method public specialname static string - get_greeting() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 7 (0x7) - .maxstack 8 - IL_0000: nop - IL_0001: ldstr "hello" - IL_0006: ret - } // end of method ABC::get_greeting - - .property string greeting() - { - .get string ABC::get_greeting() - } // end of property ABC::greeting -} // end of class ABC - -.class private abstract auto ansi sealed ''.$ABC - extends [mscorlib]System.Object -{ - .field static assembly int32 init@ - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method private specialname rtspecialname static - void .cctor() cil managed - { - // Code size 14 (0xe) - .maxstack 3 - .locals init ([0] string greeting, - [1] string V_1) - .line 12,12 : 9,31 '' - IL_0000: nop - IL_0001: call string ABC::get_greeting() - IL_0006: stloc.0 - .line 22,22 : 13,35 '' - IL_0007: call string ABC/ABC::get_greeting() - IL_000c: stloc.1 - IL_000d: ret - } // end of method $ABC::.cctor -} // end of class ''.$ABC - - -// ============================================================= - -// *********** DISASSEMBLY COMPLETE *********************** diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/SerializableAttribute/ToplevelNamespaceP.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/SerializableAttribute/ToplevelNamespaceP.il.bsl deleted file mode 100644 index 78d8c5dba0c..00000000000 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/SerializableAttribute/ToplevelNamespaceP.il.bsl +++ /dev/null @@ -1,2529 +0,0 @@ - -// Microsoft (R) .NET Framework IL Disassembler. Version 4.6.81.0 -// Copyright (c) Microsoft Corporation. All rights reserved. - - - -// Metadata version: v4.0.30319 -.assembly extern retargetable mscorlib -{ - .publickeytoken = (7C EC 85 D7 BE A7 79 8E ) // |.....y. - .ver 2:0:5:0 -} -.assembly extern FSharp.Core -{ - .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: - .ver 3:47:41:0 -} -.assembly ToplevelNamespaceP -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, - int32, - int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) - - // --- The following custom attribute is added automatically, do not uncomment ------- - // .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 00 01 00 00 00 00 ) - - .hash algorithm 0x00008004 - .ver 0:0:0:0 -} -.mresource public FSharpSignatureData.ToplevelNamespaceP -{ - // Offset: 0x00000000 Length: 0x0000185A -} -.mresource public FSharpOptimizationData.ToplevelNamespaceP -{ - // Offset: 0x00001860 Length: 0x0000055D -} -.module ToplevelNamespaceP.dll -// MVID: {576266E4-88D9-D7FD-A745-0383E4666257} -.imagebase 0x00400000 -.file alignment 0x00000200 -.stackreserve 0x00100000 -.subsystem 0x0003 // WINDOWS_CUI -.corflags 0x00000001 // ILONLY -// Image base: 0x01450000 - - -// =============== CLASS MEMBERS DECLARATION =================== - -.class public auto autochar sealed beforefieldinit XYZ.Expr - extends [mscorlib]System.Object - implements class [mscorlib]System.IEquatable`1, - [mscorlib]System.Collections.IStructuralEquatable, - class [mscorlib]System.IComparable`1, - [mscorlib]System.IComparable, - [mscorlib]System.Collections.IStructuralComparable -{ - .custom instance void [mscorlib]System.Diagnostics.DebuggerDisplayAttribute::.ctor(string) = ( 01 00 15 7B 5F 5F 44 65 62 75 67 44 69 73 70 6C // ...{__DebugDispl - 61 79 28 29 2C 6E 71 7D 00 00 ) // ay(),nq}.. - .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 initonly int32 item - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static class XYZ.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 ) - // Code size 7 (0x7) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: newobj instance void XYZ.Expr::.ctor(int32) - IL_0006: ret - } // end of method Expr::NewNum - - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 14 (0xe) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: call instance void [mscorlib]System.Object::.ctor() - IL_0006: ldarg.0 - IL_0007: ldarg.1 - IL_0008: stfld int32 XYZ.Expr::item - IL_000d: ret - } // end of method Expr::.ctor - - .method public hidebysig instance int32 - get_Item() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 7 (0x7) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: ldfld int32 XYZ.Expr::item - IL_0006: ret - } // end of method Expr::get_Item - - .method public hidebysig instance int32 - get_Tag() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 4 (0x4) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: pop - IL_0002: ldc.i4.0 - IL_0003: ret - } // end of method Expr::get_Tag - - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 22 (0x16) - .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 - } // end of method Expr::__DebugDisplay - - .method public strict virtual instance string - ToString() cil managed - { - // Code size 22 (0x16) - .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,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 - } // end of method Expr::ToString - - .method public hidebysig virtual final - instance int32 CompareTo(class XYZ.Expr obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 81 (0x51) - .maxstack 4 - .locals init (class XYZ.Expr V_0, - class XYZ.Expr V_1, - class [mscorlib]System.Collections.IComparer V_2, - int32 V_3, - int32 V_4) - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_0043 - - IL_000b: ldarg.1 - IL_000c: ldnull - IL_000d: cgt.un - IL_000f: brfalse.s IL_0013 - - IL_0011: br.s IL_0015 - - IL_0013: br.s IL_0041 - - IL_0015: ldarg.0 - IL_0016: pop - IL_0017: ldarg.0 - IL_0018: stloc.0 - IL_0019: ldarg.1 - IL_001a: stloc.1 - IL_001b: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0020: stloc.2 - IL_0021: ldloc.0 - IL_0022: ldfld int32 XYZ.Expr::item - IL_0027: stloc.3 - IL_0028: ldloc.1 - IL_0029: ldfld int32 XYZ.Expr::item - IL_002e: stloc.s V_4 - IL_0030: ldloc.3 - IL_0031: ldloc.s V_4 - IL_0033: bge.s IL_0037 - - IL_0035: br.s IL_0039 - - IL_0037: br.s IL_003b - - IL_0039: ldc.i4.m1 - IL_003a: ret - - IL_003b: ldloc.3 - IL_003c: ldloc.s V_4 - IL_003e: cgt - IL_0040: ret - - IL_0041: ldc.i4.1 - IL_0042: ret - - IL_0043: ldarg.1 - IL_0044: ldnull - IL_0045: cgt.un - IL_0047: brfalse.s IL_004b - - IL_0049: br.s IL_004d - - IL_004b: br.s IL_004f - - IL_004d: ldc.i4.m1 - IL_004e: ret - - IL_004f: ldc.i4.0 - IL_0050: ret - } // end of method Expr::CompareTo - - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 14 (0xe) - .maxstack 8 - .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 7,7 : 10,14 'C:\\GitHub\\dsyme\\visualfsharp\\tests\\fsharpqa\\Source\\CodeGen\\EmittedIL\\SerializableAttribute\\ToplevelNamespace.fs' - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldarg.1 - IL_0003: unbox.any XYZ.Expr - IL_0008: callvirt instance int32 XYZ.Expr::CompareTo(class XYZ.Expr) - IL_000d: ret - } // end of method Expr::CompareTo - - .method public hidebysig virtual final - instance int32 CompareTo(object obj, - class [mscorlib]System.Collections.IComparer comp) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 97 (0x61) - .maxstack 4 - .locals init ([0] class XYZ.Expr V_0, - [1] class XYZ.Expr V_1, - [2] class XYZ.Expr V_2, - [3] class [mscorlib]System.Collections.IComparer V_3, - [4] int32 V_4, - [5] int32 V_5) - .line 7,7 : 10,14 - IL_0000: nop - IL_0001: ldarg.1 - IL_0002: unbox.any XYZ.Expr - IL_0007: stloc.0 - IL_0008: ldarg.0 - IL_0009: ldnull - IL_000a: cgt.un - IL_000c: brfalse.s IL_0010 - - IL_000e: br.s IL_0012 - - IL_0010: br.s IL_004e - - .line 100001,100001 : 0,0 - IL_0012: ldarg.1 - IL_0013: unbox.any XYZ.Expr - IL_0018: ldnull - IL_0019: cgt.un - IL_001b: brfalse.s IL_001f - - IL_001d: br.s IL_0021 - - IL_001f: br.s IL_004c - - .line 100001,100001 : 0,0 - IL_0021: ldarg.0 - IL_0022: pop - .line 100001,100001 : 0,0 - IL_0023: ldarg.0 - IL_0024: stloc.1 - IL_0025: ldloc.0 - IL_0026: stloc.2 - IL_0027: ldarg.2 - IL_0028: stloc.3 - IL_0029: ldloc.1 - IL_002a: ldfld int32 XYZ.Expr::item - IL_002f: stloc.s V_4 - IL_0031: ldloc.2 - IL_0032: ldfld int32 XYZ.Expr::item - IL_0037: stloc.s V_5 - IL_0039: ldloc.s V_4 - IL_003b: ldloc.s V_5 - IL_003d: bge.s IL_0041 - - IL_003f: br.s IL_0043 - - IL_0041: br.s IL_0045 - - .line 100001,100001 : 0,0 - IL_0043: ldc.i4.m1 - IL_0044: ret - - .line 100001,100001 : 0,0 - IL_0045: ldloc.s V_4 - IL_0047: ldloc.s V_5 - IL_0049: cgt - IL_004b: ret - - .line 100001,100001 : 0,0 - IL_004c: ldc.i4.1 - IL_004d: ret - - .line 100001,100001 : 0,0 - IL_004e: ldarg.1 - IL_004f: unbox.any XYZ.Expr - IL_0054: ldnull - IL_0055: cgt.un - IL_0057: brfalse.s IL_005b - - IL_0059: br.s IL_005d - - IL_005b: br.s IL_005f - - .line 100001,100001 : 0,0 - IL_005d: ldc.i4.m1 - IL_005e: ret - - .line 100001,100001 : 0,0 - IL_005f: ldc.i4.0 - IL_0060: ret - } // end of method Expr::CompareTo - - .method public hidebysig virtual final - instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 46 (0x2e) - .maxstack 7 - .locals init (int32 V_0, - class XYZ.Expr V_1, - class [mscorlib]System.Collections.IEqualityComparer V_2) - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_002c - - IL_000b: ldc.i4.0 - IL_000c: stloc.0 - IL_000d: ldarg.0 - IL_000e: pop - IL_000f: ldarg.0 - IL_0010: stloc.1 - IL_0011: ldc.i4.0 - IL_0012: stloc.0 - IL_0013: ldc.i4 0x9e3779b9 - IL_0018: ldarg.1 - IL_0019: stloc.2 - IL_001a: ldloc.1 - IL_001b: ldfld int32 XYZ.Expr::item - IL_0020: ldloc.0 - IL_0021: ldc.i4.6 - IL_0022: shl - IL_0023: ldloc.0 - IL_0024: ldc.i4.2 - IL_0025: shr - IL_0026: add - IL_0027: add - IL_0028: add - IL_0029: stloc.0 - IL_002a: ldloc.0 - IL_002b: ret - - IL_002c: ldc.i4.0 - IL_002d: ret - } // end of method Expr::GetHashCode - - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 13 (0xd) - .maxstack 8 - .line 7,7 : 10,14 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() - IL_0007: callvirt instance int32 XYZ.Expr::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) - IL_000c: ret - } // end of method Expr::GetHashCode - - .method public hidebysig virtual final - instance bool Equals(object obj, - class [mscorlib]System.Collections.IEqualityComparer comp) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 61 (0x3d) - .maxstack 4 - .locals init (class XYZ.Expr V_0, - class XYZ.Expr V_1, - class XYZ.Expr V_2, - class XYZ.Expr V_3, - class [mscorlib]System.Collections.IEqualityComparer V_4) - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_0035 - - IL_000b: ldarg.1 - IL_000c: isinst XYZ.Expr - IL_0011: stloc.0 - IL_0012: ldloc.0 - IL_0013: brfalse.s IL_0017 - - IL_0015: br.s IL_0019 - - IL_0017: br.s IL_0033 - - IL_0019: ldloc.0 - IL_001a: stloc.1 - IL_001b: ldarg.0 - IL_001c: pop - IL_001d: ldarg.0 - IL_001e: stloc.2 - IL_001f: ldloc.1 - IL_0020: stloc.3 - IL_0021: ldarg.2 - IL_0022: stloc.s V_4 - IL_0024: ldloc.2 - IL_0025: ldfld int32 XYZ.Expr::item - IL_002a: ldloc.3 - IL_002b: ldfld int32 XYZ.Expr::item - 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 - } // end of method Expr::Equals - - .method public hidebysig virtual final - instance bool Equals(class XYZ.Expr obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 52 (0x34) - .maxstack 4 - .locals init (class XYZ.Expr V_0, - class XYZ.Expr V_1) - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_002c - - IL_000b: ldarg.1 - IL_000c: ldnull - IL_000d: cgt.un - IL_000f: brfalse.s IL_0013 - - IL_0011: br.s IL_0015 - - IL_0013: br.s IL_002a - - IL_0015: ldarg.0 - IL_0016: pop - IL_0017: ldarg.0 - IL_0018: stloc.0 - IL_0019: ldarg.1 - IL_001a: stloc.1 - IL_001b: ldloc.0 - IL_001c: ldfld int32 XYZ.Expr::item - IL_0021: ldloc.1 - IL_0022: ldfld int32 XYZ.Expr::item - 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 - } // end of method Expr::Equals - - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 25 (0x19) - .maxstack 4 - .locals init (class XYZ.Expr V_0) - IL_0000: nop - IL_0001: ldarg.1 - IL_0002: isinst XYZ.Expr - IL_0007: stloc.0 - IL_0008: ldloc.0 - IL_0009: brfalse.s IL_000d - - IL_000b: br.s IL_000f - - IL_000d: br.s IL_0017 - - IL_000f: ldarg.0 - IL_0010: ldloc.0 - IL_0011: callvirt instance bool XYZ.Expr::Equals(class XYZ.Expr) - IL_0016: ret - - IL_0017: ldc.i4.0 - IL_0018: ret - } // end of method Expr::Equals - - .property instance int32 Tag() - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .get instance int32 XYZ.Expr::get_Tag() - } // end of property Expr::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 [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .get instance int32 XYZ.Expr::get_Item() - } // end of property Expr::Item -} // end of class XYZ.Expr - -.class public auto ansi beforefieldinit XYZ.MyExn - extends [mscorlib]System.Exception - implements [mscorlib]System.Collections.IStructuralEquatable -{ - .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 - { - // Code size 14 (0xe) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: call instance void [mscorlib]System.Exception::.ctor() - IL_0006: ldarg.0 - IL_0007: ldarg.1 - IL_0008: stfld int32 XYZ.MyExn::Data0@ - IL_000d: ret - } // end of method MyExn::.ctor - - .method public specialname rtspecialname - instance void .ctor() cil managed - { - // Code size 7 (0x7) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: call instance void [mscorlib]System.Exception::.ctor() - IL_0006: ret - } // end of method MyExn::.ctor - - .method public hidebysig specialname instance int32 - get_Data0() cil managed - { - // Code size 7 (0x7) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: ldfld int32 XYZ.MyExn::Data0@ - IL_0006: ret - } // end of method MyExn::get_Data0 - - .method public hidebysig virtual instance int32 - GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 45 (0x2d) - .maxstack 7 - .locals init (int32 V_0, - class [mscorlib]System.Collections.IEqualityComparer V_1) - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_002b - - IL_000b: ldc.i4.0 - IL_000c: stloc.0 - IL_000d: ldc.i4 0x9e3779b9 - IL_0012: ldarg.1 - IL_0013: stloc.1 - IL_0014: ldarg.0 - IL_0015: castclass XYZ.MyExn - IL_001a: call instance int32 XYZ.MyExn::get_Data0() - IL_001f: ldloc.0 - IL_0020: ldc.i4.6 - IL_0021: shl - IL_0022: ldloc.0 - IL_0023: ldc.i4.2 - IL_0024: shr - IL_0025: add - IL_0026: add - IL_0027: add - IL_0028: stloc.0 - IL_0029: ldloc.0 - IL_002a: ret - - IL_002b: ldc.i4.0 - IL_002c: ret - } // end of method MyExn::GetHashCode - - .method public hidebysig virtual instance int32 - GetHashCode() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 13 (0xd) - .maxstack 8 - .line 8,8 : 15,20 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() - IL_0007: callvirt instance int32 XYZ.MyExn::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) - IL_000c: ret - } // end of method MyExn::GetHashCode - - .method public hidebysig virtual instance bool - Equals(object obj, - class [mscorlib]System.Collections.IEqualityComparer comp) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 76 (0x4c) - .maxstack 4 - .locals init (class [mscorlib]System.Exception V_0, - class [mscorlib]System.Exception V_1, - class [mscorlib]System.Collections.IEqualityComparer V_2) - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_0044 - - IL_000b: ldarg.1 - IL_000c: isinst [mscorlib]System.Exception - IL_0011: stloc.0 - IL_0012: ldloc.0 - IL_0013: brfalse.s IL_0017 - - IL_0015: br.s IL_0019 - - IL_0017: br.s IL_0042 - - IL_0019: ldloc.0 - IL_001a: stloc.1 - IL_001b: ldloc.0 - IL_001c: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) - IL_0021: brtrue.s IL_0025 - - IL_0023: br.s IL_0040 - - IL_0025: ldarg.2 - IL_0026: stloc.2 - IL_0027: ldarg.0 - IL_0028: castclass XYZ.MyExn - IL_002d: call instance int32 XYZ.MyExn::get_Data0() - IL_0032: ldloc.1 - IL_0033: castclass XYZ.MyExn - IL_0038: call instance int32 XYZ.MyExn::get_Data0() - IL_003d: ceq - IL_003f: ret - - IL_0040: ldc.i4.0 - IL_0041: ret - - IL_0042: ldc.i4.0 - IL_0043: ret - - IL_0044: ldarg.1 - IL_0045: ldnull - IL_0046: cgt.un - IL_0048: ldc.i4.0 - IL_0049: ceq - IL_004b: ret - } // end of method MyExn::Equals - - .method public hidebysig instance bool - Equals(class [mscorlib]System.Exception obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 68 (0x44) - .maxstack 4 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_003c - - IL_000b: ldarg.1 - IL_000c: ldnull - IL_000d: cgt.un - IL_000f: brfalse.s IL_0013 - - IL_0011: br.s IL_0015 - - IL_0013: br.s IL_003a - - IL_0015: ldarg.1 - IL_0016: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) - IL_001b: brtrue.s IL_001f - - IL_001d: br.s IL_0038 - - IL_001f: ldarg.0 - IL_0020: castclass XYZ.MyExn - IL_0025: call instance int32 XYZ.MyExn::get_Data0() - IL_002a: ldarg.1 - IL_002b: castclass XYZ.MyExn - IL_0030: call instance int32 XYZ.MyExn::get_Data0() - IL_0035: ceq - IL_0037: ret - - IL_0038: ldc.i4.0 - IL_0039: ret - - IL_003a: ldc.i4.0 - IL_003b: ret - - IL_003c: ldarg.1 - IL_003d: ldnull - IL_003e: cgt.un - IL_0040: ldc.i4.0 - IL_0041: ceq - IL_0043: ret - } // end of method MyExn::Equals - - .method public hidebysig virtual instance bool - Equals(object obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 25 (0x19) - .maxstack 4 - .locals init (class [mscorlib]System.Exception V_0) - IL_0000: nop - IL_0001: ldarg.1 - IL_0002: isinst [mscorlib]System.Exception - IL_0007: stloc.0 - IL_0008: ldloc.0 - IL_0009: brfalse.s IL_000d - - IL_000b: br.s IL_000f - - IL_000d: br.s IL_0017 - - IL_000f: ldarg.0 - IL_0010: ldloc.0 - IL_0011: callvirt instance bool XYZ.MyExn::Equals(class [mscorlib]System.Exception) - IL_0016: ret - - IL_0017: ldc.i4.0 - IL_0018: ret - } // end of method MyExn::Equals - - .property instance int32 Data0() - { - .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 XYZ.MyExn::get_Data0() - } // end of property MyExn::Data0 -} // end of class XYZ.MyExn - -.class public auto ansi XYZ.A - extends [mscorlib]System.Object -{ - .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 - { - // Code size 17 (0x11) - .maxstack 8 - .line 9,9 : 12,13 - IL_0000: ldarg.0 - IL_0001: callvirt instance void [mscorlib]System.Object::.ctor() - IL_0006: ldarg.0 - IL_0007: pop - IL_0008: nop - IL_0009: ldarg.0 - IL_000a: ldarg.1 - IL_000b: stfld string XYZ.A::x - .line 9,9 : 10,11 - IL_0010: ret - } // end of method A::.ctor - - .method public hidebysig specialname instance string - get_X() cil managed - { - // Code size 8 (0x8) - .maxstack 8 - .line 9,9 : 38,39 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldfld string XYZ.A::x - IL_0007: ret - } // end of method A::get_X - - .property instance string X() - { - .get instance string XYZ.A::get_X() - } // end of property A::X -} // end of class XYZ.A - -.class public abstract auto ansi sealed XYZ.ABC - extends [mscorlib]System.Object -{ - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) - .class auto autochar sealed nested public beforefieldinit Expr - extends [mscorlib]System.Object - implements class [mscorlib]System.IEquatable`1, - [mscorlib]System.Collections.IStructuralEquatable, - class [mscorlib]System.IComparable`1, - [mscorlib]System.IComparable, - [mscorlib]System.Collections.IStructuralComparable - { - .custom instance void [mscorlib]System.Diagnostics.DebuggerDisplayAttribute::.ctor(string) = ( 01 00 15 7B 5F 5F 44 65 62 75 67 44 69 73 70 6C // ...{__DebugDispl - 61 79 28 29 2C 6E 71 7D 00 00 ) // ay(),nq}.. - .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 initonly int32 item - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static 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 ) - // Code size 7 (0x7) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: newobj instance void XYZ.ABC/Expr::.ctor(int32) - IL_0006: ret - } // end of method Expr::NewNum - - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 14 (0xe) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: call instance void [mscorlib]System.Object::.ctor() - IL_0006: ldarg.0 - IL_0007: ldarg.1 - IL_0008: stfld int32 XYZ.ABC/Expr::item - IL_000d: ret - } // end of method Expr::.ctor - - .method public hidebysig instance int32 - get_Item() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 7 (0x7) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: ldfld int32 XYZ.ABC/Expr::item - IL_0006: ret - } // end of method Expr::get_Item - - .method public hidebysig instance int32 - get_Tag() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 4 (0x4) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: pop - IL_0002: ldc.i4.0 - IL_0003: ret - } // end of method Expr::get_Tag - - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 22 (0x16) - .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 - } // end of method Expr::__DebugDisplay - - .method public strict virtual instance string - ToString() cil managed - { - // Code size 22 (0x16) - .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,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 - } // end of method Expr::ToString - - .method public hidebysig virtual final - instance int32 CompareTo(class XYZ.ABC/Expr obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 81 (0x51) - .maxstack 4 - .locals init (class XYZ.ABC/Expr V_0, - class XYZ.ABC/Expr V_1, - class [mscorlib]System.Collections.IComparer V_2, - int32 V_3, - int32 V_4) - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_0043 - - IL_000b: ldarg.1 - IL_000c: ldnull - IL_000d: cgt.un - IL_000f: brfalse.s IL_0013 - - IL_0011: br.s IL_0015 - - IL_0013: br.s IL_0041 - - IL_0015: ldarg.0 - IL_0016: pop - IL_0017: ldarg.0 - IL_0018: stloc.0 - IL_0019: ldarg.1 - IL_001a: stloc.1 - IL_001b: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0020: stloc.2 - IL_0021: ldloc.0 - IL_0022: ldfld int32 XYZ.ABC/Expr::item - IL_0027: stloc.3 - IL_0028: ldloc.1 - IL_0029: ldfld int32 XYZ.ABC/Expr::item - IL_002e: stloc.s V_4 - IL_0030: ldloc.3 - IL_0031: ldloc.s V_4 - IL_0033: bge.s IL_0037 - - IL_0035: br.s IL_0039 - - IL_0037: br.s IL_003b - - IL_0039: ldc.i4.m1 - IL_003a: ret - - IL_003b: ldloc.3 - IL_003c: ldloc.s V_4 - IL_003e: cgt - IL_0040: ret - - IL_0041: ldc.i4.1 - IL_0042: ret - - IL_0043: ldarg.1 - IL_0044: ldnull - IL_0045: cgt.un - IL_0047: brfalse.s IL_004b - - IL_0049: br.s IL_004d - - IL_004b: br.s IL_004f - - IL_004d: ldc.i4.m1 - IL_004e: ret - - IL_004f: ldc.i4.0 - IL_0050: ret - } // end of method Expr::CompareTo - - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 14 (0xe) - .maxstack 8 - .line 13,13 : 14,18 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldarg.1 - IL_0003: unbox.any XYZ.ABC/Expr - IL_0008: callvirt instance int32 XYZ.ABC/Expr::CompareTo(class XYZ.ABC/Expr) - IL_000d: ret - } // end of method Expr::CompareTo - - .method public hidebysig virtual final - instance int32 CompareTo(object obj, - class [mscorlib]System.Collections.IComparer comp) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 97 (0x61) - .maxstack 4 - .locals init ([0] class XYZ.ABC/Expr V_0, - [1] class XYZ.ABC/Expr V_1, - [2] class XYZ.ABC/Expr V_2, - [3] class [mscorlib]System.Collections.IComparer V_3, - [4] int32 V_4, - [5] int32 V_5) - .line 13,13 : 14,18 - IL_0000: nop - IL_0001: ldarg.1 - IL_0002: unbox.any XYZ.ABC/Expr - IL_0007: stloc.0 - IL_0008: ldarg.0 - IL_0009: ldnull - IL_000a: cgt.un - IL_000c: brfalse.s IL_0010 - - IL_000e: br.s IL_0012 - - IL_0010: br.s IL_004e - - .line 100001,100001 : 0,0 - IL_0012: ldarg.1 - IL_0013: unbox.any XYZ.ABC/Expr - IL_0018: ldnull - IL_0019: cgt.un - IL_001b: brfalse.s IL_001f - - IL_001d: br.s IL_0021 - - IL_001f: br.s IL_004c - - .line 100001,100001 : 0,0 - IL_0021: ldarg.0 - IL_0022: pop - .line 100001,100001 : 0,0 - IL_0023: ldarg.0 - IL_0024: stloc.1 - IL_0025: ldloc.0 - IL_0026: stloc.2 - IL_0027: ldarg.2 - IL_0028: stloc.3 - IL_0029: ldloc.1 - IL_002a: ldfld int32 XYZ.ABC/Expr::item - IL_002f: stloc.s V_4 - IL_0031: ldloc.2 - IL_0032: ldfld int32 XYZ.ABC/Expr::item - IL_0037: stloc.s V_5 - IL_0039: ldloc.s V_4 - IL_003b: ldloc.s V_5 - IL_003d: bge.s IL_0041 - - IL_003f: br.s IL_0043 - - IL_0041: br.s IL_0045 - - .line 100001,100001 : 0,0 - IL_0043: ldc.i4.m1 - IL_0044: ret - - .line 100001,100001 : 0,0 - IL_0045: ldloc.s V_4 - IL_0047: ldloc.s V_5 - IL_0049: cgt - IL_004b: ret - - .line 100001,100001 : 0,0 - IL_004c: ldc.i4.1 - IL_004d: ret - - .line 100001,100001 : 0,0 - IL_004e: ldarg.1 - IL_004f: unbox.any XYZ.ABC/Expr - IL_0054: ldnull - IL_0055: cgt.un - IL_0057: brfalse.s IL_005b - - IL_0059: br.s IL_005d - - IL_005b: br.s IL_005f - - .line 100001,100001 : 0,0 - IL_005d: ldc.i4.m1 - IL_005e: ret - - .line 100001,100001 : 0,0 - IL_005f: ldc.i4.0 - IL_0060: ret - } // end of method Expr::CompareTo - - .method public hidebysig virtual final - instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 46 (0x2e) - .maxstack 7 - .locals init (int32 V_0, - class XYZ.ABC/Expr V_1, - class [mscorlib]System.Collections.IEqualityComparer V_2) - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_002c - - IL_000b: ldc.i4.0 - IL_000c: stloc.0 - IL_000d: ldarg.0 - IL_000e: pop - IL_000f: ldarg.0 - IL_0010: stloc.1 - IL_0011: ldc.i4.0 - IL_0012: stloc.0 - IL_0013: ldc.i4 0x9e3779b9 - IL_0018: ldarg.1 - IL_0019: stloc.2 - IL_001a: ldloc.1 - IL_001b: ldfld int32 XYZ.ABC/Expr::item - IL_0020: ldloc.0 - IL_0021: ldc.i4.6 - IL_0022: shl - IL_0023: ldloc.0 - IL_0024: ldc.i4.2 - IL_0025: shr - IL_0026: add - IL_0027: add - IL_0028: add - IL_0029: stloc.0 - IL_002a: ldloc.0 - IL_002b: ret - - IL_002c: ldc.i4.0 - IL_002d: ret - } // end of method Expr::GetHashCode - - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 13 (0xd) - .maxstack 8 - .line 13,13 : 14,18 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() - IL_0007: callvirt instance int32 XYZ.ABC/Expr::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) - IL_000c: ret - } // end of method Expr::GetHashCode - - .method public hidebysig virtual final - instance bool Equals(object obj, - class [mscorlib]System.Collections.IEqualityComparer comp) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 61 (0x3d) - .maxstack 4 - .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 [mscorlib]System.Collections.IEqualityComparer V_4) - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_0035 - - IL_000b: ldarg.1 - IL_000c: isinst XYZ.ABC/Expr - IL_0011: stloc.0 - IL_0012: ldloc.0 - IL_0013: brfalse.s IL_0017 - - IL_0015: br.s IL_0019 - - IL_0017: br.s IL_0033 - - IL_0019: ldloc.0 - IL_001a: stloc.1 - IL_001b: ldarg.0 - IL_001c: pop - IL_001d: ldarg.0 - IL_001e: stloc.2 - IL_001f: ldloc.1 - IL_0020: stloc.3 - IL_0021: ldarg.2 - IL_0022: stloc.s V_4 - IL_0024: ldloc.2 - IL_0025: ldfld int32 XYZ.ABC/Expr::item - IL_002a: ldloc.3 - IL_002b: ldfld int32 XYZ.ABC/Expr::item - 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 - } // end of method Expr::Equals - - .method public hidebysig virtual final - instance bool Equals(class XYZ.ABC/Expr obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 52 (0x34) - .maxstack 4 - .locals init (class XYZ.ABC/Expr V_0, - class XYZ.ABC/Expr V_1) - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_002c - - IL_000b: ldarg.1 - IL_000c: ldnull - IL_000d: cgt.un - IL_000f: brfalse.s IL_0013 - - IL_0011: br.s IL_0015 - - IL_0013: br.s IL_002a - - IL_0015: ldarg.0 - IL_0016: pop - IL_0017: ldarg.0 - IL_0018: stloc.0 - IL_0019: ldarg.1 - IL_001a: stloc.1 - IL_001b: ldloc.0 - IL_001c: ldfld int32 XYZ.ABC/Expr::item - IL_0021: ldloc.1 - IL_0022: ldfld int32 XYZ.ABC/Expr::item - 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 - } // end of method Expr::Equals - - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 25 (0x19) - .maxstack 4 - .locals init (class XYZ.ABC/Expr V_0) - IL_0000: nop - IL_0001: ldarg.1 - IL_0002: isinst XYZ.ABC/Expr - IL_0007: stloc.0 - IL_0008: ldloc.0 - IL_0009: brfalse.s IL_000d - - IL_000b: br.s IL_000f - - IL_000d: br.s IL_0017 - - IL_000f: ldarg.0 - IL_0010: ldloc.0 - IL_0011: callvirt instance bool XYZ.ABC/Expr::Equals(class XYZ.ABC/Expr) - IL_0016: ret - - IL_0017: ldc.i4.0 - IL_0018: ret - } // end of method Expr::Equals - - .property instance int32 Tag() - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .get instance int32 XYZ.ABC/Expr::get_Tag() - } // end of property Expr::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 [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .get instance int32 XYZ.ABC/Expr::get_Item() - } // end of property Expr::Item - } // end of class Expr - - .class auto ansi nested public beforefieldinit MyExn - extends [mscorlib]System.Exception - implements [mscorlib]System.Collections.IStructuralEquatable - { - .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 - { - // Code size 14 (0xe) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: call instance void [mscorlib]System.Exception::.ctor() - IL_0006: ldarg.0 - IL_0007: ldarg.1 - IL_0008: stfld int32 XYZ.ABC/MyExn::Data0@ - IL_000d: ret - } // end of method MyExn::.ctor - - .method public specialname rtspecialname - instance void .ctor() cil managed - { - // Code size 7 (0x7) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: call instance void [mscorlib]System.Exception::.ctor() - IL_0006: ret - } // end of method MyExn::.ctor - - .method public hidebysig specialname - instance int32 get_Data0() cil managed - { - // Code size 7 (0x7) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: ldfld int32 XYZ.ABC/MyExn::Data0@ - IL_0006: ret - } // end of method MyExn::get_Data0 - - .method public hidebysig virtual instance int32 - GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 45 (0x2d) - .maxstack 7 - .locals init (int32 V_0, - class [mscorlib]System.Collections.IEqualityComparer V_1) - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_002b - - IL_000b: ldc.i4.0 - IL_000c: stloc.0 - IL_000d: ldc.i4 0x9e3779b9 - IL_0012: ldarg.1 - IL_0013: stloc.1 - IL_0014: ldarg.0 - IL_0015: castclass XYZ.ABC/MyExn - IL_001a: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_001f: ldloc.0 - IL_0020: ldc.i4.6 - IL_0021: shl - IL_0022: ldloc.0 - IL_0023: ldc.i4.2 - IL_0024: shr - IL_0025: add - IL_0026: add - IL_0027: add - IL_0028: stloc.0 - IL_0029: ldloc.0 - IL_002a: ret - - IL_002b: ldc.i4.0 - IL_002c: ret - } // end of method MyExn::GetHashCode - - .method public hidebysig virtual instance int32 - GetHashCode() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 13 (0xd) - .maxstack 8 - .line 14,14 : 19,24 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() - IL_0007: callvirt instance int32 XYZ.ABC/MyExn::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) - IL_000c: ret - } // end of method MyExn::GetHashCode - - .method public hidebysig virtual instance bool - Equals(object obj, - class [mscorlib]System.Collections.IEqualityComparer comp) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 76 (0x4c) - .maxstack 4 - .locals init (class [mscorlib]System.Exception V_0, - class [mscorlib]System.Exception V_1, - class [mscorlib]System.Collections.IEqualityComparer V_2) - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_0044 - - IL_000b: ldarg.1 - IL_000c: isinst [mscorlib]System.Exception - IL_0011: stloc.0 - IL_0012: ldloc.0 - IL_0013: brfalse.s IL_0017 - - IL_0015: br.s IL_0019 - - IL_0017: br.s IL_0042 - - IL_0019: ldloc.0 - IL_001a: stloc.1 - IL_001b: ldloc.0 - IL_001c: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) - IL_0021: brtrue.s IL_0025 - - IL_0023: br.s IL_0040 - - IL_0025: ldarg.2 - IL_0026: stloc.2 - IL_0027: ldarg.0 - IL_0028: castclass XYZ.ABC/MyExn - IL_002d: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0032: ldloc.1 - IL_0033: castclass XYZ.ABC/MyExn - IL_0038: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_003d: ceq - IL_003f: ret - - IL_0040: ldc.i4.0 - IL_0041: ret - - IL_0042: ldc.i4.0 - IL_0043: ret - - IL_0044: ldarg.1 - IL_0045: ldnull - IL_0046: cgt.un - IL_0048: ldc.i4.0 - IL_0049: ceq - IL_004b: ret - } // end of method MyExn::Equals - - .method public hidebysig instance bool - Equals(class [mscorlib]System.Exception obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 68 (0x44) - .maxstack 4 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_003c - - IL_000b: ldarg.1 - IL_000c: ldnull - IL_000d: cgt.un - IL_000f: brfalse.s IL_0013 - - IL_0011: br.s IL_0015 - - IL_0013: br.s IL_003a - - IL_0015: ldarg.1 - IL_0016: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) - IL_001b: brtrue.s IL_001f - - IL_001d: br.s IL_0038 - - IL_001f: ldarg.0 - IL_0020: castclass XYZ.ABC/MyExn - IL_0025: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_002a: ldarg.1 - IL_002b: castclass XYZ.ABC/MyExn - IL_0030: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0035: ceq - IL_0037: ret - - IL_0038: ldc.i4.0 - IL_0039: ret - - IL_003a: ldc.i4.0 - IL_003b: ret - - IL_003c: ldarg.1 - IL_003d: ldnull - IL_003e: cgt.un - IL_0040: ldc.i4.0 - IL_0041: ceq - IL_0043: ret - } // end of method MyExn::Equals - - .method public hidebysig virtual instance bool - Equals(object obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 25 (0x19) - .maxstack 4 - .locals init (class [mscorlib]System.Exception V_0) - IL_0000: nop - IL_0001: ldarg.1 - IL_0002: isinst [mscorlib]System.Exception - IL_0007: stloc.0 - IL_0008: ldloc.0 - IL_0009: brfalse.s IL_000d - - IL_000b: br.s IL_000f - - IL_000d: br.s IL_0017 - - IL_000f: ldarg.0 - IL_0010: ldloc.0 - IL_0011: callvirt instance bool XYZ.ABC/MyExn::Equals(class [mscorlib]System.Exception) - IL_0016: ret - - IL_0017: ldc.i4.0 - IL_0018: ret - } // end of method MyExn::Equals - - .property instance int32 Data0() - { - .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 XYZ.ABC/MyExn::get_Data0() - } // end of property MyExn::Data0 - } // end of class MyExn - - .class auto ansi nested public A - extends [mscorlib]System.Object - { - .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 - { - // Code size 17 (0x11) - .maxstack 8 - .line 15,15 : 16,17 - IL_0000: ldarg.0 - IL_0001: callvirt instance void [mscorlib]System.Object::.ctor() - IL_0006: ldarg.0 - IL_0007: pop - IL_0008: nop - IL_0009: ldarg.0 - IL_000a: ldarg.1 - IL_000b: stfld string XYZ.ABC/A::x - .line 15,15 : 14,15 - IL_0010: ret - } // end of method A::.ctor - - .method public hidebysig specialname - instance string get_X() cil managed - { - // Code size 8 (0x8) - .maxstack 8 - .line 15,15 : 42,43 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldfld string XYZ.ABC/A::x - IL_0007: ret - } // end of method A::get_X - - .property instance string X() - { - .get instance string XYZ.ABC/A::get_X() - } // end of property A::X - } // end of class A - - .class abstract auto ansi sealed nested public ABC - extends [mscorlib]System.Object - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) - .class auto autochar sealed nested public beforefieldinit Expr - extends [mscorlib]System.Object - implements class [mscorlib]System.IEquatable`1, - [mscorlib]System.Collections.IStructuralEquatable, - class [mscorlib]System.IComparable`1, - [mscorlib]System.IComparable, - [mscorlib]System.Collections.IStructuralComparable - { - .custom instance void [mscorlib]System.Diagnostics.DebuggerDisplayAttribute::.ctor(string) = ( 01 00 15 7B 5F 5F 44 65 62 75 67 44 69 73 70 6C // ...{__DebugDispl - 61 79 28 29 2C 6E 71 7D 00 00 ) // ay(),nq}.. - .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 initonly int32 item - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method public static 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 ) - // Code size 7 (0x7) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: newobj instance void XYZ.ABC/ABC/Expr::.ctor(int32) - IL_0006: ret - } // end of method Expr::NewNum - - .method assembly specialname rtspecialname - instance void .ctor(int32 item) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 14 (0xe) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: call instance void [mscorlib]System.Object::.ctor() - IL_0006: ldarg.0 - IL_0007: ldarg.1 - IL_0008: stfld int32 XYZ.ABC/ABC/Expr::item - IL_000d: ret - } // end of method Expr::.ctor - - .method public hidebysig instance int32 - get_Item() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 7 (0x7) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_0006: ret - } // end of method Expr::get_Item - - .method public hidebysig instance int32 - get_Tag() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 4 (0x4) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: pop - IL_0002: ldc.i4.0 - IL_0003: ret - } // end of method Expr::get_Tag - - .method assembly hidebysig specialname - instance object __DebugDisplay() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 22 (0x16) - .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 - } // end of method Expr::__DebugDisplay - - .method public strict virtual instance string - ToString() cil managed - { - // Code size 22 (0x16) - .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,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 - } // end of method Expr::ToString - - .method public hidebysig virtual final - instance int32 CompareTo(class XYZ.ABC/ABC/Expr obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 81 (0x51) - .maxstack 4 - .locals init (class XYZ.ABC/ABC/Expr V_0, - class XYZ.ABC/ABC/Expr V_1, - class [mscorlib]System.Collections.IComparer V_2, - int32 V_3, - int32 V_4) - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_0043 - - IL_000b: ldarg.1 - IL_000c: ldnull - IL_000d: cgt.un - IL_000f: brfalse.s IL_0013 - - IL_0011: br.s IL_0015 - - IL_0013: br.s IL_0041 - - IL_0015: ldarg.0 - IL_0016: pop - IL_0017: ldarg.0 - IL_0018: stloc.0 - IL_0019: ldarg.1 - IL_001a: stloc.1 - IL_001b: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0020: stloc.2 - IL_0021: ldloc.0 - IL_0022: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_0027: stloc.3 - IL_0028: ldloc.1 - IL_0029: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_002e: stloc.s V_4 - IL_0030: ldloc.3 - IL_0031: ldloc.s V_4 - IL_0033: bge.s IL_0037 - - IL_0035: br.s IL_0039 - - IL_0037: br.s IL_003b - - IL_0039: ldc.i4.m1 - IL_003a: ret - - IL_003b: ldloc.3 - IL_003c: ldloc.s V_4 - IL_003e: cgt - IL_0040: ret - - IL_0041: ldc.i4.1 - IL_0042: ret - - IL_0043: ldarg.1 - IL_0044: ldnull - IL_0045: cgt.un - IL_0047: brfalse.s IL_004b - - IL_0049: br.s IL_004d - - IL_004b: br.s IL_004f - - IL_004d: ldc.i4.m1 - IL_004e: ret - - IL_004f: ldc.i4.0 - IL_0050: ret - } // end of method Expr::CompareTo - - .method public hidebysig virtual final - instance int32 CompareTo(object obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 14 (0xe) - .maxstack 8 - .line 23,23 : 18,22 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldarg.1 - IL_0003: unbox.any XYZ.ABC/ABC/Expr - IL_0008: callvirt instance int32 XYZ.ABC/ABC/Expr::CompareTo(class XYZ.ABC/ABC/Expr) - IL_000d: ret - } // end of method Expr::CompareTo - - .method public hidebysig virtual final - instance int32 CompareTo(object obj, - class [mscorlib]System.Collections.IComparer comp) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 97 (0x61) - .maxstack 4 - .locals init ([0] class XYZ.ABC/ABC/Expr V_0, - [1] class XYZ.ABC/ABC/Expr V_1, - [2] class XYZ.ABC/ABC/Expr V_2, - [3] class [mscorlib]System.Collections.IComparer V_3, - [4] int32 V_4, - [5] int32 V_5) - .line 23,23 : 18,22 - IL_0000: nop - IL_0001: ldarg.1 - IL_0002: unbox.any XYZ.ABC/ABC/Expr - IL_0007: stloc.0 - IL_0008: ldarg.0 - IL_0009: ldnull - IL_000a: cgt.un - IL_000c: brfalse.s IL_0010 - - IL_000e: br.s IL_0012 - - IL_0010: br.s IL_004e - - .line 100001,100001 : 0,0 - IL_0012: ldarg.1 - IL_0013: unbox.any XYZ.ABC/ABC/Expr - IL_0018: ldnull - IL_0019: cgt.un - IL_001b: brfalse.s IL_001f - - IL_001d: br.s IL_0021 - - IL_001f: br.s IL_004c - - .line 100001,100001 : 0,0 - IL_0021: ldarg.0 - IL_0022: pop - .line 100001,100001 : 0,0 - IL_0023: ldarg.0 - IL_0024: stloc.1 - IL_0025: ldloc.0 - IL_0026: stloc.2 - IL_0027: ldarg.2 - IL_0028: stloc.3 - IL_0029: ldloc.1 - IL_002a: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_002f: stloc.s V_4 - IL_0031: ldloc.2 - IL_0032: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_0037: stloc.s V_5 - IL_0039: ldloc.s V_4 - IL_003b: ldloc.s V_5 - IL_003d: bge.s IL_0041 - - IL_003f: br.s IL_0043 - - IL_0041: br.s IL_0045 - - .line 100001,100001 : 0,0 - IL_0043: ldc.i4.m1 - IL_0044: ret - - .line 100001,100001 : 0,0 - IL_0045: ldloc.s V_4 - IL_0047: ldloc.s V_5 - IL_0049: cgt - IL_004b: ret - - .line 100001,100001 : 0,0 - IL_004c: ldc.i4.1 - IL_004d: ret - - .line 100001,100001 : 0,0 - IL_004e: ldarg.1 - IL_004f: unbox.any XYZ.ABC/ABC/Expr - IL_0054: ldnull - IL_0055: cgt.un - IL_0057: brfalse.s IL_005b - - IL_0059: br.s IL_005d - - IL_005b: br.s IL_005f - - .line 100001,100001 : 0,0 - IL_005d: ldc.i4.m1 - IL_005e: ret - - .line 100001,100001 : 0,0 - IL_005f: ldc.i4.0 - IL_0060: ret - } // end of method Expr::CompareTo - - .method public hidebysig virtual final - instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 46 (0x2e) - .maxstack 7 - .locals init (int32 V_0, - class XYZ.ABC/ABC/Expr V_1, - class [mscorlib]System.Collections.IEqualityComparer V_2) - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_002c - - IL_000b: ldc.i4.0 - IL_000c: stloc.0 - IL_000d: ldarg.0 - IL_000e: pop - IL_000f: ldarg.0 - IL_0010: stloc.1 - IL_0011: ldc.i4.0 - IL_0012: stloc.0 - IL_0013: ldc.i4 0x9e3779b9 - IL_0018: ldarg.1 - IL_0019: stloc.2 - IL_001a: ldloc.1 - IL_001b: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_0020: ldloc.0 - IL_0021: ldc.i4.6 - IL_0022: shl - IL_0023: ldloc.0 - IL_0024: ldc.i4.2 - IL_0025: shr - IL_0026: add - IL_0027: add - IL_0028: add - IL_0029: stloc.0 - IL_002a: ldloc.0 - IL_002b: ret - - IL_002c: ldc.i4.0 - IL_002d: ret - } // end of method Expr::GetHashCode - - .method public hidebysig virtual final - instance int32 GetHashCode() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 13 (0xd) - .maxstack 8 - .line 23,23 : 18,22 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() - IL_0007: callvirt instance int32 XYZ.ABC/ABC/Expr::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) - IL_000c: ret - } // end of method Expr::GetHashCode - - .method public hidebysig virtual final - instance bool Equals(object obj, - class [mscorlib]System.Collections.IEqualityComparer comp) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 61 (0x3d) - .maxstack 4 - .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 [mscorlib]System.Collections.IEqualityComparer V_4) - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_0035 - - IL_000b: ldarg.1 - IL_000c: isinst XYZ.ABC/ABC/Expr - IL_0011: stloc.0 - IL_0012: ldloc.0 - IL_0013: brfalse.s IL_0017 - - IL_0015: br.s IL_0019 - - IL_0017: br.s IL_0033 - - IL_0019: ldloc.0 - IL_001a: stloc.1 - IL_001b: ldarg.0 - IL_001c: pop - IL_001d: ldarg.0 - IL_001e: stloc.2 - IL_001f: ldloc.1 - IL_0020: stloc.3 - IL_0021: ldarg.2 - IL_0022: stloc.s V_4 - IL_0024: ldloc.2 - IL_0025: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_002a: ldloc.3 - IL_002b: ldfld int32 XYZ.ABC/ABC/Expr::item - 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 - } // end of method Expr::Equals - - .method public hidebysig virtual final - instance bool Equals(class XYZ.ABC/ABC/Expr obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 52 (0x34) - .maxstack 4 - .locals init (class XYZ.ABC/ABC/Expr V_0, - class XYZ.ABC/ABC/Expr V_1) - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_002c - - IL_000b: ldarg.1 - IL_000c: ldnull - IL_000d: cgt.un - IL_000f: brfalse.s IL_0013 - - IL_0011: br.s IL_0015 - - IL_0013: br.s IL_002a - - IL_0015: ldarg.0 - IL_0016: pop - IL_0017: ldarg.0 - IL_0018: stloc.0 - IL_0019: ldarg.1 - IL_001a: stloc.1 - IL_001b: ldloc.0 - IL_001c: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_0021: ldloc.1 - IL_0022: ldfld int32 XYZ.ABC/ABC/Expr::item - 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 - } // end of method Expr::Equals - - .method public hidebysig virtual final - instance bool Equals(object obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 25 (0x19) - .maxstack 4 - .locals init (class XYZ.ABC/ABC/Expr V_0) - IL_0000: nop - IL_0001: ldarg.1 - IL_0002: isinst XYZ.ABC/ABC/Expr - IL_0007: stloc.0 - IL_0008: ldloc.0 - IL_0009: brfalse.s IL_000d - - IL_000b: br.s IL_000f - - IL_000d: br.s IL_0017 - - IL_000f: ldarg.0 - IL_0010: ldloc.0 - IL_0011: callvirt instance bool XYZ.ABC/ABC/Expr::Equals(class XYZ.ABC/ABC/Expr) - IL_0016: ret - - IL_0017: ldc.i4.0 - IL_0018: ret - } // end of method Expr::Equals - - .property instance int32 Tag() - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .get instance int32 XYZ.ABC/ABC/Expr::get_Tag() - } // end of property Expr::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 [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .get instance int32 XYZ.ABC/ABC/Expr::get_Item() - } // end of property Expr::Item - } // end of class Expr - - .class auto ansi nested public beforefieldinit MyExn - extends [mscorlib]System.Exception - implements [mscorlib]System.Collections.IStructuralEquatable - { - .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 - { - // Code size 14 (0xe) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: call instance void [mscorlib]System.Exception::.ctor() - IL_0006: ldarg.0 - IL_0007: ldarg.1 - IL_0008: stfld int32 XYZ.ABC/ABC/MyExn::Data0@ - IL_000d: ret - } // end of method MyExn::.ctor - - .method public specialname rtspecialname - instance void .ctor() cil managed - { - // Code size 7 (0x7) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: call instance void [mscorlib]System.Exception::.ctor() - IL_0006: ret - } // end of method MyExn::.ctor - - .method public hidebysig specialname - instance int32 get_Data0() cil managed - { - // Code size 7 (0x7) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: ldfld int32 XYZ.ABC/ABC/MyExn::Data0@ - IL_0006: ret - } // end of method MyExn::get_Data0 - - .method public hidebysig virtual instance int32 - GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 45 (0x2d) - .maxstack 7 - .locals init (int32 V_0, - class [mscorlib]System.Collections.IEqualityComparer V_1) - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_002b - - IL_000b: ldc.i4.0 - IL_000c: stloc.0 - IL_000d: ldc.i4 0x9e3779b9 - IL_0012: ldarg.1 - IL_0013: stloc.1 - IL_0014: ldarg.0 - IL_0015: castclass XYZ.ABC/ABC/MyExn - IL_001a: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_001f: ldloc.0 - IL_0020: ldc.i4.6 - IL_0021: shl - IL_0022: ldloc.0 - IL_0023: ldc.i4.2 - IL_0024: shr - IL_0025: add - IL_0026: add - IL_0027: add - IL_0028: stloc.0 - IL_0029: ldloc.0 - IL_002a: ret - - IL_002b: ldc.i4.0 - IL_002c: ret - } // end of method MyExn::GetHashCode - - .method public hidebysig virtual instance int32 - GetHashCode() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 13 (0xd) - .maxstack 8 - .line 24,24 : 23,28 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() - IL_0007: callvirt instance int32 XYZ.ABC/ABC/MyExn::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) - IL_000c: ret - } // end of method MyExn::GetHashCode - - .method public hidebysig virtual instance bool - Equals(object obj, - class [mscorlib]System.Collections.IEqualityComparer comp) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 76 (0x4c) - .maxstack 4 - .locals init (class [mscorlib]System.Exception V_0, - class [mscorlib]System.Exception V_1, - class [mscorlib]System.Collections.IEqualityComparer V_2) - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_0044 - - IL_000b: ldarg.1 - IL_000c: isinst [mscorlib]System.Exception - IL_0011: stloc.0 - IL_0012: ldloc.0 - IL_0013: brfalse.s IL_0017 - - IL_0015: br.s IL_0019 - - IL_0017: br.s IL_0042 - - IL_0019: ldloc.0 - IL_001a: stloc.1 - IL_001b: ldloc.0 - IL_001c: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) - IL_0021: brtrue.s IL_0025 - - IL_0023: br.s IL_0040 - - IL_0025: ldarg.2 - IL_0026: stloc.2 - IL_0027: ldarg.0 - IL_0028: castclass XYZ.ABC/ABC/MyExn - IL_002d: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0032: ldloc.1 - IL_0033: castclass XYZ.ABC/ABC/MyExn - IL_0038: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_003d: ceq - IL_003f: ret - - IL_0040: ldc.i4.0 - IL_0041: ret - - IL_0042: ldc.i4.0 - IL_0043: ret - - IL_0044: ldarg.1 - IL_0045: ldnull - IL_0046: cgt.un - IL_0048: ldc.i4.0 - IL_0049: ceq - IL_004b: ret - } // end of method MyExn::Equals - - .method public hidebysig instance bool - Equals(class [mscorlib]System.Exception obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 68 (0x44) - .maxstack 4 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldnull - IL_0003: cgt.un - IL_0005: brfalse.s IL_0009 - - IL_0007: br.s IL_000b - - IL_0009: br.s IL_003c - - IL_000b: ldarg.1 - IL_000c: ldnull - IL_000d: cgt.un - IL_000f: brfalse.s IL_0013 - - IL_0011: br.s IL_0015 - - IL_0013: br.s IL_003a - - IL_0015: ldarg.1 - IL_0016: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) - IL_001b: brtrue.s IL_001f - - IL_001d: br.s IL_0038 - - IL_001f: ldarg.0 - IL_0020: castclass XYZ.ABC/ABC/MyExn - IL_0025: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_002a: ldarg.1 - IL_002b: castclass XYZ.ABC/ABC/MyExn - IL_0030: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0035: ceq - IL_0037: ret - - IL_0038: ldc.i4.0 - IL_0039: ret - - IL_003a: ldc.i4.0 - IL_003b: ret - - IL_003c: ldarg.1 - IL_003d: ldnull - IL_003e: cgt.un - IL_0040: ldc.i4.0 - IL_0041: ceq - IL_0043: ret - } // end of method MyExn::Equals - - .method public hidebysig virtual instance bool - Equals(object obj) cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 25 (0x19) - .maxstack 4 - .locals init (class [mscorlib]System.Exception V_0) - IL_0000: nop - IL_0001: ldarg.1 - IL_0002: isinst [mscorlib]System.Exception - IL_0007: stloc.0 - IL_0008: ldloc.0 - IL_0009: brfalse.s IL_000d - - IL_000b: br.s IL_000f - - IL_000d: br.s IL_0017 - - IL_000f: ldarg.0 - IL_0010: ldloc.0 - IL_0011: callvirt instance bool XYZ.ABC/ABC/MyExn::Equals(class [mscorlib]System.Exception) - IL_0016: ret - - IL_0017: ldc.i4.0 - IL_0018: ret - } // end of method MyExn::Equals - - .property instance int32 Data0() - { - .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 XYZ.ABC/ABC/MyExn::get_Data0() - } // end of property MyExn::Data0 - } // end of class MyExn - - .class auto ansi nested public A - extends [mscorlib]System.Object - { - .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 - { - // Code size 17 (0x11) - .maxstack 8 - .line 25,25 : 20,21 - IL_0000: ldarg.0 - IL_0001: callvirt instance void [mscorlib]System.Object::.ctor() - IL_0006: ldarg.0 - IL_0007: pop - IL_0008: nop - IL_0009: ldarg.0 - IL_000a: ldarg.1 - IL_000b: stfld string XYZ.ABC/ABC/A::x - .line 25,25 : 18,19 - IL_0010: ret - } // end of method A::.ctor - - .method public hidebysig specialname - instance string get_X() cil managed - { - // Code size 8 (0x8) - .maxstack 8 - .line 25,25 : 46,47 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldfld string XYZ.ABC/ABC/A::x - IL_0007: ret - } // end of method A::get_X - - .property instance string X() - { - .get instance string XYZ.ABC/ABC/A::get_X() - } // end of property A::X - } // end of class A - - .method public static int32 'add'(int32 x, - int32 y) cil managed - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationArgumentCountsAttribute::.ctor(int32[]) = ( 01 00 02 00 00 00 01 00 00 00 01 00 00 00 00 00 ) - // Code size 5 (0x5) - .maxstack 8 - .line 28,28 : 27,32 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldarg.1 - IL_0003: add - IL_0004: ret - } // end of method ABC::'add' - - .method public specialname static string - get_greeting() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 7 (0x7) - .maxstack 8 - IL_0000: nop - IL_0001: ldstr "hello" - IL_0006: ret - } // end of method ABC::get_greeting - - .property string greeting() - { - .get string XYZ.ABC/ABC::get_greeting() - } // end of property ABC::greeting - } // end of class ABC - - .method public static int32 'add'(int32 x, - int32 y) cil managed - { - .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationArgumentCountsAttribute::.ctor(int32[]) = ( 01 00 02 00 00 00 01 00 00 00 01 00 00 00 00 00 ) - // Code size 5 (0x5) - .maxstack 8 - .line 18,18 : 23,28 - IL_0000: nop - IL_0001: ldarg.0 - IL_0002: ldarg.1 - IL_0003: add - IL_0004: ret - } // end of method ABC::'add' - - .method public specialname static string - get_greeting() cil managed - { - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 7 (0x7) - .maxstack 8 - IL_0000: nop - IL_0001: ldstr "hello" - IL_0006: ret - } // end of method ABC::get_greeting - - .property string greeting() - { - .get string XYZ.ABC::get_greeting() - } // end of property ABC::greeting -} // end of class XYZ.ABC - -.class private abstract auto ansi sealed ''.$ToplevelNamespace - extends [mscorlib]System.Object -{ - .field static assembly int32 init@ - .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) - .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) - .method private specialname rtspecialname static - void .cctor() cil managed - { - // Code size 14 (0xe) - .maxstack 3 - .locals init ([0] string greeting, - [1] string V_1) - .line 19,19 : 9,31 '' - IL_0000: nop - IL_0001: call string XYZ.ABC::get_greeting() - IL_0006: stloc.0 - .line 29,29 : 13,35 '' - IL_0007: call string XYZ.ABC/ABC::get_greeting() - IL_000c: stloc.1 - IL_000d: ret - } // end of method $ToplevelNamespace::.cctor -} // end of class ''.$ToplevelNamespace - - -// ============================================================= - -// *********** DISASSEMBLY COMPLETE *********************** diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/SerializableAttribute/env.lst b/tests/fsharpqa/Source/CodeGen/EmittedIL/SerializableAttribute/env.lst index 3a3631b97e8..02b9c03bb30 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/SerializableAttribute/env.lst +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/SerializableAttribute/env.lst @@ -1,5 +1,5 @@ - SOURCE=ToplevelModule.fs SCFLAGS="-a -g --out:desktop\\TopLevelModule.dll --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd ToplevelModule.dll NetFx20 desktop" # ToplevelModule.fs - Desktop - SOURCE=ToplevelNamespace.fs SCFLAGS="-a -g --out:desktop\\ToplevelNamespace.dll --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd ToplevelNamespace.dll NetFx20 desktop" # ToplevelNamespace.fs - Desktop + SOURCE=ToplevelModule.fs SCFLAGS="-a -g --out:TopLevelModule.dll --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd ToplevelModule.dll" # ToplevelModule.fs - Desktop + SOURCE=ToplevelNamespace.fs SCFLAGS="-a -g --out:ToplevelNamespace.dll --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd ToplevelNamespace.dll" # ToplevelNamespace.fs - Desktop diff --git a/tests/walkthroughs/DebugStepping/TheBigFileOfDebugStepping.fsx b/tests/walkthroughs/DebugStepping/TheBigFileOfDebugStepping.fsx index b5dcc2d6f0b..6dcce384f1f 100644 --- a/tests/walkthroughs/DebugStepping/TheBigFileOfDebugStepping.fsx +++ b/tests/walkthroughs/DebugStepping/TheBigFileOfDebugStepping.fsx @@ -626,6 +626,65 @@ let LocalValueShadowsArgument2 x = null // breakpoint 2 () +module InlinedCode = + // MANUAL TEST: check you can place breakpoints in this method and hit them + // in both Debug and Release code + let inline bodyRunner z body = + let x = 1 + z + printfn "running" + body x + body x + + let test() = + let bodyWrapper = + let x = 1 + System.Random().Next() + bodyRunner 3 (fun n -> + // MANUAL TEST: check you can place breakpoint here and hit it in both Debug and Release code + printfn "line1, x = %d" x + // MANUAL TEST: check you can place breakpoint here and hit it in both Debug and Release code + printfn "line2, n = %d" n) + + let bodyWrapper2 = + // TEST: check you can place breakpoint here and hit it in both Debug and Release code + let x = 1 + System.Random().Next() + bodyRunner 3 <| (fun n -> + // MANUAL TEST: check you can place breakpoint here and hit it in both Debug and Release code + printfn "line1, x = %d" x + // MANUAL TEST: check you can place breakpoint here and hit it in both Debug and Release code + printfn "line2, n = %d" n) + () + +module Pipelined = + let testListPipeline() = + let data = [ 1 .. 5 ] + + // MANUAL TEST: check stepping through this looks ok + let newData = + data + |> List.filter (fun x -> + // MANUAL TEST: check you can place breakpoint here and hit it in both Debug and Release code + x > 3) + |> List.map (fun x -> + // MANUAL TEST: check you can place breakpoint here and hit it in both Debug and Release code + x * x) + + printfn "%A" newData + + let testArrayPipeline() = + let data = [| 1 .. 5 |] + + let newData = + data + |> Array.filter (fun x -> + // MANUAL TEST: check you can place breakpoint here and hit it in both Debug and Release code + x > 3) + |> Array.map (fun x -> + // MANUAL TEST: check you can place breakpoint here and hit it in both Debug code + // TODO: surprisingly no breakpoint hit here in release code + x * x) + + printfn "%A" newData + TailcallRecursionTest1 3 TailcallRecursionTest2 (U2(3,4)) SteppingMatch01 (Choice1Of2 3) @@ -705,3 +764,6 @@ InnerFunctionDefinitionHadTwoBreakpoints "aaaa" |> ignore InnerRecursiveFunctionDefinitionHadTwoBreakpoints "aaaa" |> ignore LocalValueShadowsArgument1 "123" LocalValueShadowsArgument2 "123" +InlinedCode.test() +Pipelined.testListPipeline() +Pipelined.testArrayPipeline() From a8e1af38027484a87d927bf03b3b1af3ab8c5f6d Mon Sep 17 00:00:00 2001 From: Don Syme Date: Thu, 24 Jun 2021 14:40:57 +0100 Subject: [PATCH 5/7] update baselines --- .../ToplevelModule.il.bsl | 1671 ++++++++++- .../ToplevelNamespace.il.bsl | 2433 ++++++++++++++++- 2 files changed, 4102 insertions(+), 2 deletions(-) diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/SerializableAttribute/ToplevelModule.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/SerializableAttribute/ToplevelModule.il.bsl index bf83c61d107..e4ab112f177 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/SerializableAttribute/ToplevelModule.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/SerializableAttribute/ToplevelModule.il.bsl @@ -1,4 +1,1673 @@ -// Microsoft (R) .NET Framework IL Disassembler. Version 4.6.1055.0 +// Microsoft (R) .NET Framework IL Disassembler. Version 4.8.3928.0 // Copyright (c) Microsoft Corporation. All rights reserved. + + +// Metadata version: v4.0.30319 +.assembly extern mscorlib +{ + .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. + .ver 4:0:0:0 +} +.assembly extern FSharp.Core +{ + .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: + .ver 5:0:0:0 +} +.assembly TopLevelModule +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, + int32, + int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + + // --- The following custom attribute is added automatically, do not uncomment ------- + // .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 01 01 00 00 00 00 ) + + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.mresource public FSharpSignatureData.TopLevelModule +{ + // Offset: 0x00000000 Length: 0x0000113D +} +.mresource public FSharpOptimizationData.TopLevelModule +{ + // Offset: 0x00001148 Length: 0x000003FD +} +.module TopLevelModule.dll +// MVID: {60D4892F-37F5-C118-A745-03832F89D460} +.imagebase 0x00400000 +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 // WINDOWS_CUI +.corflags 0x00000001 // ILONLY +// Image base: 0x06F60000 + + +// =============== CLASS MEMBERS DECLARATION =================== + +.class public abstract auto ansi sealed ABC + extends [mscorlib]System.Object +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class auto autochar serializable sealed nested public beforefieldinit Expr + extends [mscorlib]System.Object + implements class [mscorlib]System.IEquatable`1, + [mscorlib]System.Collections.IStructuralEquatable, + class [mscorlib]System.IComparable`1, + [mscorlib]System.IComparable, + [mscorlib]System.Collections.IStructuralComparable + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerDisplayAttribute::.ctor(string) = ( 01 00 15 7B 5F 5F 44 65 62 75 67 44 69 73 70 6C // ...{__DebugDispl + 61 79 28 29 2C 6E 71 7D 00 00 ) // ay(),nq}.. + .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 initonly int32 item + .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public static 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 ) + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: newobj instance void ABC/Expr::.ctor(int32) + IL_0006: ret + } // end of method Expr::NewNum + + .method assembly specialname rtspecialname + instance void .ctor(int32 item) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 14 (0xe) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ldarg.0 + IL_0007: ldarg.1 + IL_0008: stfld int32 ABC/Expr::item + IL_000d: ret + } // end of method Expr::.ctor + + .method public hidebysig instance int32 + get_Item() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 ABC/Expr::item + IL_0006: ret + } // end of method Expr::get_Item + + .method public hidebysig instance int32 + get_Tag() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 4 (0x4) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: ldc.i4.0 + IL_0003: ret + } // end of method Expr::get_Tag + + .method assembly hidebysig specialname + instance object __DebugDisplay() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 22 (0x16) + .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 + } // end of method Expr::__DebugDisplay + + .method public strict virtual instance string + ToString() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 22 (0x16) + .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 ABC/Expr>::.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 + } // end of method Expr::ToString + + .method public hidebysig virtual final + instance int32 CompareTo(class ABC/Expr obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 64 (0x40) + .maxstack 4 + .locals init ([0] class ABC/Expr V_0, + [1] class ABC/Expr V_1, + [2] class [mscorlib]System.Collections.IComparer V_2, + [3] int32 V_3, + [4] int32 V_4) + .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' + .line 100001,100001 : 0,0 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\SerializableAttribute\\ToplevelModule.fs' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_0036 + + .line 100001,100001 : 0,0 '' + IL_0006: ldarg.1 + IL_0007: ldnull + IL_0008: cgt.un + IL_000a: brfalse.s IL_0034 + + .line 100001,100001 : 0,0 '' + IL_000c: ldarg.0 + IL_000d: pop + .line 100001,100001 : 0,0 '' + IL_000e: ldarg.0 + IL_000f: stloc.0 + IL_0010: ldarg.1 + IL_0011: stloc.1 + IL_0012: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0017: stloc.2 + IL_0018: ldloc.0 + IL_0019: ldfld int32 ABC/Expr::item + IL_001e: stloc.3 + IL_001f: ldloc.1 + IL_0020: ldfld int32 ABC/Expr::item + IL_0025: stloc.s V_4 + IL_0027: ldloc.3 + IL_0028: ldloc.s V_4 + IL_002a: bge.s IL_002e + + .line 100001,100001 : 0,0 '' + IL_002c: ldc.i4.m1 + IL_002d: ret + + .line 100001,100001 : 0,0 '' + IL_002e: ldloc.3 + IL_002f: ldloc.s V_4 + IL_0031: cgt + IL_0033: ret + + .line 100001,100001 : 0,0 '' + IL_0034: ldc.i4.1 + IL_0035: ret + + .line 100001,100001 : 0,0 '' + IL_0036: ldarg.1 + IL_0037: ldnull + IL_0038: cgt.un + IL_003a: brfalse.s IL_003e + + .line 100001,100001 : 0,0 '' + IL_003c: ldc.i4.m1 + IL_003d: ret + + .line 100001,100001 : 0,0 '' + IL_003e: ldc.i4.0 + IL_003f: ret + } // end of method Expr::CompareTo + + .method public hidebysig virtual final + instance int32 CompareTo(object obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 13 (0xd) + .maxstack 8 + .line 6,6 : 14,18 '' + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any ABC/Expr + IL_0007: callvirt instance int32 ABC/Expr::CompareTo(class ABC/Expr) + IL_000c: ret + } // end of method Expr::CompareTo + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [mscorlib]System.Collections.IComparer comp) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 80 (0x50) + .maxstack 4 + .locals init ([0] class ABC/Expr V_0, + [1] class ABC/Expr V_1, + [2] class ABC/Expr V_2, + [3] class [mscorlib]System.Collections.IComparer V_3, + [4] int32 V_4, + [5] int32 V_5) + .line 6,6 : 14,18 '' + IL_0000: ldarg.1 + IL_0001: unbox.any ABC/Expr + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0041 + + .line 100001,100001 : 0,0 '' + IL_000d: ldarg.1 + IL_000e: unbox.any ABC/Expr + IL_0013: ldnull + IL_0014: cgt.un + IL_0016: brfalse.s IL_003f + + .line 100001,100001 : 0,0 '' + IL_0018: ldarg.0 + IL_0019: pop + .line 100001,100001 : 0,0 '' + IL_001a: ldarg.0 + IL_001b: stloc.1 + IL_001c: ldloc.0 + IL_001d: stloc.2 + IL_001e: ldarg.2 + IL_001f: stloc.3 + IL_0020: ldloc.1 + IL_0021: ldfld int32 ABC/Expr::item + IL_0026: stloc.s V_4 + IL_0028: ldloc.2 + IL_0029: ldfld int32 ABC/Expr::item + IL_002e: stloc.s V_5 + IL_0030: ldloc.s V_4 + IL_0032: ldloc.s V_5 + IL_0034: bge.s IL_0038 + + .line 100001,100001 : 0,0 '' + IL_0036: ldc.i4.m1 + IL_0037: ret + + .line 100001,100001 : 0,0 '' + IL_0038: ldloc.s V_4 + IL_003a: ldloc.s V_5 + IL_003c: cgt + IL_003e: ret + + .line 100001,100001 : 0,0 '' + IL_003f: ldc.i4.1 + IL_0040: ret + + .line 100001,100001 : 0,0 '' + IL_0041: ldarg.1 + IL_0042: unbox.any ABC/Expr + IL_0047: ldnull + IL_0048: cgt.un + IL_004a: brfalse.s IL_004e + + .line 100001,100001 : 0,0 '' + IL_004c: ldc.i4.m1 + IL_004d: ret + + .line 100001,100001 : 0,0 '' + IL_004e: ldc.i4.0 + IL_004f: ret + } // end of method Expr::CompareTo + + .method public hidebysig virtual final + instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 41 (0x29) + .maxstack 7 + .locals init ([0] int32 V_0, + [1] class ABC/Expr V_1, + [2] class [mscorlib]System.Collections.IEqualityComparer V_2) + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_0027 + + .line 100001,100001 : 0,0 '' + IL_0006: ldc.i4.0 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + .line 100001,100001 : 0,0 '' + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldc.i4.0 + IL_000d: stloc.0 + IL_000e: ldc.i4 0x9e3779b9 + IL_0013: ldarg.1 + IL_0014: stloc.2 + IL_0015: ldloc.1 + IL_0016: ldfld int32 ABC/Expr::item + IL_001b: ldloc.0 + IL_001c: ldc.i4.6 + IL_001d: shl + IL_001e: ldloc.0 + IL_001f: ldc.i4.2 + IL_0020: shr + IL_0021: add + IL_0022: add + IL_0023: add + IL_0024: stloc.0 + IL_0025: ldloc.0 + IL_0026: ret + + .line 100001,100001 : 0,0 '' + IL_0027: ldc.i4.0 + IL_0028: ret + } // end of method Expr::GetHashCode + + .method public hidebysig virtual final + instance int32 GetHashCode() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 12 (0xc) + .maxstack 8 + .line 6,6 : 14,18 '' + IL_0000: ldarg.0 + IL_0001: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: callvirt instance int32 ABC/Expr::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) + IL_000b: ret + } // end of method Expr::GetHashCode + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [mscorlib]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 52 (0x34) + .maxstack 4 + .locals init ([0] class ABC/Expr V_0, + [1] class ABC/Expr V_1, + [2] class ABC/Expr V_2, + [3] class ABC/Expr V_3, + [4] class [mscorlib]System.Collections.IEqualityComparer V_4) + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_002c + + .line 100001,100001 : 0,0 '' + IL_0006: ldarg.1 + IL_0007: isinst ABC/Expr + IL_000c: stloc.0 + IL_000d: ldloc.0 + IL_000e: brfalse.s IL_002a + + .line 100001,100001 : 0,0 '' + IL_0010: ldloc.0 + IL_0011: stloc.1 + IL_0012: ldarg.0 + IL_0013: pop + .line 100001,100001 : 0,0 '' + IL_0014: ldarg.0 + IL_0015: stloc.2 + IL_0016: ldloc.1 + IL_0017: stloc.3 + IL_0018: ldarg.2 + IL_0019: stloc.s V_4 + IL_001b: ldloc.2 + IL_001c: ldfld int32 ABC/Expr::item + IL_0021: ldloc.3 + IL_0022: ldfld int32 ABC/Expr::item + IL_0027: ceq + IL_0029: ret + + .line 100001,100001 : 0,0 '' + IL_002a: ldc.i4.0 + IL_002b: ret + + .line 100001,100001 : 0,0 '' + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret + } // end of method Expr::Equals + + .method public hidebysig virtual final + instance bool Equals(class ABC/Expr obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 43 (0x2b) + .maxstack 4 + .locals init ([0] class ABC/Expr V_0, + [1] class ABC/Expr V_1) + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_0023 + + .line 100001,100001 : 0,0 '' + IL_0006: ldarg.1 + IL_0007: ldnull + IL_0008: cgt.un + IL_000a: brfalse.s IL_0021 + + .line 100001,100001 : 0,0 '' + IL_000c: ldarg.0 + IL_000d: pop + .line 100001,100001 : 0,0 '' + IL_000e: ldarg.0 + IL_000f: stloc.0 + IL_0010: ldarg.1 + IL_0011: stloc.1 + IL_0012: ldloc.0 + IL_0013: ldfld int32 ABC/Expr::item + IL_0018: ldloc.1 + IL_0019: ldfld int32 ABC/Expr::item + IL_001e: ceq + IL_0020: ret + + .line 100001,100001 : 0,0 '' + IL_0021: ldc.i4.0 + IL_0022: ret + + .line 100001,100001 : 0,0 '' + IL_0023: ldarg.1 + IL_0024: ldnull + IL_0025: cgt.un + IL_0027: ldc.i4.0 + IL_0028: ceq + IL_002a: ret + } // end of method Expr::Equals + + .method public hidebysig virtual final + instance bool Equals(object obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 20 (0x14) + .maxstack 4 + .locals init ([0] class ABC/Expr V_0) + .line 6,6 : 14,18 '' + IL_0000: ldarg.1 + IL_0001: isinst ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0012 + + .line 100001,100001 : 0,0 '' + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: callvirt instance bool ABC/Expr::Equals(class ABC/Expr) + IL_0011: ret + + .line 100001,100001 : 0,0 '' + IL_0012: ldc.i4.0 + IL_0013: ret + } // end of method Expr::Equals + + .property instance int32 Tag() + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .get instance int32 ABC/Expr::get_Tag() + } // end of property Expr::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 [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .get instance int32 ABC/Expr::get_Item() + } // end of property Expr::Item + } // end of class Expr + + .class auto ansi serializable nested public beforefieldinit MyExn + extends [mscorlib]System.Exception + implements [mscorlib]System.Collections.IStructuralEquatable + { + .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 + { + // Code size 14 (0xe) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Exception::.ctor() + IL_0006: ldarg.0 + IL_0007: ldarg.1 + IL_0008: stfld int32 ABC/MyExn::Data0@ + IL_000d: ret + } // end of method MyExn::.ctor + + .method public specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Exception::.ctor() + IL_0006: ret + } // end of method MyExn::.ctor + + .method family specialname rtspecialname + instance void .ctor(class [mscorlib]System.Runtime.Serialization.SerializationInfo info, + valuetype [mscorlib]System.Runtime.Serialization.StreamingContext context) cil managed + { + // Code size 9 (0x9) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: ldarg.2 + IL_0003: call instance void [mscorlib]System.Exception::.ctor(class [mscorlib]System.Runtime.Serialization.SerializationInfo, + valuetype [mscorlib]System.Runtime.Serialization.StreamingContext) + IL_0008: ret + } // end of method MyExn::.ctor + + .method public hidebysig specialname + instance int32 get_Data0() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 ABC/MyExn::Data0@ + IL_0006: ret + } // end of method MyExn::get_Data0 + + .method public hidebysig virtual instance int32 + GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 40 (0x28) + .maxstack 7 + .locals init ([0] int32 V_0, + [1] class [mscorlib]System.Collections.IEqualityComparer V_1) + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_0026 + + .line 100001,100001 : 0,0 '' + IL_0006: ldc.i4.0 + IL_0007: stloc.0 + IL_0008: ldc.i4 0x9e3779b9 + IL_000d: ldarg.1 + IL_000e: stloc.1 + IL_000f: ldarg.0 + IL_0010: castclass ABC/MyExn + IL_0015: call instance int32 ABC/MyExn::get_Data0() + IL_001a: ldloc.0 + IL_001b: ldc.i4.6 + IL_001c: shl + IL_001d: ldloc.0 + IL_001e: ldc.i4.2 + IL_001f: shr + IL_0020: add + IL_0021: add + IL_0022: add + IL_0023: stloc.0 + IL_0024: ldloc.0 + IL_0025: ret + + .line 100001,100001 : 0,0 '' + IL_0026: ldc.i4.0 + IL_0027: ret + } // end of method MyExn::GetHashCode + + .method public hidebysig virtual instance int32 + GetHashCode() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 12 (0xc) + .maxstack 8 + .line 7,7 : 19,24 '' + IL_0000: ldarg.0 + IL_0001: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: callvirt instance int32 ABC/MyExn::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) + IL_000b: ret + } // end of method MyExn::GetHashCode + + .method public hidebysig virtual instance bool + Equals(object obj, + class [mscorlib]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 67 (0x43) + .maxstack 4 + .locals init ([0] class [mscorlib]System.Exception V_0, + [1] class [mscorlib]System.Exception V_1, + [2] class [mscorlib]System.Collections.IEqualityComparer V_2) + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_003b + + .line 100001,100001 : 0,0 '' + IL_0006: ldarg.1 + IL_0007: isinst [mscorlib]System.Exception + IL_000c: stloc.0 + IL_000d: ldloc.0 + IL_000e: brfalse.s IL_0039 + + .line 100001,100001 : 0,0 '' + IL_0010: ldloc.0 + IL_0011: stloc.1 + IL_0012: ldloc.0 + IL_0013: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) + IL_0018: brtrue.s IL_001c + + IL_001a: br.s IL_0037 + + .line 100001,100001 : 0,0 '' + IL_001c: ldarg.2 + IL_001d: stloc.2 + 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 + + .line 100001,100001 : 0,0 '' + IL_0037: ldc.i4.0 + IL_0038: ret + + .line 100001,100001 : 0,0 '' + IL_0039: ldc.i4.0 + IL_003a: ret + + .line 100001,100001 : 0,0 '' + IL_003b: ldarg.1 + IL_003c: ldnull + IL_003d: cgt.un + IL_003f: ldc.i4.0 + IL_0040: ceq + IL_0042: ret + } // end of method MyExn::Equals + + .method public hidebysig instance bool + Equals(class [mscorlib]System.Exception obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 59 (0x3b) + .maxstack 8 + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_0033 + + .line 100001,100001 : 0,0 '' + IL_0006: ldarg.1 + IL_0007: ldnull + IL_0008: cgt.un + IL_000a: brfalse.s IL_0031 + + .line 100001,100001 : 0,0 '' + IL_000c: ldarg.1 + IL_000d: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) + IL_0012: brtrue.s IL_0016 + + IL_0014: br.s IL_002f + + .line 100001,100001 : 0,0 '' + IL_0016: ldarg.0 + IL_0017: castclass ABC/MyExn + IL_001c: call instance int32 ABC/MyExn::get_Data0() + IL_0021: ldarg.1 + IL_0022: castclass ABC/MyExn + IL_0027: call instance int32 ABC/MyExn::get_Data0() + IL_002c: ceq + IL_002e: ret + + .line 100001,100001 : 0,0 '' + IL_002f: ldc.i4.0 + IL_0030: ret + + .line 100001,100001 : 0,0 '' + IL_0031: ldc.i4.0 + IL_0032: ret + + .line 100001,100001 : 0,0 '' + IL_0033: ldarg.1 + IL_0034: ldnull + IL_0035: cgt.un + IL_0037: ldc.i4.0 + IL_0038: ceq + IL_003a: ret + } // end of method MyExn::Equals + + .method public hidebysig virtual instance bool + Equals(object obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 20 (0x14) + .maxstack 4 + .locals init ([0] class [mscorlib]System.Exception V_0) + .line 7,7 : 19,24 '' + IL_0000: ldarg.1 + IL_0001: isinst [mscorlib]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0012 + + .line 100001,100001 : 0,0 '' + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: callvirt instance bool ABC/MyExn::Equals(class [mscorlib]System.Exception) + IL_0011: ret + + .line 100001,100001 : 0,0 '' + IL_0012: ldc.i4.0 + IL_0013: ret + } // end of method MyExn::Equals + + .property instance int32 Data0() + { + .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 ABC/MyExn::get_Data0() + } // end of property MyExn::Data0 + } // end of class MyExn + + .class auto ansi serializable nested public A + extends [mscorlib]System.Object + { + .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 + { + // Code size 16 (0x10) + .maxstack 8 + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: callvirt instance void [mscorlib]System.Object::.ctor() + IL_0006: ldarg.0 + IL_0007: pop + .line 8,8 : 16,17 '' + IL_0008: ldarg.0 + IL_0009: ldarg.1 + IL_000a: stfld string ABC/A::x + .line 8,8 : 14,15 '' + IL_000f: ret + } // end of method A::.ctor + + .method public hidebysig specialname + instance string get_X() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + .line 8,8 : 42,43 '' + IL_0000: ldarg.0 + IL_0001: ldfld string ABC/A::x + IL_0006: ret + } // end of method A::get_X + + .property instance string X() + { + .get instance string ABC/A::get_X() + } // end of property A::X + } // end of class A + + .class abstract auto ansi sealed nested public ABC + extends [mscorlib]System.Object + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class auto autochar serializable sealed nested public beforefieldinit Expr + extends [mscorlib]System.Object + implements class [mscorlib]System.IEquatable`1, + [mscorlib]System.Collections.IStructuralEquatable, + class [mscorlib]System.IComparable`1, + [mscorlib]System.IComparable, + [mscorlib]System.Collections.IStructuralComparable + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerDisplayAttribute::.ctor(string) = ( 01 00 15 7B 5F 5F 44 65 62 75 67 44 69 73 70 6C // ...{__DebugDispl + 61 79 28 29 2C 6E 71 7D 00 00 ) // ay(),nq}.. + .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 initonly int32 item + .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public static 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 ) + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: newobj instance void ABC/ABC/Expr::.ctor(int32) + IL_0006: ret + } // end of method Expr::NewNum + + .method assembly specialname rtspecialname + instance void .ctor(int32 item) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 14 (0xe) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ldarg.0 + IL_0007: ldarg.1 + IL_0008: stfld int32 ABC/ABC/Expr::item + IL_000d: ret + } // end of method Expr::.ctor + + .method public hidebysig instance int32 + get_Item() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 ABC/ABC/Expr::item + IL_0006: ret + } // end of method Expr::get_Item + + .method public hidebysig instance int32 + get_Tag() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 4 (0x4) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: ldc.i4.0 + IL_0003: ret + } // end of method Expr::get_Tag + + .method assembly hidebysig specialname + instance object __DebugDisplay() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 22 (0x16) + .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 + } // end of method Expr::__DebugDisplay + + .method public strict virtual instance string + ToString() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 22 (0x16) + .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 ABC/ABC/Expr>::.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 + } // end of method Expr::ToString + + .method public hidebysig virtual final + instance int32 CompareTo(class ABC/ABC/Expr obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 64 (0x40) + .maxstack 4 + .locals init ([0] class ABC/ABC/Expr V_0, + [1] class ABC/ABC/Expr V_1, + [2] class [mscorlib]System.Collections.IComparer V_2, + [3] int32 V_3, + [4] int32 V_4) + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_0036 + + .line 100001,100001 : 0,0 '' + IL_0006: ldarg.1 + IL_0007: ldnull + IL_0008: cgt.un + IL_000a: brfalse.s IL_0034 + + .line 100001,100001 : 0,0 '' + IL_000c: ldarg.0 + IL_000d: pop + .line 100001,100001 : 0,0 '' + IL_000e: ldarg.0 + IL_000f: stloc.0 + IL_0010: ldarg.1 + IL_0011: stloc.1 + IL_0012: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0017: stloc.2 + IL_0018: ldloc.0 + IL_0019: ldfld int32 ABC/ABC/Expr::item + IL_001e: stloc.3 + IL_001f: ldloc.1 + IL_0020: ldfld int32 ABC/ABC/Expr::item + IL_0025: stloc.s V_4 + IL_0027: ldloc.3 + IL_0028: ldloc.s V_4 + IL_002a: bge.s IL_002e + + .line 100001,100001 : 0,0 '' + IL_002c: ldc.i4.m1 + IL_002d: ret + + .line 100001,100001 : 0,0 '' + IL_002e: ldloc.3 + IL_002f: ldloc.s V_4 + IL_0031: cgt + IL_0033: ret + + .line 100001,100001 : 0,0 '' + IL_0034: ldc.i4.1 + IL_0035: ret + + .line 100001,100001 : 0,0 '' + IL_0036: ldarg.1 + IL_0037: ldnull + IL_0038: cgt.un + IL_003a: brfalse.s IL_003e + + .line 100001,100001 : 0,0 '' + IL_003c: ldc.i4.m1 + IL_003d: ret + + .line 100001,100001 : 0,0 '' + IL_003e: ldc.i4.0 + IL_003f: ret + } // end of method Expr::CompareTo + + .method public hidebysig virtual final + instance int32 CompareTo(object obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 13 (0xd) + .maxstack 8 + .line 16,16 : 18,22 '' + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any ABC/ABC/Expr + IL_0007: callvirt instance int32 ABC/ABC/Expr::CompareTo(class ABC/ABC/Expr) + IL_000c: ret + } // end of method Expr::CompareTo + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [mscorlib]System.Collections.IComparer comp) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 80 (0x50) + .maxstack 4 + .locals init ([0] class ABC/ABC/Expr V_0, + [1] class ABC/ABC/Expr V_1, + [2] class ABC/ABC/Expr V_2, + [3] class [mscorlib]System.Collections.IComparer V_3, + [4] int32 V_4, + [5] int32 V_5) + .line 16,16 : 18,22 '' + IL_0000: ldarg.1 + IL_0001: unbox.any ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0041 + + .line 100001,100001 : 0,0 '' + IL_000d: ldarg.1 + IL_000e: unbox.any ABC/ABC/Expr + IL_0013: ldnull + IL_0014: cgt.un + IL_0016: brfalse.s IL_003f + + .line 100001,100001 : 0,0 '' + IL_0018: ldarg.0 + IL_0019: pop + .line 100001,100001 : 0,0 '' + IL_001a: ldarg.0 + IL_001b: stloc.1 + IL_001c: ldloc.0 + IL_001d: stloc.2 + IL_001e: ldarg.2 + IL_001f: stloc.3 + IL_0020: ldloc.1 + IL_0021: ldfld int32 ABC/ABC/Expr::item + IL_0026: stloc.s V_4 + IL_0028: ldloc.2 + IL_0029: ldfld int32 ABC/ABC/Expr::item + IL_002e: stloc.s V_5 + IL_0030: ldloc.s V_4 + IL_0032: ldloc.s V_5 + IL_0034: bge.s IL_0038 + + .line 100001,100001 : 0,0 '' + IL_0036: ldc.i4.m1 + IL_0037: ret + + .line 100001,100001 : 0,0 '' + IL_0038: ldloc.s V_4 + IL_003a: ldloc.s V_5 + IL_003c: cgt + IL_003e: ret + + .line 100001,100001 : 0,0 '' + IL_003f: ldc.i4.1 + IL_0040: ret + + .line 100001,100001 : 0,0 '' + IL_0041: ldarg.1 + IL_0042: unbox.any ABC/ABC/Expr + IL_0047: ldnull + IL_0048: cgt.un + IL_004a: brfalse.s IL_004e + + .line 100001,100001 : 0,0 '' + IL_004c: ldc.i4.m1 + IL_004d: ret + + .line 100001,100001 : 0,0 '' + IL_004e: ldc.i4.0 + IL_004f: ret + } // end of method Expr::CompareTo + + .method public hidebysig virtual final + instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 41 (0x29) + .maxstack 7 + .locals init ([0] int32 V_0, + [1] class ABC/ABC/Expr V_1, + [2] class [mscorlib]System.Collections.IEqualityComparer V_2) + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_0027 + + .line 100001,100001 : 0,0 '' + IL_0006: ldc.i4.0 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + .line 100001,100001 : 0,0 '' + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldc.i4.0 + IL_000d: stloc.0 + IL_000e: ldc.i4 0x9e3779b9 + IL_0013: ldarg.1 + IL_0014: stloc.2 + IL_0015: ldloc.1 + IL_0016: ldfld int32 ABC/ABC/Expr::item + IL_001b: ldloc.0 + IL_001c: ldc.i4.6 + IL_001d: shl + IL_001e: ldloc.0 + IL_001f: ldc.i4.2 + IL_0020: shr + IL_0021: add + IL_0022: add + IL_0023: add + IL_0024: stloc.0 + IL_0025: ldloc.0 + IL_0026: ret + + .line 100001,100001 : 0,0 '' + IL_0027: ldc.i4.0 + IL_0028: ret + } // end of method Expr::GetHashCode + + .method public hidebysig virtual final + instance int32 GetHashCode() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 12 (0xc) + .maxstack 8 + .line 16,16 : 18,22 '' + IL_0000: ldarg.0 + IL_0001: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: callvirt instance int32 ABC/ABC/Expr::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) + IL_000b: ret + } // end of method Expr::GetHashCode + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [mscorlib]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 52 (0x34) + .maxstack 4 + .locals init ([0] class ABC/ABC/Expr V_0, + [1] class ABC/ABC/Expr V_1, + [2] class ABC/ABC/Expr V_2, + [3] class ABC/ABC/Expr V_3, + [4] class [mscorlib]System.Collections.IEqualityComparer V_4) + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_002c + + .line 100001,100001 : 0,0 '' + IL_0006: ldarg.1 + IL_0007: isinst ABC/ABC/Expr + IL_000c: stloc.0 + IL_000d: ldloc.0 + IL_000e: brfalse.s IL_002a + + .line 100001,100001 : 0,0 '' + IL_0010: ldloc.0 + IL_0011: stloc.1 + IL_0012: ldarg.0 + IL_0013: pop + .line 100001,100001 : 0,0 '' + IL_0014: ldarg.0 + IL_0015: stloc.2 + IL_0016: ldloc.1 + IL_0017: stloc.3 + IL_0018: ldarg.2 + IL_0019: stloc.s V_4 + IL_001b: ldloc.2 + IL_001c: ldfld int32 ABC/ABC/Expr::item + IL_0021: ldloc.3 + IL_0022: ldfld int32 ABC/ABC/Expr::item + IL_0027: ceq + IL_0029: ret + + .line 100001,100001 : 0,0 '' + IL_002a: ldc.i4.0 + IL_002b: ret + + .line 100001,100001 : 0,0 '' + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret + } // end of method Expr::Equals + + .method public hidebysig virtual final + instance bool Equals(class ABC/ABC/Expr obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 43 (0x2b) + .maxstack 4 + .locals init ([0] class ABC/ABC/Expr V_0, + [1] class ABC/ABC/Expr V_1) + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_0023 + + .line 100001,100001 : 0,0 '' + IL_0006: ldarg.1 + IL_0007: ldnull + IL_0008: cgt.un + IL_000a: brfalse.s IL_0021 + + .line 100001,100001 : 0,0 '' + IL_000c: ldarg.0 + IL_000d: pop + .line 100001,100001 : 0,0 '' + IL_000e: ldarg.0 + IL_000f: stloc.0 + IL_0010: ldarg.1 + IL_0011: stloc.1 + IL_0012: ldloc.0 + IL_0013: ldfld int32 ABC/ABC/Expr::item + IL_0018: ldloc.1 + IL_0019: ldfld int32 ABC/ABC/Expr::item + IL_001e: ceq + IL_0020: ret + + .line 100001,100001 : 0,0 '' + IL_0021: ldc.i4.0 + IL_0022: ret + + .line 100001,100001 : 0,0 '' + IL_0023: ldarg.1 + IL_0024: ldnull + IL_0025: cgt.un + IL_0027: ldc.i4.0 + IL_0028: ceq + IL_002a: ret + } // end of method Expr::Equals + + .method public hidebysig virtual final + instance bool Equals(object obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 20 (0x14) + .maxstack 4 + .locals init ([0] class ABC/ABC/Expr V_0) + .line 16,16 : 18,22 '' + IL_0000: ldarg.1 + IL_0001: isinst ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0012 + + .line 100001,100001 : 0,0 '' + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: callvirt instance bool ABC/ABC/Expr::Equals(class ABC/ABC/Expr) + IL_0011: ret + + .line 100001,100001 : 0,0 '' + IL_0012: ldc.i4.0 + IL_0013: ret + } // end of method Expr::Equals + + .property instance int32 Tag() + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .get instance int32 ABC/ABC/Expr::get_Tag() + } // end of property Expr::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 [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .get instance int32 ABC/ABC/Expr::get_Item() + } // end of property Expr::Item + } // end of class Expr + + .class auto ansi serializable nested public beforefieldinit MyExn + extends [mscorlib]System.Exception + implements [mscorlib]System.Collections.IStructuralEquatable + { + .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 + { + // Code size 14 (0xe) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Exception::.ctor() + IL_0006: ldarg.0 + IL_0007: ldarg.1 + IL_0008: stfld int32 ABC/ABC/MyExn::Data0@ + IL_000d: ret + } // end of method MyExn::.ctor + + .method public specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Exception::.ctor() + IL_0006: ret + } // end of method MyExn::.ctor + + .method family specialname rtspecialname + instance void .ctor(class [mscorlib]System.Runtime.Serialization.SerializationInfo info, + valuetype [mscorlib]System.Runtime.Serialization.StreamingContext context) cil managed + { + // Code size 9 (0x9) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: ldarg.2 + IL_0003: call instance void [mscorlib]System.Exception::.ctor(class [mscorlib]System.Runtime.Serialization.SerializationInfo, + valuetype [mscorlib]System.Runtime.Serialization.StreamingContext) + IL_0008: ret + } // end of method MyExn::.ctor + + .method public hidebysig specialname + instance int32 get_Data0() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 ABC/ABC/MyExn::Data0@ + IL_0006: ret + } // end of method MyExn::get_Data0 + + .method public hidebysig virtual instance int32 + GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 40 (0x28) + .maxstack 7 + .locals init ([0] int32 V_0, + [1] class [mscorlib]System.Collections.IEqualityComparer V_1) + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_0026 + + .line 100001,100001 : 0,0 '' + IL_0006: ldc.i4.0 + IL_0007: stloc.0 + IL_0008: ldc.i4 0x9e3779b9 + IL_000d: ldarg.1 + IL_000e: stloc.1 + IL_000f: ldarg.0 + IL_0010: castclass ABC/ABC/MyExn + IL_0015: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_001a: ldloc.0 + IL_001b: ldc.i4.6 + IL_001c: shl + IL_001d: ldloc.0 + IL_001e: ldc.i4.2 + IL_001f: shr + IL_0020: add + IL_0021: add + IL_0022: add + IL_0023: stloc.0 + IL_0024: ldloc.0 + IL_0025: ret + + .line 100001,100001 : 0,0 '' + IL_0026: ldc.i4.0 + IL_0027: ret + } // end of method MyExn::GetHashCode + + .method public hidebysig virtual instance int32 + GetHashCode() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 12 (0xc) + .maxstack 8 + .line 17,17 : 23,28 '' + IL_0000: ldarg.0 + IL_0001: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: callvirt instance int32 ABC/ABC/MyExn::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) + IL_000b: ret + } // end of method MyExn::GetHashCode + + .method public hidebysig virtual instance bool + Equals(object obj, + class [mscorlib]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 67 (0x43) + .maxstack 4 + .locals init ([0] class [mscorlib]System.Exception V_0, + [1] class [mscorlib]System.Exception V_1, + [2] class [mscorlib]System.Collections.IEqualityComparer V_2) + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_003b + + .line 100001,100001 : 0,0 '' + IL_0006: ldarg.1 + IL_0007: isinst [mscorlib]System.Exception + IL_000c: stloc.0 + IL_000d: ldloc.0 + IL_000e: brfalse.s IL_0039 + + .line 100001,100001 : 0,0 '' + IL_0010: ldloc.0 + IL_0011: stloc.1 + IL_0012: ldloc.0 + IL_0013: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) + IL_0018: brtrue.s IL_001c + + IL_001a: br.s IL_0037 + + .line 100001,100001 : 0,0 '' + IL_001c: ldarg.2 + IL_001d: stloc.2 + 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 + + .line 100001,100001 : 0,0 '' + IL_0037: ldc.i4.0 + IL_0038: ret + + .line 100001,100001 : 0,0 '' + IL_0039: ldc.i4.0 + IL_003a: ret + + .line 100001,100001 : 0,0 '' + IL_003b: ldarg.1 + IL_003c: ldnull + IL_003d: cgt.un + IL_003f: ldc.i4.0 + IL_0040: ceq + IL_0042: ret + } // end of method MyExn::Equals + + .method public hidebysig instance bool + Equals(class [mscorlib]System.Exception obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 59 (0x3b) + .maxstack 8 + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_0033 + + .line 100001,100001 : 0,0 '' + IL_0006: ldarg.1 + IL_0007: ldnull + IL_0008: cgt.un + IL_000a: brfalse.s IL_0031 + + .line 100001,100001 : 0,0 '' + IL_000c: ldarg.1 + IL_000d: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) + IL_0012: brtrue.s IL_0016 + + IL_0014: br.s IL_002f + + .line 100001,100001 : 0,0 '' + IL_0016: ldarg.0 + IL_0017: castclass ABC/ABC/MyExn + IL_001c: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_0021: ldarg.1 + IL_0022: castclass ABC/ABC/MyExn + IL_0027: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_002c: ceq + IL_002e: ret + + .line 100001,100001 : 0,0 '' + IL_002f: ldc.i4.0 + IL_0030: ret + + .line 100001,100001 : 0,0 '' + IL_0031: ldc.i4.0 + IL_0032: ret + + .line 100001,100001 : 0,0 '' + IL_0033: ldarg.1 + IL_0034: ldnull + IL_0035: cgt.un + IL_0037: ldc.i4.0 + IL_0038: ceq + IL_003a: ret + } // end of method MyExn::Equals + + .method public hidebysig virtual instance bool + Equals(object obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 20 (0x14) + .maxstack 4 + .locals init ([0] class [mscorlib]System.Exception V_0) + .line 17,17 : 23,28 '' + IL_0000: ldarg.1 + IL_0001: isinst [mscorlib]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0012 + + .line 100001,100001 : 0,0 '' + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: callvirt instance bool ABC/ABC/MyExn::Equals(class [mscorlib]System.Exception) + IL_0011: ret + + .line 100001,100001 : 0,0 '' + IL_0012: ldc.i4.0 + IL_0013: ret + } // end of method MyExn::Equals + + .property instance int32 Data0() + { + .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 ABC/ABC/MyExn::get_Data0() + } // end of property MyExn::Data0 + } // end of class MyExn + + .class auto ansi serializable nested public A + extends [mscorlib]System.Object + { + .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 + { + // Code size 16 (0x10) + .maxstack 8 + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: callvirt instance void [mscorlib]System.Object::.ctor() + IL_0006: ldarg.0 + IL_0007: pop + .line 18,18 : 20,21 '' + IL_0008: ldarg.0 + IL_0009: ldarg.1 + IL_000a: stfld string ABC/ABC/A::x + .line 18,18 : 18,19 '' + IL_000f: ret + } // end of method A::.ctor + + .method public hidebysig specialname + instance string get_X() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + .line 18,18 : 46,47 '' + IL_0000: ldarg.0 + IL_0001: ldfld string ABC/ABC/A::x + IL_0006: ret + } // end of method A::get_X + + .property instance string X() + { + .get instance string ABC/ABC/A::get_X() + } // end of property A::X + } // end of class A + + .method public static int32 'add'(int32 x, + int32 y) cil managed + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationArgumentCountsAttribute::.ctor(int32[]) = ( 01 00 02 00 00 00 01 00 00 00 01 00 00 00 00 00 ) + // Code size 4 (0x4) + .maxstack 8 + .line 21,21 : 27,32 '' + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: add + IL_0003: ret + } // end of method ABC::'add' + + .method public specialname static string + get_greeting() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 6 (0x6) + .maxstack 8 + IL_0000: ldstr "hello" + IL_0005: ret + } // end of method ABC::get_greeting + + .property string greeting() + { + .get string ABC/ABC::get_greeting() + } // end of property ABC::greeting + } // end of class ABC + + .method public static int32 'add'(int32 x, + int32 y) cil managed + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationArgumentCountsAttribute::.ctor(int32[]) = ( 01 00 02 00 00 00 01 00 00 00 01 00 00 00 00 00 ) + // Code size 4 (0x4) + .maxstack 8 + .line 11,11 : 23,28 '' + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: add + IL_0003: ret + } // end of method ABC::'add' + + .method public specialname static string + get_greeting() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 6 (0x6) + .maxstack 8 + IL_0000: ldstr "hello" + IL_0005: ret + } // end of method ABC::get_greeting + + .property string greeting() + { + .get string ABC::get_greeting() + } // end of property ABC::greeting +} // end of class ABC + +.class private abstract auto ansi sealed ''.$ABC + extends [mscorlib]System.Object +{ + .field static assembly int32 init@ + .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method private specialname rtspecialname static + void .cctor() cil managed + { + // Code size 13 (0xd) + .maxstack 3 + .locals init ([0] string greeting, + [1] string V_1) + .line 12,12 : 9,31 '' + IL_0000: call string ABC::get_greeting() + IL_0005: stloc.0 + .line 22,22 : 13,35 '' + IL_0006: call string ABC/ABC::get_greeting() + IL_000b: stloc.1 + IL_000c: ret + } // end of method $ABC::.cctor + +} // end of class ''.$ABC + + +// ============================================================= + +// *********** DISASSEMBLY COMPLETE *********************** diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/SerializableAttribute/ToplevelNamespace.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/SerializableAttribute/ToplevelNamespace.il.bsl index bf83c61d107..32f8ac85d82 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/SerializableAttribute/ToplevelNamespace.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/SerializableAttribute/ToplevelNamespace.il.bsl @@ -1,4 +1,2435 @@ -// Microsoft (R) .NET Framework IL Disassembler. Version 4.6.1055.0 +// Microsoft (R) .NET Framework IL Disassembler. Version 4.8.3928.0 // Copyright (c) Microsoft Corporation. All rights reserved. + + +// Metadata version: v4.0.30319 +.assembly extern mscorlib +{ + .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. + .ver 4:0:0:0 +} +.assembly extern FSharp.Core +{ + .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: + .ver 5:0:0:0 +} +.assembly ToplevelNamespace +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, + int32, + int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + + // --- The following custom attribute is added automatically, do not uncomment ------- + // .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 01 01 00 00 00 00 ) + + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.mresource public FSharpSignatureData.ToplevelNamespace +{ + // Offset: 0x00000000 Length: 0x00001848 +} +.mresource public FSharpOptimizationData.ToplevelNamespace +{ + // Offset: 0x00001850 Length: 0x0000055C +} +.module ToplevelNamespace.dll +// MVID: {60D48932-218B-729A-A745-03833289D460} +.imagebase 0x00400000 +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 // WINDOWS_CUI +.corflags 0x00000001 // ILONLY +// Image base: 0x04F20000 + + +// =============== CLASS MEMBERS DECLARATION =================== + +.class public auto autochar serializable sealed beforefieldinit XYZ.Expr + extends [mscorlib]System.Object + implements class [mscorlib]System.IEquatable`1, + [mscorlib]System.Collections.IStructuralEquatable, + class [mscorlib]System.IComparable`1, + [mscorlib]System.IComparable, + [mscorlib]System.Collections.IStructuralComparable +{ + .custom instance void [mscorlib]System.Diagnostics.DebuggerDisplayAttribute::.ctor(string) = ( 01 00 15 7B 5F 5F 44 65 62 75 67 44 69 73 70 6C // ...{__DebugDispl + 61 79 28 29 2C 6E 71 7D 00 00 ) // ay(),nq}.. + .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 initonly int32 item + .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public static class XYZ.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 ) + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: newobj instance void XYZ.Expr::.ctor(int32) + IL_0006: ret + } // end of method Expr::NewNum + + .method assembly specialname rtspecialname + instance void .ctor(int32 item) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 14 (0xe) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ldarg.0 + IL_0007: ldarg.1 + IL_0008: stfld int32 XYZ.Expr::item + IL_000d: ret + } // end of method Expr::.ctor + + .method public hidebysig instance int32 + get_Item() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 XYZ.Expr::item + IL_0006: ret + } // end of method Expr::get_Item + + .method public hidebysig instance int32 + get_Tag() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 4 (0x4) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: ldc.i4.0 + IL_0003: ret + } // end of method Expr::get_Tag + + .method assembly hidebysig specialname + instance object __DebugDisplay() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 22 (0x16) + .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 + } // end of method Expr::__DebugDisplay + + .method public strict virtual instance string + ToString() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 22 (0x16) + .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 XYZ.Expr>::.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 + } // end of method Expr::ToString + + .method public hidebysig virtual final + instance int32 CompareTo(class XYZ.Expr obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 64 (0x40) + .maxstack 4 + .locals init ([0] class XYZ.Expr V_0, + [1] class XYZ.Expr V_1, + [2] class [mscorlib]System.Collections.IComparer V_2, + [3] int32 V_3, + [4] int32 V_4) + .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' + .line 100001,100001 : 0,0 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\SerializableAttribute\\ToplevelNamespace.fs' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_0036 + + .line 100001,100001 : 0,0 '' + IL_0006: ldarg.1 + IL_0007: ldnull + IL_0008: cgt.un + IL_000a: brfalse.s IL_0034 + + .line 100001,100001 : 0,0 '' + IL_000c: ldarg.0 + IL_000d: pop + .line 100001,100001 : 0,0 '' + IL_000e: ldarg.0 + IL_000f: stloc.0 + IL_0010: ldarg.1 + IL_0011: stloc.1 + IL_0012: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0017: stloc.2 + IL_0018: ldloc.0 + IL_0019: ldfld int32 XYZ.Expr::item + IL_001e: stloc.3 + IL_001f: ldloc.1 + IL_0020: ldfld int32 XYZ.Expr::item + IL_0025: stloc.s V_4 + IL_0027: ldloc.3 + IL_0028: ldloc.s V_4 + IL_002a: bge.s IL_002e + + .line 100001,100001 : 0,0 '' + IL_002c: ldc.i4.m1 + IL_002d: ret + + .line 100001,100001 : 0,0 '' + IL_002e: ldloc.3 + IL_002f: ldloc.s V_4 + IL_0031: cgt + IL_0033: ret + + .line 100001,100001 : 0,0 '' + IL_0034: ldc.i4.1 + IL_0035: ret + + .line 100001,100001 : 0,0 '' + IL_0036: ldarg.1 + IL_0037: ldnull + IL_0038: cgt.un + IL_003a: brfalse.s IL_003e + + .line 100001,100001 : 0,0 '' + IL_003c: ldc.i4.m1 + IL_003d: ret + + .line 100001,100001 : 0,0 '' + IL_003e: ldc.i4.0 + IL_003f: ret + } // end of method Expr::CompareTo + + .method public hidebysig virtual final + instance int32 CompareTo(object obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 13 (0xd) + .maxstack 8 + .line 7,7 : 10,14 '' + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any XYZ.Expr + IL_0007: callvirt instance int32 XYZ.Expr::CompareTo(class XYZ.Expr) + IL_000c: ret + } // end of method Expr::CompareTo + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [mscorlib]System.Collections.IComparer comp) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 80 (0x50) + .maxstack 4 + .locals init ([0] class XYZ.Expr V_0, + [1] class XYZ.Expr V_1, + [2] class XYZ.Expr V_2, + [3] class [mscorlib]System.Collections.IComparer V_3, + [4] int32 V_4, + [5] int32 V_5) + .line 7,7 : 10,14 '' + IL_0000: ldarg.1 + IL_0001: unbox.any XYZ.Expr + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0041 + + .line 100001,100001 : 0,0 '' + IL_000d: ldarg.1 + IL_000e: unbox.any XYZ.Expr + IL_0013: ldnull + IL_0014: cgt.un + IL_0016: brfalse.s IL_003f + + .line 100001,100001 : 0,0 '' + IL_0018: ldarg.0 + IL_0019: pop + .line 100001,100001 : 0,0 '' + IL_001a: ldarg.0 + IL_001b: stloc.1 + IL_001c: ldloc.0 + IL_001d: stloc.2 + IL_001e: ldarg.2 + IL_001f: stloc.3 + IL_0020: ldloc.1 + IL_0021: ldfld int32 XYZ.Expr::item + IL_0026: stloc.s V_4 + IL_0028: ldloc.2 + IL_0029: ldfld int32 XYZ.Expr::item + IL_002e: stloc.s V_5 + IL_0030: ldloc.s V_4 + IL_0032: ldloc.s V_5 + IL_0034: bge.s IL_0038 + + .line 100001,100001 : 0,0 '' + IL_0036: ldc.i4.m1 + IL_0037: ret + + .line 100001,100001 : 0,0 '' + IL_0038: ldloc.s V_4 + IL_003a: ldloc.s V_5 + IL_003c: cgt + IL_003e: ret + + .line 100001,100001 : 0,0 '' + IL_003f: ldc.i4.1 + IL_0040: ret + + .line 100001,100001 : 0,0 '' + IL_0041: ldarg.1 + IL_0042: unbox.any XYZ.Expr + IL_0047: ldnull + IL_0048: cgt.un + IL_004a: brfalse.s IL_004e + + .line 100001,100001 : 0,0 '' + IL_004c: ldc.i4.m1 + IL_004d: ret + + .line 100001,100001 : 0,0 '' + IL_004e: ldc.i4.0 + IL_004f: ret + } // end of method Expr::CompareTo + + .method public hidebysig virtual final + instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 41 (0x29) + .maxstack 7 + .locals init ([0] int32 V_0, + [1] class XYZ.Expr V_1, + [2] class [mscorlib]System.Collections.IEqualityComparer V_2) + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_0027 + + .line 100001,100001 : 0,0 '' + IL_0006: ldc.i4.0 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + .line 100001,100001 : 0,0 '' + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldc.i4.0 + IL_000d: stloc.0 + IL_000e: ldc.i4 0x9e3779b9 + IL_0013: ldarg.1 + IL_0014: stloc.2 + IL_0015: ldloc.1 + IL_0016: ldfld int32 XYZ.Expr::item + IL_001b: ldloc.0 + IL_001c: ldc.i4.6 + IL_001d: shl + IL_001e: ldloc.0 + IL_001f: ldc.i4.2 + IL_0020: shr + IL_0021: add + IL_0022: add + IL_0023: add + IL_0024: stloc.0 + IL_0025: ldloc.0 + IL_0026: ret + + .line 100001,100001 : 0,0 '' + IL_0027: ldc.i4.0 + IL_0028: ret + } // end of method Expr::GetHashCode + + .method public hidebysig virtual final + instance int32 GetHashCode() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 12 (0xc) + .maxstack 8 + .line 7,7 : 10,14 '' + IL_0000: ldarg.0 + IL_0001: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: callvirt instance int32 XYZ.Expr::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) + IL_000b: ret + } // end of method Expr::GetHashCode + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [mscorlib]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 52 (0x34) + .maxstack 4 + .locals init ([0] class XYZ.Expr V_0, + [1] class XYZ.Expr V_1, + [2] class XYZ.Expr V_2, + [3] class XYZ.Expr V_3, + [4] class [mscorlib]System.Collections.IEqualityComparer V_4) + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_002c + + .line 100001,100001 : 0,0 '' + IL_0006: ldarg.1 + IL_0007: isinst XYZ.Expr + IL_000c: stloc.0 + IL_000d: ldloc.0 + IL_000e: brfalse.s IL_002a + + .line 100001,100001 : 0,0 '' + IL_0010: ldloc.0 + IL_0011: stloc.1 + IL_0012: ldarg.0 + IL_0013: pop + .line 100001,100001 : 0,0 '' + IL_0014: ldarg.0 + IL_0015: stloc.2 + IL_0016: ldloc.1 + IL_0017: stloc.3 + IL_0018: ldarg.2 + IL_0019: stloc.s V_4 + IL_001b: ldloc.2 + IL_001c: ldfld int32 XYZ.Expr::item + IL_0021: ldloc.3 + IL_0022: ldfld int32 XYZ.Expr::item + IL_0027: ceq + IL_0029: ret + + .line 100001,100001 : 0,0 '' + IL_002a: ldc.i4.0 + IL_002b: ret + + .line 100001,100001 : 0,0 '' + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret + } // end of method Expr::Equals + + .method public hidebysig virtual final + instance bool Equals(class XYZ.Expr obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 43 (0x2b) + .maxstack 4 + .locals init ([0] class XYZ.Expr V_0, + [1] class XYZ.Expr V_1) + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_0023 + + .line 100001,100001 : 0,0 '' + IL_0006: ldarg.1 + IL_0007: ldnull + IL_0008: cgt.un + IL_000a: brfalse.s IL_0021 + + .line 100001,100001 : 0,0 '' + IL_000c: ldarg.0 + IL_000d: pop + .line 100001,100001 : 0,0 '' + IL_000e: ldarg.0 + IL_000f: stloc.0 + IL_0010: ldarg.1 + IL_0011: stloc.1 + IL_0012: ldloc.0 + IL_0013: ldfld int32 XYZ.Expr::item + IL_0018: ldloc.1 + IL_0019: ldfld int32 XYZ.Expr::item + IL_001e: ceq + IL_0020: ret + + .line 100001,100001 : 0,0 '' + IL_0021: ldc.i4.0 + IL_0022: ret + + .line 100001,100001 : 0,0 '' + IL_0023: ldarg.1 + IL_0024: ldnull + IL_0025: cgt.un + IL_0027: ldc.i4.0 + IL_0028: ceq + IL_002a: ret + } // end of method Expr::Equals + + .method public hidebysig virtual final + instance bool Equals(object obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 20 (0x14) + .maxstack 4 + .locals init ([0] class XYZ.Expr V_0) + .line 7,7 : 10,14 '' + IL_0000: ldarg.1 + IL_0001: isinst XYZ.Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0012 + + .line 100001,100001 : 0,0 '' + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: callvirt instance bool XYZ.Expr::Equals(class XYZ.Expr) + IL_0011: ret + + .line 100001,100001 : 0,0 '' + IL_0012: ldc.i4.0 + IL_0013: ret + } // end of method Expr::Equals + + .property instance int32 Tag() + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .get instance int32 XYZ.Expr::get_Tag() + } // end of property Expr::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 [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .get instance int32 XYZ.Expr::get_Item() + } // end of property Expr::Item +} // end of class XYZ.Expr + +.class public auto ansi serializable beforefieldinit XYZ.MyExn + extends [mscorlib]System.Exception + implements [mscorlib]System.Collections.IStructuralEquatable +{ + .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 + { + // Code size 14 (0xe) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Exception::.ctor() + IL_0006: ldarg.0 + IL_0007: ldarg.1 + IL_0008: stfld int32 XYZ.MyExn::Data0@ + IL_000d: ret + } // end of method MyExn::.ctor + + .method public specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Exception::.ctor() + IL_0006: ret + } // end of method MyExn::.ctor + + .method family specialname rtspecialname + instance void .ctor(class [mscorlib]System.Runtime.Serialization.SerializationInfo info, + valuetype [mscorlib]System.Runtime.Serialization.StreamingContext context) cil managed + { + // Code size 9 (0x9) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: ldarg.2 + IL_0003: call instance void [mscorlib]System.Exception::.ctor(class [mscorlib]System.Runtime.Serialization.SerializationInfo, + valuetype [mscorlib]System.Runtime.Serialization.StreamingContext) + IL_0008: ret + } // end of method MyExn::.ctor + + .method public hidebysig specialname instance int32 + get_Data0() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 XYZ.MyExn::Data0@ + IL_0006: ret + } // end of method MyExn::get_Data0 + + .method public hidebysig virtual instance int32 + GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 40 (0x28) + .maxstack 7 + .locals init ([0] int32 V_0, + [1] class [mscorlib]System.Collections.IEqualityComparer V_1) + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_0026 + + .line 100001,100001 : 0,0 '' + IL_0006: ldc.i4.0 + IL_0007: stloc.0 + IL_0008: ldc.i4 0x9e3779b9 + IL_000d: ldarg.1 + IL_000e: stloc.1 + IL_000f: ldarg.0 + IL_0010: castclass XYZ.MyExn + IL_0015: call instance int32 XYZ.MyExn::get_Data0() + IL_001a: ldloc.0 + IL_001b: ldc.i4.6 + IL_001c: shl + IL_001d: ldloc.0 + IL_001e: ldc.i4.2 + IL_001f: shr + IL_0020: add + IL_0021: add + IL_0022: add + IL_0023: stloc.0 + IL_0024: ldloc.0 + IL_0025: ret + + .line 100001,100001 : 0,0 '' + IL_0026: ldc.i4.0 + IL_0027: ret + } // end of method MyExn::GetHashCode + + .method public hidebysig virtual instance int32 + GetHashCode() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 12 (0xc) + .maxstack 8 + .line 8,8 : 15,20 '' + IL_0000: ldarg.0 + IL_0001: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: callvirt instance int32 XYZ.MyExn::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) + IL_000b: ret + } // end of method MyExn::GetHashCode + + .method public hidebysig virtual instance bool + Equals(object obj, + class [mscorlib]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 67 (0x43) + .maxstack 4 + .locals init ([0] class [mscorlib]System.Exception V_0, + [1] class [mscorlib]System.Exception V_1, + [2] class [mscorlib]System.Collections.IEqualityComparer V_2) + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_003b + + .line 100001,100001 : 0,0 '' + IL_0006: ldarg.1 + IL_0007: isinst [mscorlib]System.Exception + IL_000c: stloc.0 + IL_000d: ldloc.0 + IL_000e: brfalse.s IL_0039 + + .line 100001,100001 : 0,0 '' + IL_0010: ldloc.0 + IL_0011: stloc.1 + IL_0012: ldloc.0 + IL_0013: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) + IL_0018: brtrue.s IL_001c + + IL_001a: br.s IL_0037 + + .line 100001,100001 : 0,0 '' + IL_001c: ldarg.2 + IL_001d: stloc.2 + 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 + + .line 100001,100001 : 0,0 '' + IL_0037: ldc.i4.0 + IL_0038: ret + + .line 100001,100001 : 0,0 '' + IL_0039: ldc.i4.0 + IL_003a: ret + + .line 100001,100001 : 0,0 '' + IL_003b: ldarg.1 + IL_003c: ldnull + IL_003d: cgt.un + IL_003f: ldc.i4.0 + IL_0040: ceq + IL_0042: ret + } // end of method MyExn::Equals + + .method public hidebysig instance bool + Equals(class [mscorlib]System.Exception obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 59 (0x3b) + .maxstack 8 + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_0033 + + .line 100001,100001 : 0,0 '' + IL_0006: ldarg.1 + IL_0007: ldnull + IL_0008: cgt.un + IL_000a: brfalse.s IL_0031 + + .line 100001,100001 : 0,0 '' + IL_000c: ldarg.1 + IL_000d: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) + IL_0012: brtrue.s IL_0016 + + IL_0014: br.s IL_002f + + .line 100001,100001 : 0,0 '' + IL_0016: ldarg.0 + IL_0017: castclass XYZ.MyExn + IL_001c: call instance int32 XYZ.MyExn::get_Data0() + IL_0021: ldarg.1 + IL_0022: castclass XYZ.MyExn + IL_0027: call instance int32 XYZ.MyExn::get_Data0() + IL_002c: ceq + IL_002e: ret + + .line 100001,100001 : 0,0 '' + IL_002f: ldc.i4.0 + IL_0030: ret + + .line 100001,100001 : 0,0 '' + IL_0031: ldc.i4.0 + IL_0032: ret + + .line 100001,100001 : 0,0 '' + IL_0033: ldarg.1 + IL_0034: ldnull + IL_0035: cgt.un + IL_0037: ldc.i4.0 + IL_0038: ceq + IL_003a: ret + } // end of method MyExn::Equals + + .method public hidebysig virtual instance bool + Equals(object obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 20 (0x14) + .maxstack 4 + .locals init ([0] class [mscorlib]System.Exception V_0) + .line 8,8 : 15,20 '' + IL_0000: ldarg.1 + IL_0001: isinst [mscorlib]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0012 + + .line 100001,100001 : 0,0 '' + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: callvirt instance bool XYZ.MyExn::Equals(class [mscorlib]System.Exception) + IL_0011: ret + + .line 100001,100001 : 0,0 '' + IL_0012: ldc.i4.0 + IL_0013: ret + } // end of method MyExn::Equals + + .property instance int32 Data0() + { + .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 XYZ.MyExn::get_Data0() + } // end of property MyExn::Data0 +} // end of class XYZ.MyExn + +.class public auto ansi serializable XYZ.A + extends [mscorlib]System.Object +{ + .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 + { + // Code size 16 (0x10) + .maxstack 8 + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: callvirt instance void [mscorlib]System.Object::.ctor() + IL_0006: ldarg.0 + IL_0007: pop + .line 9,9 : 12,13 '' + IL_0008: ldarg.0 + IL_0009: ldarg.1 + IL_000a: stfld string XYZ.A::x + .line 9,9 : 10,11 '' + IL_000f: ret + } // end of method A::.ctor + + .method public hidebysig specialname instance string + get_X() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + .line 9,9 : 38,39 '' + IL_0000: ldarg.0 + IL_0001: ldfld string XYZ.A::x + IL_0006: ret + } // end of method A::get_X + + .property instance string X() + { + .get instance string XYZ.A::get_X() + } // end of property A::X +} // end of class XYZ.A + +.class public abstract auto ansi sealed XYZ.ABC + extends [mscorlib]System.Object +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class auto autochar serializable sealed nested public beforefieldinit Expr + extends [mscorlib]System.Object + implements class [mscorlib]System.IEquatable`1, + [mscorlib]System.Collections.IStructuralEquatable, + class [mscorlib]System.IComparable`1, + [mscorlib]System.IComparable, + [mscorlib]System.Collections.IStructuralComparable + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerDisplayAttribute::.ctor(string) = ( 01 00 15 7B 5F 5F 44 65 62 75 67 44 69 73 70 6C // ...{__DebugDispl + 61 79 28 29 2C 6E 71 7D 00 00 ) // ay(),nq}.. + .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 initonly int32 item + .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public static 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 ) + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: newobj instance void XYZ.ABC/Expr::.ctor(int32) + IL_0006: ret + } // end of method Expr::NewNum + + .method assembly specialname rtspecialname + instance void .ctor(int32 item) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 14 (0xe) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ldarg.0 + IL_0007: ldarg.1 + IL_0008: stfld int32 XYZ.ABC/Expr::item + IL_000d: ret + } // end of method Expr::.ctor + + .method public hidebysig instance int32 + get_Item() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 XYZ.ABC/Expr::item + IL_0006: ret + } // end of method Expr::get_Item + + .method public hidebysig instance int32 + get_Tag() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 4 (0x4) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: ldc.i4.0 + IL_0003: ret + } // end of method Expr::get_Tag + + .method assembly hidebysig specialname + instance object __DebugDisplay() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 22 (0x16) + .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 + } // end of method Expr::__DebugDisplay + + .method public strict virtual instance string + ToString() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 22 (0x16) + .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 XYZ.ABC/Expr>::.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 + } // end of method Expr::ToString + + .method public hidebysig virtual final + instance int32 CompareTo(class XYZ.ABC/Expr obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 64 (0x40) + .maxstack 4 + .locals init ([0] class XYZ.ABC/Expr V_0, + [1] class XYZ.ABC/Expr V_1, + [2] class [mscorlib]System.Collections.IComparer V_2, + [3] int32 V_3, + [4] int32 V_4) + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_0036 + + .line 100001,100001 : 0,0 '' + IL_0006: ldarg.1 + IL_0007: ldnull + IL_0008: cgt.un + IL_000a: brfalse.s IL_0034 + + .line 100001,100001 : 0,0 '' + IL_000c: ldarg.0 + IL_000d: pop + .line 100001,100001 : 0,0 '' + IL_000e: ldarg.0 + IL_000f: stloc.0 + IL_0010: ldarg.1 + IL_0011: stloc.1 + IL_0012: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0017: stloc.2 + IL_0018: ldloc.0 + IL_0019: ldfld int32 XYZ.ABC/Expr::item + IL_001e: stloc.3 + IL_001f: ldloc.1 + IL_0020: ldfld int32 XYZ.ABC/Expr::item + IL_0025: stloc.s V_4 + IL_0027: ldloc.3 + IL_0028: ldloc.s V_4 + IL_002a: bge.s IL_002e + + .line 100001,100001 : 0,0 '' + IL_002c: ldc.i4.m1 + IL_002d: ret + + .line 100001,100001 : 0,0 '' + IL_002e: ldloc.3 + IL_002f: ldloc.s V_4 + IL_0031: cgt + IL_0033: ret + + .line 100001,100001 : 0,0 '' + IL_0034: ldc.i4.1 + IL_0035: ret + + .line 100001,100001 : 0,0 '' + IL_0036: ldarg.1 + IL_0037: ldnull + IL_0038: cgt.un + IL_003a: brfalse.s IL_003e + + .line 100001,100001 : 0,0 '' + IL_003c: ldc.i4.m1 + IL_003d: ret + + .line 100001,100001 : 0,0 '' + IL_003e: ldc.i4.0 + IL_003f: ret + } // end of method Expr::CompareTo + + .method public hidebysig virtual final + instance int32 CompareTo(object obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 13 (0xd) + .maxstack 8 + .line 13,13 : 14,18 '' + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any XYZ.ABC/Expr + IL_0007: callvirt instance int32 XYZ.ABC/Expr::CompareTo(class XYZ.ABC/Expr) + IL_000c: ret + } // end of method Expr::CompareTo + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [mscorlib]System.Collections.IComparer comp) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 80 (0x50) + .maxstack 4 + .locals init ([0] class XYZ.ABC/Expr V_0, + [1] class XYZ.ABC/Expr V_1, + [2] class XYZ.ABC/Expr V_2, + [3] class [mscorlib]System.Collections.IComparer V_3, + [4] int32 V_4, + [5] int32 V_5) + .line 13,13 : 14,18 '' + IL_0000: ldarg.1 + IL_0001: unbox.any XYZ.ABC/Expr + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0041 + + .line 100001,100001 : 0,0 '' + IL_000d: ldarg.1 + IL_000e: unbox.any XYZ.ABC/Expr + IL_0013: ldnull + IL_0014: cgt.un + IL_0016: brfalse.s IL_003f + + .line 100001,100001 : 0,0 '' + IL_0018: ldarg.0 + IL_0019: pop + .line 100001,100001 : 0,0 '' + IL_001a: ldarg.0 + IL_001b: stloc.1 + IL_001c: ldloc.0 + IL_001d: stloc.2 + IL_001e: ldarg.2 + IL_001f: stloc.3 + IL_0020: ldloc.1 + IL_0021: ldfld int32 XYZ.ABC/Expr::item + IL_0026: stloc.s V_4 + IL_0028: ldloc.2 + IL_0029: ldfld int32 XYZ.ABC/Expr::item + IL_002e: stloc.s V_5 + IL_0030: ldloc.s V_4 + IL_0032: ldloc.s V_5 + IL_0034: bge.s IL_0038 + + .line 100001,100001 : 0,0 '' + IL_0036: ldc.i4.m1 + IL_0037: ret + + .line 100001,100001 : 0,0 '' + IL_0038: ldloc.s V_4 + IL_003a: ldloc.s V_5 + IL_003c: cgt + IL_003e: ret + + .line 100001,100001 : 0,0 '' + IL_003f: ldc.i4.1 + IL_0040: ret + + .line 100001,100001 : 0,0 '' + IL_0041: ldarg.1 + IL_0042: unbox.any XYZ.ABC/Expr + IL_0047: ldnull + IL_0048: cgt.un + IL_004a: brfalse.s IL_004e + + .line 100001,100001 : 0,0 '' + IL_004c: ldc.i4.m1 + IL_004d: ret + + .line 100001,100001 : 0,0 '' + IL_004e: ldc.i4.0 + IL_004f: ret + } // end of method Expr::CompareTo + + .method public hidebysig virtual final + instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 41 (0x29) + .maxstack 7 + .locals init ([0] int32 V_0, + [1] class XYZ.ABC/Expr V_1, + [2] class [mscorlib]System.Collections.IEqualityComparer V_2) + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_0027 + + .line 100001,100001 : 0,0 '' + IL_0006: ldc.i4.0 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + .line 100001,100001 : 0,0 '' + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldc.i4.0 + IL_000d: stloc.0 + IL_000e: ldc.i4 0x9e3779b9 + IL_0013: ldarg.1 + IL_0014: stloc.2 + IL_0015: ldloc.1 + IL_0016: ldfld int32 XYZ.ABC/Expr::item + IL_001b: ldloc.0 + IL_001c: ldc.i4.6 + IL_001d: shl + IL_001e: ldloc.0 + IL_001f: ldc.i4.2 + IL_0020: shr + IL_0021: add + IL_0022: add + IL_0023: add + IL_0024: stloc.0 + IL_0025: ldloc.0 + IL_0026: ret + + .line 100001,100001 : 0,0 '' + IL_0027: ldc.i4.0 + IL_0028: ret + } // end of method Expr::GetHashCode + + .method public hidebysig virtual final + instance int32 GetHashCode() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 12 (0xc) + .maxstack 8 + .line 13,13 : 14,18 '' + IL_0000: ldarg.0 + IL_0001: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: callvirt instance int32 XYZ.ABC/Expr::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) + IL_000b: ret + } // end of method Expr::GetHashCode + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [mscorlib]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 52 (0x34) + .maxstack 4 + .locals init ([0] class XYZ.ABC/Expr V_0, + [1] class XYZ.ABC/Expr V_1, + [2] class XYZ.ABC/Expr V_2, + [3] class XYZ.ABC/Expr V_3, + [4] class [mscorlib]System.Collections.IEqualityComparer V_4) + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_002c + + .line 100001,100001 : 0,0 '' + IL_0006: ldarg.1 + IL_0007: isinst XYZ.ABC/Expr + IL_000c: stloc.0 + IL_000d: ldloc.0 + IL_000e: brfalse.s IL_002a + + .line 100001,100001 : 0,0 '' + IL_0010: ldloc.0 + IL_0011: stloc.1 + IL_0012: ldarg.0 + IL_0013: pop + .line 100001,100001 : 0,0 '' + IL_0014: ldarg.0 + IL_0015: stloc.2 + IL_0016: ldloc.1 + IL_0017: stloc.3 + IL_0018: ldarg.2 + IL_0019: stloc.s V_4 + IL_001b: ldloc.2 + IL_001c: ldfld int32 XYZ.ABC/Expr::item + IL_0021: ldloc.3 + IL_0022: ldfld int32 XYZ.ABC/Expr::item + IL_0027: ceq + IL_0029: ret + + .line 100001,100001 : 0,0 '' + IL_002a: ldc.i4.0 + IL_002b: ret + + .line 100001,100001 : 0,0 '' + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret + } // end of method Expr::Equals + + .method public hidebysig virtual final + instance bool Equals(class XYZ.ABC/Expr obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 43 (0x2b) + .maxstack 4 + .locals init ([0] class XYZ.ABC/Expr V_0, + [1] class XYZ.ABC/Expr V_1) + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_0023 + + .line 100001,100001 : 0,0 '' + IL_0006: ldarg.1 + IL_0007: ldnull + IL_0008: cgt.un + IL_000a: brfalse.s IL_0021 + + .line 100001,100001 : 0,0 '' + IL_000c: ldarg.0 + IL_000d: pop + .line 100001,100001 : 0,0 '' + IL_000e: ldarg.0 + IL_000f: stloc.0 + IL_0010: ldarg.1 + IL_0011: stloc.1 + IL_0012: ldloc.0 + IL_0013: ldfld int32 XYZ.ABC/Expr::item + IL_0018: ldloc.1 + IL_0019: ldfld int32 XYZ.ABC/Expr::item + IL_001e: ceq + IL_0020: ret + + .line 100001,100001 : 0,0 '' + IL_0021: ldc.i4.0 + IL_0022: ret + + .line 100001,100001 : 0,0 '' + IL_0023: ldarg.1 + IL_0024: ldnull + IL_0025: cgt.un + IL_0027: ldc.i4.0 + IL_0028: ceq + IL_002a: ret + } // end of method Expr::Equals + + .method public hidebysig virtual final + instance bool Equals(object obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 20 (0x14) + .maxstack 4 + .locals init ([0] class XYZ.ABC/Expr V_0) + .line 13,13 : 14,18 '' + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0012 + + .line 100001,100001 : 0,0 '' + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: callvirt instance bool XYZ.ABC/Expr::Equals(class XYZ.ABC/Expr) + IL_0011: ret + + .line 100001,100001 : 0,0 '' + IL_0012: ldc.i4.0 + IL_0013: ret + } // end of method Expr::Equals + + .property instance int32 Tag() + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .get instance int32 XYZ.ABC/Expr::get_Tag() + } // end of property Expr::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 [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .get instance int32 XYZ.ABC/Expr::get_Item() + } // end of property Expr::Item + } // end of class Expr + + .class auto ansi serializable nested public beforefieldinit MyExn + extends [mscorlib]System.Exception + implements [mscorlib]System.Collections.IStructuralEquatable + { + .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 + { + // Code size 14 (0xe) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Exception::.ctor() + IL_0006: ldarg.0 + IL_0007: ldarg.1 + IL_0008: stfld int32 XYZ.ABC/MyExn::Data0@ + IL_000d: ret + } // end of method MyExn::.ctor + + .method public specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Exception::.ctor() + IL_0006: ret + } // end of method MyExn::.ctor + + .method family specialname rtspecialname + instance void .ctor(class [mscorlib]System.Runtime.Serialization.SerializationInfo info, + valuetype [mscorlib]System.Runtime.Serialization.StreamingContext context) cil managed + { + // Code size 9 (0x9) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: ldarg.2 + IL_0003: call instance void [mscorlib]System.Exception::.ctor(class [mscorlib]System.Runtime.Serialization.SerializationInfo, + valuetype [mscorlib]System.Runtime.Serialization.StreamingContext) + IL_0008: ret + } // end of method MyExn::.ctor + + .method public hidebysig specialname + instance int32 get_Data0() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 XYZ.ABC/MyExn::Data0@ + IL_0006: ret + } // end of method MyExn::get_Data0 + + .method public hidebysig virtual instance int32 + GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 40 (0x28) + .maxstack 7 + .locals init ([0] int32 V_0, + [1] class [mscorlib]System.Collections.IEqualityComparer V_1) + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_0026 + + .line 100001,100001 : 0,0 '' + IL_0006: ldc.i4.0 + IL_0007: stloc.0 + IL_0008: ldc.i4 0x9e3779b9 + IL_000d: ldarg.1 + IL_000e: stloc.1 + IL_000f: ldarg.0 + IL_0010: castclass XYZ.ABC/MyExn + IL_0015: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_001a: ldloc.0 + IL_001b: ldc.i4.6 + IL_001c: shl + IL_001d: ldloc.0 + IL_001e: ldc.i4.2 + IL_001f: shr + IL_0020: add + IL_0021: add + IL_0022: add + IL_0023: stloc.0 + IL_0024: ldloc.0 + IL_0025: ret + + .line 100001,100001 : 0,0 '' + IL_0026: ldc.i4.0 + IL_0027: ret + } // end of method MyExn::GetHashCode + + .method public hidebysig virtual instance int32 + GetHashCode() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 12 (0xc) + .maxstack 8 + .line 14,14 : 19,24 '' + IL_0000: ldarg.0 + IL_0001: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: callvirt instance int32 XYZ.ABC/MyExn::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) + IL_000b: ret + } // end of method MyExn::GetHashCode + + .method public hidebysig virtual instance bool + Equals(object obj, + class [mscorlib]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 67 (0x43) + .maxstack 4 + .locals init ([0] class [mscorlib]System.Exception V_0, + [1] class [mscorlib]System.Exception V_1, + [2] class [mscorlib]System.Collections.IEqualityComparer V_2) + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_003b + + .line 100001,100001 : 0,0 '' + IL_0006: ldarg.1 + IL_0007: isinst [mscorlib]System.Exception + IL_000c: stloc.0 + IL_000d: ldloc.0 + IL_000e: brfalse.s IL_0039 + + .line 100001,100001 : 0,0 '' + IL_0010: ldloc.0 + IL_0011: stloc.1 + IL_0012: ldloc.0 + IL_0013: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) + IL_0018: brtrue.s IL_001c + + IL_001a: br.s IL_0037 + + .line 100001,100001 : 0,0 '' + IL_001c: ldarg.2 + IL_001d: stloc.2 + 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 + + .line 100001,100001 : 0,0 '' + IL_0037: ldc.i4.0 + IL_0038: ret + + .line 100001,100001 : 0,0 '' + IL_0039: ldc.i4.0 + IL_003a: ret + + .line 100001,100001 : 0,0 '' + IL_003b: ldarg.1 + IL_003c: ldnull + IL_003d: cgt.un + IL_003f: ldc.i4.0 + IL_0040: ceq + IL_0042: ret + } // end of method MyExn::Equals + + .method public hidebysig instance bool + Equals(class [mscorlib]System.Exception obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 59 (0x3b) + .maxstack 8 + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_0033 + + .line 100001,100001 : 0,0 '' + IL_0006: ldarg.1 + IL_0007: ldnull + IL_0008: cgt.un + IL_000a: brfalse.s IL_0031 + + .line 100001,100001 : 0,0 '' + IL_000c: ldarg.1 + IL_000d: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) + IL_0012: brtrue.s IL_0016 + + IL_0014: br.s IL_002f + + .line 100001,100001 : 0,0 '' + IL_0016: ldarg.0 + IL_0017: castclass XYZ.ABC/MyExn + IL_001c: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_0021: ldarg.1 + IL_0022: castclass XYZ.ABC/MyExn + IL_0027: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_002c: ceq + IL_002e: ret + + .line 100001,100001 : 0,0 '' + IL_002f: ldc.i4.0 + IL_0030: ret + + .line 100001,100001 : 0,0 '' + IL_0031: ldc.i4.0 + IL_0032: ret + + .line 100001,100001 : 0,0 '' + IL_0033: ldarg.1 + IL_0034: ldnull + IL_0035: cgt.un + IL_0037: ldc.i4.0 + IL_0038: ceq + IL_003a: ret + } // end of method MyExn::Equals + + .method public hidebysig virtual instance bool + Equals(object obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 20 (0x14) + .maxstack 4 + .locals init ([0] class [mscorlib]System.Exception V_0) + .line 14,14 : 19,24 '' + IL_0000: ldarg.1 + IL_0001: isinst [mscorlib]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0012 + + .line 100001,100001 : 0,0 '' + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: callvirt instance bool XYZ.ABC/MyExn::Equals(class [mscorlib]System.Exception) + IL_0011: ret + + .line 100001,100001 : 0,0 '' + IL_0012: ldc.i4.0 + IL_0013: ret + } // end of method MyExn::Equals + + .property instance int32 Data0() + { + .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 XYZ.ABC/MyExn::get_Data0() + } // end of property MyExn::Data0 + } // end of class MyExn + + .class auto ansi serializable nested public A + extends [mscorlib]System.Object + { + .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 + { + // Code size 16 (0x10) + .maxstack 8 + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: callvirt instance void [mscorlib]System.Object::.ctor() + IL_0006: ldarg.0 + IL_0007: pop + .line 15,15 : 16,17 '' + IL_0008: ldarg.0 + IL_0009: ldarg.1 + IL_000a: stfld string XYZ.ABC/A::x + .line 15,15 : 14,15 '' + IL_000f: ret + } // end of method A::.ctor + + .method public hidebysig specialname + instance string get_X() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + .line 15,15 : 42,43 '' + IL_0000: ldarg.0 + IL_0001: ldfld string XYZ.ABC/A::x + IL_0006: ret + } // end of method A::get_X + + .property instance string X() + { + .get instance string XYZ.ABC/A::get_X() + } // end of property A::X + } // end of class A + + .class abstract auto ansi sealed nested public ABC + extends [mscorlib]System.Object + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class auto autochar serializable sealed nested public beforefieldinit Expr + extends [mscorlib]System.Object + implements class [mscorlib]System.IEquatable`1, + [mscorlib]System.Collections.IStructuralEquatable, + class [mscorlib]System.IComparable`1, + [mscorlib]System.IComparable, + [mscorlib]System.Collections.IStructuralComparable + { + .custom instance void [mscorlib]System.Diagnostics.DebuggerDisplayAttribute::.ctor(string) = ( 01 00 15 7B 5F 5F 44 65 62 75 67 44 69 73 70 6C // ...{__DebugDispl + 61 79 28 29 2C 6E 71 7D 00 00 ) // ay(),nq}.. + .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 initonly int32 item + .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method public static 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 ) + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: newobj instance void XYZ.ABC/ABC/Expr::.ctor(int32) + IL_0006: ret + } // end of method Expr::NewNum + + .method assembly specialname rtspecialname + instance void .ctor(int32 item) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 14 (0xe) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ldarg.0 + IL_0007: ldarg.1 + IL_0008: stfld int32 XYZ.ABC/ABC/Expr::item + IL_000d: ret + } // end of method Expr::.ctor + + .method public hidebysig instance int32 + get_Item() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_0006: ret + } // end of method Expr::get_Item + + .method public hidebysig instance int32 + get_Tag() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 4 (0x4) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: pop + IL_0002: ldc.i4.0 + IL_0003: ret + } // end of method Expr::get_Tag + + .method assembly hidebysig specialname + instance object __DebugDisplay() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 22 (0x16) + .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 + } // end of method Expr::__DebugDisplay + + .method public strict virtual instance string + ToString() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 22 (0x16) + .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 XYZ.ABC/ABC/Expr>::.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 + } // end of method Expr::ToString + + .method public hidebysig virtual final + instance int32 CompareTo(class XYZ.ABC/ABC/Expr obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 64 (0x40) + .maxstack 4 + .locals init ([0] class XYZ.ABC/ABC/Expr V_0, + [1] class XYZ.ABC/ABC/Expr V_1, + [2] class [mscorlib]System.Collections.IComparer V_2, + [3] int32 V_3, + [4] int32 V_4) + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_0036 + + .line 100001,100001 : 0,0 '' + IL_0006: ldarg.1 + IL_0007: ldnull + IL_0008: cgt.un + IL_000a: brfalse.s IL_0034 + + .line 100001,100001 : 0,0 '' + IL_000c: ldarg.0 + IL_000d: pop + .line 100001,100001 : 0,0 '' + IL_000e: ldarg.0 + IL_000f: stloc.0 + IL_0010: ldarg.1 + IL_0011: stloc.1 + IL_0012: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0017: stloc.2 + IL_0018: ldloc.0 + IL_0019: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_001e: stloc.3 + IL_001f: ldloc.1 + IL_0020: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_0025: stloc.s V_4 + IL_0027: ldloc.3 + IL_0028: ldloc.s V_4 + IL_002a: bge.s IL_002e + + .line 100001,100001 : 0,0 '' + IL_002c: ldc.i4.m1 + IL_002d: ret + + .line 100001,100001 : 0,0 '' + IL_002e: ldloc.3 + IL_002f: ldloc.s V_4 + IL_0031: cgt + IL_0033: ret + + .line 100001,100001 : 0,0 '' + IL_0034: ldc.i4.1 + IL_0035: ret + + .line 100001,100001 : 0,0 '' + IL_0036: ldarg.1 + IL_0037: ldnull + IL_0038: cgt.un + IL_003a: brfalse.s IL_003e + + .line 100001,100001 : 0,0 '' + IL_003c: ldc.i4.m1 + IL_003d: ret + + .line 100001,100001 : 0,0 '' + IL_003e: ldc.i4.0 + IL_003f: ret + } // end of method Expr::CompareTo + + .method public hidebysig virtual final + instance int32 CompareTo(object obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 13 (0xd) + .maxstack 8 + .line 23,23 : 18,22 '' + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any XYZ.ABC/ABC/Expr + IL_0007: callvirt instance int32 XYZ.ABC/ABC/Expr::CompareTo(class XYZ.ABC/ABC/Expr) + IL_000c: ret + } // end of method Expr::CompareTo + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [mscorlib]System.Collections.IComparer comp) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 80 (0x50) + .maxstack 4 + .locals init ([0] class XYZ.ABC/ABC/Expr V_0, + [1] class XYZ.ABC/ABC/Expr V_1, + [2] class XYZ.ABC/ABC/Expr V_2, + [3] class [mscorlib]System.Collections.IComparer V_3, + [4] int32 V_4, + [5] int32 V_5) + .line 23,23 : 18,22 '' + IL_0000: ldarg.1 + IL_0001: unbox.any XYZ.ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0041 + + .line 100001,100001 : 0,0 '' + IL_000d: ldarg.1 + IL_000e: unbox.any XYZ.ABC/ABC/Expr + IL_0013: ldnull + IL_0014: cgt.un + IL_0016: brfalse.s IL_003f + + .line 100001,100001 : 0,0 '' + IL_0018: ldarg.0 + IL_0019: pop + .line 100001,100001 : 0,0 '' + IL_001a: ldarg.0 + IL_001b: stloc.1 + IL_001c: ldloc.0 + IL_001d: stloc.2 + IL_001e: ldarg.2 + IL_001f: stloc.3 + IL_0020: ldloc.1 + IL_0021: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_0026: stloc.s V_4 + IL_0028: ldloc.2 + IL_0029: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_002e: stloc.s V_5 + IL_0030: ldloc.s V_4 + IL_0032: ldloc.s V_5 + IL_0034: bge.s IL_0038 + + .line 100001,100001 : 0,0 '' + IL_0036: ldc.i4.m1 + IL_0037: ret + + .line 100001,100001 : 0,0 '' + IL_0038: ldloc.s V_4 + IL_003a: ldloc.s V_5 + IL_003c: cgt + IL_003e: ret + + .line 100001,100001 : 0,0 '' + IL_003f: ldc.i4.1 + IL_0040: ret + + .line 100001,100001 : 0,0 '' + IL_0041: ldarg.1 + IL_0042: unbox.any XYZ.ABC/ABC/Expr + IL_0047: ldnull + IL_0048: cgt.un + IL_004a: brfalse.s IL_004e + + .line 100001,100001 : 0,0 '' + IL_004c: ldc.i4.m1 + IL_004d: ret + + .line 100001,100001 : 0,0 '' + IL_004e: ldc.i4.0 + IL_004f: ret + } // end of method Expr::CompareTo + + .method public hidebysig virtual final + instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 41 (0x29) + .maxstack 7 + .locals init ([0] int32 V_0, + [1] class XYZ.ABC/ABC/Expr V_1, + [2] class [mscorlib]System.Collections.IEqualityComparer V_2) + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_0027 + + .line 100001,100001 : 0,0 '' + IL_0006: ldc.i4.0 + IL_0007: stloc.0 + IL_0008: ldarg.0 + IL_0009: pop + .line 100001,100001 : 0,0 '' + IL_000a: ldarg.0 + IL_000b: stloc.1 + IL_000c: ldc.i4.0 + IL_000d: stloc.0 + IL_000e: ldc.i4 0x9e3779b9 + IL_0013: ldarg.1 + IL_0014: stloc.2 + IL_0015: ldloc.1 + IL_0016: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_001b: ldloc.0 + IL_001c: ldc.i4.6 + IL_001d: shl + IL_001e: ldloc.0 + IL_001f: ldc.i4.2 + IL_0020: shr + IL_0021: add + IL_0022: add + IL_0023: add + IL_0024: stloc.0 + IL_0025: ldloc.0 + IL_0026: ret + + .line 100001,100001 : 0,0 '' + IL_0027: ldc.i4.0 + IL_0028: ret + } // end of method Expr::GetHashCode + + .method public hidebysig virtual final + instance int32 GetHashCode() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 12 (0xc) + .maxstack 8 + .line 23,23 : 18,22 '' + IL_0000: ldarg.0 + IL_0001: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: callvirt instance int32 XYZ.ABC/ABC/Expr::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) + IL_000b: ret + } // end of method Expr::GetHashCode + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [mscorlib]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 52 (0x34) + .maxstack 4 + .locals init ([0] class XYZ.ABC/ABC/Expr V_0, + [1] class XYZ.ABC/ABC/Expr V_1, + [2] class XYZ.ABC/ABC/Expr V_2, + [3] class XYZ.ABC/ABC/Expr V_3, + [4] class [mscorlib]System.Collections.IEqualityComparer V_4) + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_002c + + .line 100001,100001 : 0,0 '' + IL_0006: ldarg.1 + IL_0007: isinst XYZ.ABC/ABC/Expr + IL_000c: stloc.0 + IL_000d: ldloc.0 + IL_000e: brfalse.s IL_002a + + .line 100001,100001 : 0,0 '' + IL_0010: ldloc.0 + IL_0011: stloc.1 + IL_0012: ldarg.0 + IL_0013: pop + .line 100001,100001 : 0,0 '' + IL_0014: ldarg.0 + IL_0015: stloc.2 + IL_0016: ldloc.1 + IL_0017: stloc.3 + IL_0018: ldarg.2 + IL_0019: stloc.s V_4 + IL_001b: ldloc.2 + IL_001c: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_0021: ldloc.3 + IL_0022: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_0027: ceq + IL_0029: ret + + .line 100001,100001 : 0,0 '' + IL_002a: ldc.i4.0 + IL_002b: ret + + .line 100001,100001 : 0,0 '' + IL_002c: ldarg.1 + IL_002d: ldnull + IL_002e: cgt.un + IL_0030: ldc.i4.0 + IL_0031: ceq + IL_0033: ret + } // end of method Expr::Equals + + .method public hidebysig virtual final + instance bool Equals(class XYZ.ABC/ABC/Expr obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 43 (0x2b) + .maxstack 4 + .locals init ([0] class XYZ.ABC/ABC/Expr V_0, + [1] class XYZ.ABC/ABC/Expr V_1) + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_0023 + + .line 100001,100001 : 0,0 '' + IL_0006: ldarg.1 + IL_0007: ldnull + IL_0008: cgt.un + IL_000a: brfalse.s IL_0021 + + .line 100001,100001 : 0,0 '' + IL_000c: ldarg.0 + IL_000d: pop + .line 100001,100001 : 0,0 '' + IL_000e: ldarg.0 + IL_000f: stloc.0 + IL_0010: ldarg.1 + IL_0011: stloc.1 + IL_0012: ldloc.0 + IL_0013: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_0018: ldloc.1 + IL_0019: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_001e: ceq + IL_0020: ret + + .line 100001,100001 : 0,0 '' + IL_0021: ldc.i4.0 + IL_0022: ret + + .line 100001,100001 : 0,0 '' + IL_0023: ldarg.1 + IL_0024: ldnull + IL_0025: cgt.un + IL_0027: ldc.i4.0 + IL_0028: ceq + IL_002a: ret + } // end of method Expr::Equals + + .method public hidebysig virtual final + instance bool Equals(object obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 20 (0x14) + .maxstack 4 + .locals init ([0] class XYZ.ABC/ABC/Expr V_0) + .line 23,23 : 18,22 '' + IL_0000: ldarg.1 + IL_0001: isinst XYZ.ABC/ABC/Expr + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0012 + + .line 100001,100001 : 0,0 '' + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: callvirt instance bool XYZ.ABC/ABC/Expr::Equals(class XYZ.ABC/ABC/Expr) + IL_0011: ret + + .line 100001,100001 : 0,0 '' + IL_0012: ldc.i4.0 + IL_0013: ret + } // end of method Expr::Equals + + .property instance int32 Tag() + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .get instance int32 XYZ.ABC/ABC/Expr::get_Tag() + } // end of property Expr::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 [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .get instance int32 XYZ.ABC/ABC/Expr::get_Item() + } // end of property Expr::Item + } // end of class Expr + + .class auto ansi serializable nested public beforefieldinit MyExn + extends [mscorlib]System.Exception + implements [mscorlib]System.Collections.IStructuralEquatable + { + .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 + { + // Code size 14 (0xe) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Exception::.ctor() + IL_0006: ldarg.0 + IL_0007: ldarg.1 + IL_0008: stfld int32 XYZ.ABC/ABC/MyExn::Data0@ + IL_000d: ret + } // end of method MyExn::.ctor + + .method public specialname rtspecialname + instance void .ctor() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Exception::.ctor() + IL_0006: ret + } // end of method MyExn::.ctor + + .method family specialname rtspecialname + instance void .ctor(class [mscorlib]System.Runtime.Serialization.SerializationInfo info, + valuetype [mscorlib]System.Runtime.Serialization.StreamingContext context) cil managed + { + // Code size 9 (0x9) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: ldarg.2 + IL_0003: call instance void [mscorlib]System.Exception::.ctor(class [mscorlib]System.Runtime.Serialization.SerializationInfo, + valuetype [mscorlib]System.Runtime.Serialization.StreamingContext) + IL_0008: ret + } // end of method MyExn::.ctor + + .method public hidebysig specialname + instance int32 get_Data0() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 XYZ.ABC/ABC/MyExn::Data0@ + IL_0006: ret + } // end of method MyExn::get_Data0 + + .method public hidebysig virtual instance int32 + GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 40 (0x28) + .maxstack 7 + .locals init ([0] int32 V_0, + [1] class [mscorlib]System.Collections.IEqualityComparer V_1) + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_0026 + + .line 100001,100001 : 0,0 '' + IL_0006: ldc.i4.0 + IL_0007: stloc.0 + IL_0008: ldc.i4 0x9e3779b9 + IL_000d: ldarg.1 + IL_000e: stloc.1 + IL_000f: ldarg.0 + IL_0010: castclass XYZ.ABC/ABC/MyExn + IL_0015: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_001a: ldloc.0 + IL_001b: ldc.i4.6 + IL_001c: shl + IL_001d: ldloc.0 + IL_001e: ldc.i4.2 + IL_001f: shr + IL_0020: add + IL_0021: add + IL_0022: add + IL_0023: stloc.0 + IL_0024: ldloc.0 + IL_0025: ret + + .line 100001,100001 : 0,0 '' + IL_0026: ldc.i4.0 + IL_0027: ret + } // end of method MyExn::GetHashCode + + .method public hidebysig virtual instance int32 + GetHashCode() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 12 (0xc) + .maxstack 8 + .line 24,24 : 23,28 '' + IL_0000: ldarg.0 + IL_0001: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: callvirt instance int32 XYZ.ABC/ABC/MyExn::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) + IL_000b: ret + } // end of method MyExn::GetHashCode + + .method public hidebysig virtual instance bool + Equals(object obj, + class [mscorlib]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 67 (0x43) + .maxstack 4 + .locals init ([0] class [mscorlib]System.Exception V_0, + [1] class [mscorlib]System.Exception V_1, + [2] class [mscorlib]System.Collections.IEqualityComparer V_2) + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_003b + + .line 100001,100001 : 0,0 '' + IL_0006: ldarg.1 + IL_0007: isinst [mscorlib]System.Exception + IL_000c: stloc.0 + IL_000d: ldloc.0 + IL_000e: brfalse.s IL_0039 + + .line 100001,100001 : 0,0 '' + IL_0010: ldloc.0 + IL_0011: stloc.1 + IL_0012: ldloc.0 + IL_0013: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) + IL_0018: brtrue.s IL_001c + + IL_001a: br.s IL_0037 + + .line 100001,100001 : 0,0 '' + IL_001c: ldarg.2 + IL_001d: stloc.2 + 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 + + .line 100001,100001 : 0,0 '' + IL_0037: ldc.i4.0 + IL_0038: ret + + .line 100001,100001 : 0,0 '' + IL_0039: ldc.i4.0 + IL_003a: ret + + .line 100001,100001 : 0,0 '' + IL_003b: ldarg.1 + IL_003c: ldnull + IL_003d: cgt.un + IL_003f: ldc.i4.0 + IL_0040: ceq + IL_0042: ret + } // end of method MyExn::Equals + + .method public hidebysig instance bool + Equals(class [mscorlib]System.Exception obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 59 (0x3b) + .maxstack 8 + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_0033 + + .line 100001,100001 : 0,0 '' + IL_0006: ldarg.1 + IL_0007: ldnull + IL_0008: cgt.un + IL_000a: brfalse.s IL_0031 + + .line 100001,100001 : 0,0 '' + IL_000c: ldarg.1 + IL_000d: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) + IL_0012: brtrue.s IL_0016 + + IL_0014: br.s IL_002f + + .line 100001,100001 : 0,0 '' + IL_0016: ldarg.0 + IL_0017: castclass XYZ.ABC/ABC/MyExn + IL_001c: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_0021: ldarg.1 + IL_0022: castclass XYZ.ABC/ABC/MyExn + IL_0027: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_002c: ceq + IL_002e: ret + + .line 100001,100001 : 0,0 '' + IL_002f: ldc.i4.0 + IL_0030: ret + + .line 100001,100001 : 0,0 '' + IL_0031: ldc.i4.0 + IL_0032: ret + + .line 100001,100001 : 0,0 '' + IL_0033: ldarg.1 + IL_0034: ldnull + IL_0035: cgt.un + IL_0037: ldc.i4.0 + IL_0038: ceq + IL_003a: ret + } // end of method MyExn::Equals + + .method public hidebysig virtual instance bool + Equals(object obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 20 (0x14) + .maxstack 4 + .locals init ([0] class [mscorlib]System.Exception V_0) + .line 24,24 : 23,28 '' + IL_0000: ldarg.1 + IL_0001: isinst [mscorlib]System.Exception + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0012 + + .line 100001,100001 : 0,0 '' + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: callvirt instance bool XYZ.ABC/ABC/MyExn::Equals(class [mscorlib]System.Exception) + IL_0011: ret + + .line 100001,100001 : 0,0 '' + IL_0012: ldc.i4.0 + IL_0013: ret + } // end of method MyExn::Equals + + .property instance int32 Data0() + { + .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 XYZ.ABC/ABC/MyExn::get_Data0() + } // end of property MyExn::Data0 + } // end of class MyExn + + .class auto ansi serializable nested public A + extends [mscorlib]System.Object + { + .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 + { + // Code size 16 (0x10) + .maxstack 8 + .line 100001,100001 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: callvirt instance void [mscorlib]System.Object::.ctor() + IL_0006: ldarg.0 + IL_0007: pop + .line 25,25 : 20,21 '' + IL_0008: ldarg.0 + IL_0009: ldarg.1 + IL_000a: stfld string XYZ.ABC/ABC/A::x + .line 25,25 : 18,19 '' + IL_000f: ret + } // end of method A::.ctor + + .method public hidebysig specialname + instance string get_X() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + .line 25,25 : 46,47 '' + IL_0000: ldarg.0 + IL_0001: ldfld string XYZ.ABC/ABC/A::x + IL_0006: ret + } // end of method A::get_X + + .property instance string X() + { + .get instance string XYZ.ABC/ABC/A::get_X() + } // end of property A::X + } // end of class A + + .method public static int32 'add'(int32 x, + int32 y) cil managed + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationArgumentCountsAttribute::.ctor(int32[]) = ( 01 00 02 00 00 00 01 00 00 00 01 00 00 00 00 00 ) + // Code size 4 (0x4) + .maxstack 8 + .line 28,28 : 27,32 '' + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: add + IL_0003: ret + } // end of method ABC::'add' + + .method public specialname static string + get_greeting() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 6 (0x6) + .maxstack 8 + IL_0000: ldstr "hello" + IL_0005: ret + } // end of method ABC::get_greeting + + .property string greeting() + { + .get string XYZ.ABC/ABC::get_greeting() + } // end of property ABC::greeting + } // end of class ABC + + .method public static int32 'add'(int32 x, + int32 y) cil managed + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationArgumentCountsAttribute::.ctor(int32[]) = ( 01 00 02 00 00 00 01 00 00 00 01 00 00 00 00 00 ) + // Code size 4 (0x4) + .maxstack 8 + .line 18,18 : 23,28 '' + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: add + IL_0003: ret + } // end of method ABC::'add' + + .method public specialname static string + get_greeting() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 6 (0x6) + .maxstack 8 + IL_0000: ldstr "hello" + IL_0005: ret + } // end of method ABC::get_greeting + + .property string greeting() + { + .get string XYZ.ABC::get_greeting() + } // end of property ABC::greeting +} // end of class XYZ.ABC + +.class private abstract auto ansi sealed ''.$ToplevelNamespace + extends [mscorlib]System.Object +{ + .field static assembly int32 init@ + .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + .custom instance void [mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 ) + .method private specialname rtspecialname static + void .cctor() cil managed + { + // Code size 13 (0xd) + .maxstack 3 + .locals init ([0] string greeting, + [1] string V_1) + .line 19,19 : 9,31 '' + IL_0000: call string XYZ.ABC::get_greeting() + IL_0005: stloc.0 + .line 29,29 : 13,35 '' + IL_0006: call string XYZ.ABC/ABC::get_greeting() + IL_000b: stloc.1 + IL_000c: ret + } // end of method $ToplevelNamespace::.cctor + +} // end of class ''.$ToplevelNamespace + + +// ============================================================= + +// *********** DISASSEMBLY COMPLETE *********************** From 82027291472f2a2dec634a98fee53fb83e8ab5c9 Mon Sep 17 00:00:00 2001 From: Don Syme Date: Thu, 24 Jun 2021 16:22:28 +0100 Subject: [PATCH 6/7] prevent multiple top-level values with the same name --- src/fsharp/InnerLambdasToTopLevelFuncs.fs | 19 ++++++++++--------- src/fsharp/Optimizer.fs | 5 +++-- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/fsharp/InnerLambdasToTopLevelFuncs.fs b/src/fsharp/InnerLambdasToTopLevelFuncs.fs index ba968c72a01..fb070b66176 100644 --- a/src/fsharp/InnerLambdasToTopLevelFuncs.fs +++ b/src/fsharp/InnerLambdasToTopLevelFuncs.fs @@ -967,13 +967,14 @@ module Pass4_RewriteAssembly = // pass4: lowertop - convert_vterm_bind on TopLevel binds //------------------------------------------------------------------------- - let ConvertBind g (TBind(v, repr, _) as bind) = + let AdjustBindToTopVal g (TBind(v, repr, _)) = match v.ValReprInfo with - | None -> v.SetValReprInfo (Some (InferArityOfExprBinding g AllowTypeDirectedDetupling.Yes v repr )) + | None -> + v.SetValReprInfo (Some (InferArityOfExprBinding g AllowTypeDirectedDetupling.Yes v repr )) + // Things that don't have an arity from type inference but are top-level are compiler-generated + v.SetIsCompilerGenerated(true) | Some _ -> () - bind - //------------------------------------------------------------------------- // pass4: transBind (translate) //------------------------------------------------------------------------- @@ -1035,6 +1036,9 @@ module Pass4_RewriteAssembly = | None -> List.empty // no env for this mutual binding | Some envp -> envp.ep_pack // environment pack bindings + let forceTopBindToHaveArity penv (bind: Binding) = + if penv.topValS.Contains(bind.Var) then AdjustBindToTopVal penv.g bind + let TransBindings xisRec penv (binds: Bindings) = let tlrBs, nonTlrBs = binds |> List.partition (fun b -> Zset.contains b.Var penv.tlrS) let fclass = BindingGroupSharingSameReqdItems tlrBs @@ -1045,12 +1049,9 @@ module Pass4_RewriteAssembly = // QUERY: we repeat this logic in LowerCallsAndSeqs. Do we really need to do this here? // QUERY: yes and no - if we don't, we have an unrealizable term, and many decisions must // QUERY: correlate with LowerCallsAndSeqs. - let forceTopBindToHaveArity (bind: Binding) = - if penv.topValS.Contains(bind.Var) then ConvertBind penv.g bind - else bind - let nonTlrBs = nonTlrBs |> List.map forceTopBindToHaveArity - let tlrRebinds = tlrRebinds |> List.map forceTopBindToHaveArity + nonTlrBs |> List.iter (forceTopBindToHaveArity penv) + tlrRebinds |> List.iter (forceTopBindToHaveArity penv) // assemble into replacement bindings let bindAs, rebinds = match xisRec with diff --git a/src/fsharp/Optimizer.fs b/src/fsharp/Optimizer.fs index 7576eb749ca..6c61ca7985b 100644 --- a/src/fsharp/Optimizer.fs +++ b/src/fsharp/Optimizer.fs @@ -2590,9 +2590,10 @@ and TryOptimizeVal cenv env (vOpt: ValRef option, mustInline, valInfoForVal, m) // If we have proven 'v = compilerGeneratedValue' // and 'v' is being eliminated in favour of 'compilerGeneratedValue' // then replace the name of 'compilerGeneratedValue' - // by 'v' and mark it not compiler generated so we preserve good debugging and names + // by 'v' and mark it not compiler generated so we preserve good debugging and names. + // Don't do this for things represented statically as it may publish multiple values with the same name. match vOpt with - | Some v when not v.IsCompilerGenerated && vR.IsCompilerGenerated -> + | Some v when not v.IsCompilerGenerated && vR.IsCompilerGenerated && not vR.IsCompiledAsTopLevel && not v.IsCompiledAsTopLevel -> vR.Deref.SetIsCompilerGenerated(false) vR.Deref.SetLogicalName(v.LogicalName) | _ -> () From b5039a3f5356705f69a5e99cb166658f2e06388e Mon Sep 17 00:00:00 2001 From: Don Syme Date: Thu, 24 Jun 2021 21:19:50 +0100 Subject: [PATCH 7/7] update baselines, add optimized version of codegen test --- .../TestFunctions/TestFunction24.il.bsl | 48 +- .../EmittedIL/TestFunctions/TestFunction25.fs | 32 + .../TestFunctions/TestFunction25.il.bsl | 849 ++++++++++++++++++ .../CodeGen/EmittedIL/TestFunctions/env.lst | 1 + 4 files changed, 912 insertions(+), 18 deletions(-) create mode 100644 tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction25.fs create mode 100644 tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction25.il.bsl diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction24.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction24.il.bsl index 1063152863a..88351c96ebf 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction24.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction24.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000748 Length: 0x00000228 } .module TestFunction24.exe -// MVID: {60B68B97-A643-4587-A745-0383978BB660} +// MVID: {60D4E6CF-A643-4587-A745-0383CFE6D460} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06EA0000 +// Image base: 0x056D0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -865,7 +865,7 @@ .method public static class [mscorlib]System.Tuple`2 pinString() cil managed { - // Code size 77 (0x4d) + // Code size 93 (0x5d) .maxstack 6 .locals init ([0] string str, [1] native int pChar, @@ -873,7 +873,11 @@ [3] native int V_3, [4] int32 V_4, [5] native int V_5, - [6] int32 V_6) + [6] native int V_6, + [7] native int V_7, + [8] int32 V_8, + [9] native int V_9, + [10] native int V_10) .line 28,28 : 5,28 '' IL_0000: ldstr "Hello World" IL_0005: stloc.0 @@ -909,21 +913,29 @@ IL_0022: sizeof [mscorlib]System.Char IL_0028: mul IL_0029: add - IL_002a: ldobj [mscorlib]System.Char - IL_002f: ldloc.1 - IL_0030: stloc.s V_5 - IL_0032: ldc.i4.1 - IL_0033: stloc.s V_6 - IL_0035: ldloc.s V_5 - IL_0037: ldloc.s V_6 - IL_0039: conv.i - IL_003a: sizeof [mscorlib]System.Char - IL_0040: mul - IL_0041: add - IL_0042: ldobj [mscorlib]System.Char - IL_0047: newobj instance void class [mscorlib]System.Tuple`2::.ctor(!0, + IL_002a: stloc.s V_5 + IL_002c: ldloc.s V_5 + IL_002e: stloc.s V_6 + IL_0030: ldloc.s V_6 + IL_0032: ldobj [mscorlib]System.Char + IL_0037: ldloc.1 + IL_0038: stloc.s V_7 + IL_003a: ldc.i4.1 + IL_003b: stloc.s V_8 + IL_003d: ldloc.s V_7 + IL_003f: ldloc.s V_8 + IL_0041: conv.i + IL_0042: sizeof [mscorlib]System.Char + IL_0048: mul + IL_0049: add + IL_004a: stloc.s V_9 + IL_004c: ldloc.s V_9 + IL_004e: stloc.s V_10 + IL_0050: ldloc.s V_10 + IL_0052: ldobj [mscorlib]System.Char + IL_0057: newobj instance void class [mscorlib]System.Tuple`2::.ctor(!0, !1) - IL_004c: ret + IL_005c: ret } // end of method TestFunction24::pinString } // end of class TestFunction24 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction25.fs b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction25.fs new file mode 100644 index 00000000000..eb297d2f636 --- /dev/null +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction25.fs @@ -0,0 +1,32 @@ +open FSharp.NativeInterop +// Assume that the following class exists. + +type Point = { mutable x : int; mutable y : int } + +let pinObject() = + let point = { x = 1; y = 2 } + use p1 = fixed &point.x // note, fixed is a keyword and would be highlighted + NativePtr.get p1 0 + NativePtr.get p1 1 + +let pinRef() = + let point = ref 17 + use p1 = fixed &point.contents // note, fixed is a keyword and would be highlighted + NativePtr.read p1 + NativePtr.read p1 + +let pinArray1() = + let arr = [| 0.0; 1.5; 2.3; 3.4; 4.0; 5.9 |] + use p1 = fixed arr + NativePtr.get p1 0 + NativePtr.get p1 1 + +let pinArray2() = + let arr = [| 0.0; 1.5; 2.3; 3.4; 4.0; 5.9 |] + // You can initialize a pointer by using the address of a variable. + use p = fixed &arr.[0] + NativePtr.get p 0 + NativePtr.get p 1 + +let pinString() = + let str = "Hello World" + // The following assignment initializes p by using a string. + use pChar = fixed str + NativePtr.get pChar 0, NativePtr.get pChar 1 + diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction25.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction25.il.bsl new file mode 100644 index 00000000000..7463c4894bc --- /dev/null +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction25.il.bsl @@ -0,0 +1,849 @@ + +// Microsoft (R) .NET Framework IL Disassembler. Version 4.8.3928.0 +// Copyright (c) Microsoft Corporation. All rights reserved. + + + +// Metadata version: v4.0.30319 +.assembly extern mscorlib +{ + .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. + .ver 4:0:0:0 +} +.assembly extern FSharp.Core +{ + .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: + .ver 5:0:0:0 +} +.assembly TestFunction25 +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.FSharpInterfaceDataVersionAttribute::.ctor(int32, + int32, + int32) = ( 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 ) + + // --- The following custom attribute is added automatically, do not uncomment ------- + // .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 01 00 00 00 00 00 ) + + .hash algorithm 0x00008004 + .ver 0:0:0:0 +} +.mresource public FSharpSignatureData.TestFunction25 +{ + // Offset: 0x00000000 Length: 0x00000742 +} +.mresource public FSharpOptimizationData.TestFunction25 +{ + // Offset: 0x00000748 Length: 0x000003D2 +} +.module TestFunction25.exe +// MVID: {60D4E82F-A643-4662-A745-03832FE8D460} +.imagebase 0x00400000 +.file alignment 0x00000200 +.stackreserve 0x00100000 +.subsystem 0x0003 // WINDOWS_CUI +.corflags 0x00000001 // ILONLY +// Image base: 0x04E60000 + + +// =============== CLASS MEMBERS DECLARATION =================== + +.class public abstract auto ansi sealed TestFunction25 + extends [mscorlib]System.Object +{ + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) + .class auto ansi serializable sealed nested public Point + extends [mscorlib]System.Object + implements class [mscorlib]System.IEquatable`1, + [mscorlib]System.Collections.IStructuralEquatable, + class [mscorlib]System.IComparable`1, + [mscorlib]System.IComparable, + [mscorlib]System.Collections.IStructuralComparable + { + .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 02 00 00 00 00 00 ) + .field public int32 x@ + .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .field public int32 y@ + .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) + .method public hidebysig specialname + instance int32 get_x() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 TestFunction25/Point::x@ + IL_0006: ret + } // end of method Point::get_x + + .method public hidebysig specialname + instance int32 get_y() cil managed + { + // Code size 7 (0x7) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldfld int32 TestFunction25/Point::y@ + IL_0006: ret + } // end of method Point::get_y + + .method public hidebysig specialname + instance void set_x(int32 'value') cil managed + { + // Code size 8 (0x8) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: stfld int32 TestFunction25/Point::x@ + IL_0007: ret + } // end of method Point::set_x + + .method public hidebysig specialname + instance void set_y(int32 'value') cil managed + { + // Code size 8 (0x8) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: stfld int32 TestFunction25/Point::y@ + IL_0007: ret + } // end of method Point::set_y + + .method public specialname rtspecialname + instance void .ctor(int32 x, + int32 y) cil managed + { + // Code size 21 (0x15) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: call instance void [mscorlib]System.Object::.ctor() + IL_0006: ldarg.0 + IL_0007: ldarg.1 + IL_0008: stfld int32 TestFunction25/Point::x@ + IL_000d: ldarg.0 + IL_000e: ldarg.2 + IL_000f: stfld int32 TestFunction25/Point::y@ + IL_0014: ret + } // end of method Point::.ctor + + .method public strict virtual instance string + ToString() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 22 (0x16) + .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 TestFunction25/Point>::.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 + } // end of method Point::ToString + + .method public hidebysig virtual final + instance int32 CompareTo(class TestFunction25/Point obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 101 (0x65) + .maxstack 4 + .locals init ([0] int32 V_0, + [1] class [mscorlib]System.Collections.IComparer V_1, + [2] int32 V_2, + [3] int32 V_3) + .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' + .line 16707566,16707566 : 0,0 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\TestFunctions\\TestFunction25.fs' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_005b + + .line 16707566,16707566 : 0,0 '' + IL_0006: ldarg.1 + IL_0007: ldnull + IL_0008: cgt.un + IL_000a: brfalse.s IL_0059 + + .line 16707566,16707566 : 0,0 '' + IL_000c: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0011: stloc.1 + IL_0012: ldarg.0 + IL_0013: ldfld int32 TestFunction25/Point::x@ + IL_0018: stloc.2 + IL_0019: ldarg.1 + IL_001a: ldfld int32 TestFunction25/Point::x@ + IL_001f: stloc.3 + IL_0020: ldloc.2 + IL_0021: ldloc.3 + IL_0022: bge.s IL_0028 + + .line 16707566,16707566 : 0,0 '' + IL_0024: ldc.i4.m1 + .line 16707566,16707566 : 0,0 '' + IL_0025: nop + IL_0026: br.s IL_002d + + .line 16707566,16707566 : 0,0 '' + IL_0028: ldloc.2 + IL_0029: ldloc.3 + IL_002a: cgt + .line 16707566,16707566 : 0,0 '' + IL_002c: nop + .line 16707566,16707566 : 0,0 '' + IL_002d: stloc.0 + IL_002e: ldloc.0 + IL_002f: ldc.i4.0 + IL_0030: bge.s IL_0034 + + .line 16707566,16707566 : 0,0 '' + IL_0032: ldloc.0 + IL_0033: ret + + .line 16707566,16707566 : 0,0 '' + IL_0034: ldloc.0 + IL_0035: ldc.i4.0 + IL_0036: ble.s IL_003a + + .line 16707566,16707566 : 0,0 '' + IL_0038: ldloc.0 + IL_0039: ret + + .line 16707566,16707566 : 0,0 '' + IL_003a: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_003f: stloc.1 + IL_0040: ldarg.0 + IL_0041: ldfld int32 TestFunction25/Point::y@ + IL_0046: stloc.2 + IL_0047: ldarg.1 + IL_0048: ldfld int32 TestFunction25/Point::y@ + IL_004d: stloc.3 + IL_004e: ldloc.2 + IL_004f: ldloc.3 + IL_0050: bge.s IL_0054 + + .line 16707566,16707566 : 0,0 '' + IL_0052: ldc.i4.m1 + IL_0053: ret + + .line 16707566,16707566 : 0,0 '' + IL_0054: ldloc.2 + IL_0055: ldloc.3 + IL_0056: cgt + IL_0058: ret + + .line 16707566,16707566 : 0,0 '' + IL_0059: ldc.i4.1 + IL_005a: ret + + .line 16707566,16707566 : 0,0 '' + IL_005b: ldarg.1 + IL_005c: ldnull + IL_005d: cgt.un + IL_005f: brfalse.s IL_0063 + + .line 16707566,16707566 : 0,0 '' + IL_0061: ldc.i4.m1 + IL_0062: ret + + .line 16707566,16707566 : 0,0 '' + IL_0063: ldc.i4.0 + IL_0064: ret + } // end of method Point::CompareTo + + .method public hidebysig virtual final + instance int32 CompareTo(object obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 13 (0xd) + .maxstack 8 + .line 4,4 : 6,11 '' + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: unbox.any TestFunction25/Point + IL_0007: callvirt instance int32 TestFunction25/Point::CompareTo(class TestFunction25/Point) + IL_000c: ret + } // end of method Point::CompareTo + + .method public hidebysig virtual final + instance int32 CompareTo(object obj, + class [mscorlib]System.Collections.IComparer comp) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 106 (0x6a) + .maxstack 4 + .locals init ([0] class TestFunction25/Point V_0, + [1] int32 V_1, + [2] int32 V_2, + [3] int32 V_3) + .line 4,4 : 6,11 '' + IL_0000: ldarg.1 + IL_0001: unbox.any TestFunction25/Point + IL_0006: stloc.0 + IL_0007: ldarg.0 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_005b + + .line 16707566,16707566 : 0,0 '' + IL_000d: ldarg.1 + IL_000e: unbox.any TestFunction25/Point + IL_0013: ldnull + IL_0014: cgt.un + IL_0016: brfalse.s IL_0059 + + .line 16707566,16707566 : 0,0 '' + IL_0018: ldarg.0 + IL_0019: ldfld int32 TestFunction25/Point::x@ + IL_001e: stloc.2 + IL_001f: ldloc.0 + IL_0020: ldfld int32 TestFunction25/Point::x@ + IL_0025: stloc.3 + IL_0026: ldloc.2 + IL_0027: ldloc.3 + IL_0028: bge.s IL_002e + + .line 16707566,16707566 : 0,0 '' + IL_002a: ldc.i4.m1 + .line 16707566,16707566 : 0,0 '' + IL_002b: nop + IL_002c: br.s IL_0033 + + .line 16707566,16707566 : 0,0 '' + IL_002e: ldloc.2 + IL_002f: ldloc.3 + IL_0030: cgt + .line 16707566,16707566 : 0,0 '' + IL_0032: nop + .line 16707566,16707566 : 0,0 '' + IL_0033: stloc.1 + IL_0034: ldloc.1 + IL_0035: ldc.i4.0 + IL_0036: bge.s IL_003a + + .line 16707566,16707566 : 0,0 '' + IL_0038: ldloc.1 + IL_0039: ret + + .line 16707566,16707566 : 0,0 '' + IL_003a: ldloc.1 + IL_003b: ldc.i4.0 + IL_003c: ble.s IL_0040 + + .line 16707566,16707566 : 0,0 '' + IL_003e: ldloc.1 + IL_003f: ret + + .line 16707566,16707566 : 0,0 '' + IL_0040: ldarg.0 + IL_0041: ldfld int32 TestFunction25/Point::y@ + IL_0046: stloc.2 + IL_0047: ldloc.0 + IL_0048: ldfld int32 TestFunction25/Point::y@ + IL_004d: stloc.3 + IL_004e: ldloc.2 + IL_004f: ldloc.3 + IL_0050: bge.s IL_0054 + + .line 16707566,16707566 : 0,0 '' + IL_0052: ldc.i4.m1 + IL_0053: ret + + .line 16707566,16707566 : 0,0 '' + IL_0054: ldloc.2 + IL_0055: ldloc.3 + IL_0056: cgt + IL_0058: ret + + .line 16707566,16707566 : 0,0 '' + IL_0059: ldc.i4.1 + IL_005a: ret + + .line 16707566,16707566 : 0,0 '' + IL_005b: ldarg.1 + IL_005c: unbox.any TestFunction25/Point + IL_0061: ldnull + IL_0062: cgt.un + IL_0064: brfalse.s IL_0068 + + .line 16707566,16707566 : 0,0 '' + IL_0066: ldc.i4.m1 + IL_0067: ret + + .line 16707566,16707566 : 0,0 '' + IL_0068: ldc.i4.0 + IL_0069: ret + } // end of method Point::CompareTo + + .method public hidebysig virtual final + instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 54 (0x36) + .maxstack 7 + .locals init ([0] int32 V_0) + .line 16707566,16707566 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_0034 + + .line 16707566,16707566 : 0,0 '' + IL_0006: ldc.i4.0 + IL_0007: stloc.0 + IL_0008: ldc.i4 0x9e3779b9 + IL_000d: ldarg.0 + IL_000e: ldfld int32 TestFunction25/Point::y@ + IL_0013: ldloc.0 + IL_0014: ldc.i4.6 + IL_0015: shl + IL_0016: ldloc.0 + IL_0017: ldc.i4.2 + IL_0018: shr + IL_0019: add + IL_001a: add + IL_001b: add + IL_001c: stloc.0 + IL_001d: ldc.i4 0x9e3779b9 + IL_0022: ldarg.0 + IL_0023: ldfld int32 TestFunction25/Point::x@ + IL_0028: ldloc.0 + IL_0029: ldc.i4.6 + IL_002a: shl + IL_002b: ldloc.0 + IL_002c: ldc.i4.2 + IL_002d: shr + IL_002e: add + IL_002f: add + IL_0030: add + IL_0031: stloc.0 + IL_0032: ldloc.0 + IL_0033: ret + + .line 16707566,16707566 : 0,0 '' + IL_0034: ldc.i4.0 + IL_0035: ret + } // end of method Point::GetHashCode + + .method public hidebysig virtual final + instance int32 GetHashCode() cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 12 (0xc) + .maxstack 8 + .line 4,4 : 6,11 '' + IL_0000: ldarg.0 + IL_0001: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0006: callvirt instance int32 TestFunction25/Point::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) + IL_000b: ret + } // end of method Point::GetHashCode + + .method public hidebysig virtual final + instance bool Equals(object obj, + class [mscorlib]System.Collections.IEqualityComparer comp) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 57 (0x39) + .maxstack 4 + .locals init ([0] class TestFunction25/Point V_0) + .line 16707566,16707566 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_0031 + + .line 16707566,16707566 : 0,0 '' + IL_0006: ldarg.1 + IL_0007: isinst TestFunction25/Point + IL_000c: stloc.0 + IL_000d: ldloc.0 + IL_000e: brfalse.s IL_002f + + .line 16707566,16707566 : 0,0 '' + IL_0010: ldarg.0 + IL_0011: ldfld int32 TestFunction25/Point::x@ + IL_0016: ldloc.0 + IL_0017: ldfld int32 TestFunction25/Point::x@ + IL_001c: bne.un.s IL_002d + + .line 16707566,16707566 : 0,0 '' + IL_001e: ldarg.0 + IL_001f: ldfld int32 TestFunction25/Point::y@ + IL_0024: ldloc.0 + IL_0025: ldfld int32 TestFunction25/Point::y@ + IL_002a: ceq + IL_002c: ret + + .line 16707566,16707566 : 0,0 '' + IL_002d: ldc.i4.0 + IL_002e: ret + + .line 16707566,16707566 : 0,0 '' + IL_002f: ldc.i4.0 + IL_0030: ret + + .line 16707566,16707566 : 0,0 '' + IL_0031: ldarg.1 + IL_0032: ldnull + IL_0033: cgt.un + IL_0035: ldc.i4.0 + IL_0036: ceq + IL_0038: ret + } // end of method Point::Equals + + .method public hidebysig virtual final + instance bool Equals(class TestFunction25/Point obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 53 (0x35) + .maxstack 8 + .line 16707566,16707566 : 0,0 '' + IL_0000: ldarg.0 + IL_0001: ldnull + IL_0002: cgt.un + IL_0004: brfalse.s IL_002d + + .line 16707566,16707566 : 0,0 '' + IL_0006: ldarg.1 + IL_0007: ldnull + IL_0008: cgt.un + IL_000a: brfalse.s IL_002b + + .line 16707566,16707566 : 0,0 '' + IL_000c: ldarg.0 + IL_000d: ldfld int32 TestFunction25/Point::x@ + IL_0012: ldarg.1 + IL_0013: ldfld int32 TestFunction25/Point::x@ + IL_0018: bne.un.s IL_0029 + + .line 16707566,16707566 : 0,0 '' + IL_001a: ldarg.0 + IL_001b: ldfld int32 TestFunction25/Point::y@ + IL_0020: ldarg.1 + IL_0021: ldfld int32 TestFunction25/Point::y@ + IL_0026: ceq + IL_0028: ret + + .line 16707566,16707566 : 0,0 '' + IL_0029: ldc.i4.0 + IL_002a: ret + + .line 16707566,16707566 : 0,0 '' + IL_002b: ldc.i4.0 + IL_002c: ret + + .line 16707566,16707566 : 0,0 '' + IL_002d: ldarg.1 + IL_002e: ldnull + IL_002f: cgt.un + IL_0031: ldc.i4.0 + IL_0032: ceq + IL_0034: ret + } // end of method Point::Equals + + .method public hidebysig virtual final + instance bool Equals(object obj) cil managed + { + .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) + // Code size 20 (0x14) + .maxstack 4 + .locals init ([0] class TestFunction25/Point V_0) + .line 4,4 : 6,11 '' + IL_0000: ldarg.1 + IL_0001: isinst TestFunction25/Point + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: brfalse.s IL_0012 + + .line 16707566,16707566 : 0,0 '' + IL_000a: ldarg.0 + IL_000b: ldloc.0 + IL_000c: callvirt instance bool TestFunction25/Point::Equals(class TestFunction25/Point) + IL_0011: ret + + .line 16707566,16707566 : 0,0 '' + IL_0012: ldc.i4.0 + IL_0013: ret + } // end of method Point::Equals + + .property instance int32 x() + { + .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 ) + .set instance void TestFunction25/Point::set_x(int32) + .get instance int32 TestFunction25/Point::get_x() + } // end of property Point::x + .property instance int32 y() + { + .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 ) + .set instance void TestFunction25/Point::set_y(int32) + .get instance int32 TestFunction25/Point::get_y() + } // end of property Point::y + } // end of class Point + + .method public static int32 pinObject() cil managed + { + // Code size 52 (0x34) + .maxstack 6 + .locals init ([0] class TestFunction25/Point point, + [1] native int p1, + [2] int32& pinned V_2) + .line 7,7 : 5,33 '' + IL_0000: ldc.i4.1 + IL_0001: ldc.i4.2 + IL_0002: newobj instance void TestFunction25/Point::.ctor(int32, + int32) + IL_0007: stloc.0 + .line 8,8 : 5,28 '' + IL_0008: ldloc.0 + IL_0009: ldflda int32 TestFunction25/Point::x@ + IL_000e: stloc.2 + IL_000f: ldloc.2 + IL_0010: conv.i + IL_0011: stloc.1 + .line 9,9 : 5,44 '' + IL_0012: ldloc.1 + IL_0013: ldc.i4.0 + IL_0014: conv.i + IL_0015: sizeof [mscorlib]System.Int32 + IL_001b: mul + IL_001c: add + IL_001d: ldobj [mscorlib]System.Int32 + IL_0022: ldloc.1 + IL_0023: ldc.i4.1 + IL_0024: conv.i + IL_0025: sizeof [mscorlib]System.Int32 + IL_002b: mul + IL_002c: add + IL_002d: ldobj [mscorlib]System.Int32 + IL_0032: add + IL_0033: ret + } // end of method TestFunction25::pinObject + + .method public static int32 pinRef() cil managed + { + // Code size 32 (0x20) + .maxstack 4 + .locals init ([0] class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 point, + [1] native int p1, + [2] int32& pinned V_2) + .line 12,12 : 5,23 '' + IL_0000: ldc.i4.s 17 + IL_0002: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1::.ctor(!0) + IL_0007: stloc.0 + .line 13,13 : 5,35 '' + IL_0008: ldloc.0 + IL_0009: ldflda !0 class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1::contents@ + IL_000e: stloc.2 + IL_000f: ldloc.2 + IL_0010: conv.i + IL_0011: stloc.1 + .line 14,14 : 5,42 '' + IL_0012: ldloc.1 + IL_0013: ldobj [mscorlib]System.Int32 + IL_0018: ldloc.1 + IL_0019: ldobj [mscorlib]System.Int32 + IL_001e: add + IL_001f: ret + } // end of method TestFunction25::pinRef + + .method public static float64 pinArray1() cil managed + { + // Code size 170 (0xaa) + .maxstack 6 + .locals init ([0] float64[] arr, + [1] native int p1, + [2] float64& pinned V_2) + .line 17,17 : 5,49 '' + IL_0000: ldc.i4.6 + IL_0001: newarr [mscorlib]System.Double + IL_0006: dup + IL_0007: ldc.i4.0 + IL_0008: ldc.r8 0.0 + IL_0011: stelem [mscorlib]System.Double + IL_0016: dup + IL_0017: ldc.i4.1 + IL_0018: ldc.r8 1.5 + IL_0021: stelem [mscorlib]System.Double + IL_0026: dup + IL_0027: ldc.i4.2 + IL_0028: ldc.r8 2.2999999999999998 + IL_0031: stelem [mscorlib]System.Double + IL_0036: dup + IL_0037: ldc.i4.3 + IL_0038: ldc.r8 3.3999999999999999 + IL_0041: stelem [mscorlib]System.Double + IL_0046: dup + IL_0047: ldc.i4.4 + IL_0048: ldc.r8 4. + IL_0051: stelem [mscorlib]System.Double + IL_0056: dup + IL_0057: ldc.i4.5 + IL_0058: ldc.r8 5.9000000000000004 + IL_0061: stelem [mscorlib]System.Double + IL_0066: stloc.0 + .line 18,18 : 5,23 '' + IL_0067: ldloc.0 + IL_0068: brfalse.s IL_0084 + + .line 16707566,16707566 : 0,0 '' + IL_006a: ldloc.0 + IL_006b: call int32 [FSharp.Core]Microsoft.FSharp.Collections.ArrayModule::Length(!!0[]) + IL_0070: brfalse.s IL_007f + + .line 16707566,16707566 : 0,0 '' + IL_0072: ldloc.0 + IL_0073: ldc.i4.0 + IL_0074: ldelema [mscorlib]System.Double + IL_0079: stloc.2 + IL_007a: ldloc.2 + IL_007b: conv.i + .line 16707566,16707566 : 0,0 '' + IL_007c: nop + IL_007d: br.s IL_0087 + + .line 16707566,16707566 : 0,0 '' + IL_007f: ldc.i4.0 + IL_0080: conv.i + .line 16707566,16707566 : 0,0 '' + IL_0081: nop + IL_0082: br.s IL_0087 + + .line 16707566,16707566 : 0,0 '' + IL_0084: ldc.i4.0 + IL_0085: conv.i + .line 16707566,16707566 : 0,0 '' + IL_0086: nop + .line 16707566,16707566 : 0,0 '' + IL_0087: stloc.1 + .line 19,19 : 5,44 '' + IL_0088: ldloc.1 + IL_0089: ldc.i4.0 + IL_008a: conv.i + IL_008b: sizeof [mscorlib]System.Double + IL_0091: mul + IL_0092: add + IL_0093: ldobj [mscorlib]System.Double + IL_0098: ldloc.1 + IL_0099: ldc.i4.1 + IL_009a: conv.i + IL_009b: sizeof [mscorlib]System.Double + IL_00a1: mul + IL_00a2: add + IL_00a3: ldobj [mscorlib]System.Double + IL_00a8: add + IL_00a9: ret + } // end of method TestFunction25::pinArray1 + + .method public static float64 pinArray2() cil managed + { + // Code size 148 (0x94) + .maxstack 6 + .locals init ([0] float64[] arr, + [1] native int p, + [2] float64& pinned V_2) + .line 22,22 : 5,49 '' + IL_0000: ldc.i4.6 + IL_0001: newarr [mscorlib]System.Double + IL_0006: dup + IL_0007: ldc.i4.0 + IL_0008: ldc.r8 0.0 + IL_0011: stelem [mscorlib]System.Double + IL_0016: dup + IL_0017: ldc.i4.1 + IL_0018: ldc.r8 1.5 + IL_0021: stelem [mscorlib]System.Double + IL_0026: dup + IL_0027: ldc.i4.2 + IL_0028: ldc.r8 2.2999999999999998 + IL_0031: stelem [mscorlib]System.Double + IL_0036: dup + IL_0037: ldc.i4.3 + IL_0038: ldc.r8 3.3999999999999999 + IL_0041: stelem [mscorlib]System.Double + IL_0046: dup + IL_0047: ldc.i4.4 + IL_0048: ldc.r8 4. + IL_0051: stelem [mscorlib]System.Double + IL_0056: dup + IL_0057: ldc.i4.5 + IL_0058: ldc.r8 5.9000000000000004 + IL_0061: stelem [mscorlib]System.Double + IL_0066: stloc.0 + .line 24,24 : 5,27 '' + IL_0067: ldloc.0 + IL_0068: ldc.i4.0 + IL_0069: ldelema [mscorlib]System.Double + IL_006e: stloc.2 + IL_006f: ldloc.2 + IL_0070: conv.i + IL_0071: stloc.1 + .line 25,25 : 5,42 '' + IL_0072: ldloc.1 + IL_0073: ldc.i4.0 + IL_0074: conv.i + IL_0075: sizeof [mscorlib]System.Double + IL_007b: mul + IL_007c: add + IL_007d: ldobj [mscorlib]System.Double + IL_0082: ldloc.1 + IL_0083: ldc.i4.1 + IL_0084: conv.i + IL_0085: sizeof [mscorlib]System.Double + IL_008b: mul + IL_008c: add + IL_008d: ldobj [mscorlib]System.Double + IL_0092: add + IL_0093: ret + } // end of method TestFunction25::pinArray2 + + .method public static class [mscorlib]System.Tuple`2 + pinString() cil managed + { + // Code size 57 (0x39) + .maxstack 6 + .locals init ([0] native int pChar, + [1] string pinned V_1) + .line 30,30 : 5,26 '' + IL_0000: ldstr "Hello World" + IL_0005: stloc.1 + IL_0006: ldstr "Hello World" + IL_000b: conv.i + IL_000c: call int32 [mscorlib]System.Runtime.CompilerServices.RuntimeHelpers::get_OffsetToStringData() + IL_0011: add + IL_0012: stloc.0 + .line 31,31 : 5,50 '' + IL_0013: ldloc.0 + IL_0014: ldc.i4.0 + IL_0015: conv.i + IL_0016: sizeof [mscorlib]System.Char + IL_001c: mul + IL_001d: add + IL_001e: ldobj [mscorlib]System.Char + IL_0023: ldloc.0 + IL_0024: ldc.i4.1 + IL_0025: conv.i + IL_0026: sizeof [mscorlib]System.Char + IL_002c: mul + IL_002d: add + IL_002e: ldobj [mscorlib]System.Char + IL_0033: newobj instance void class [mscorlib]System.Tuple`2::.ctor(!0, + !1) + IL_0038: ret + } // end of method TestFunction25::pinString + +} // end of class TestFunction25 + +.class private abstract auto ansi sealed ''.$TestFunction25 + extends [mscorlib]System.Object +{ + .method public static void main@() cil managed + { + .entrypoint + // Code size 1 (0x1) + .maxstack 8 + IL_0000: ret + } // end of method $TestFunction25::main@ + +} // end of class ''.$TestFunction25 + + +// ============================================================= + +// *********** DISASSEMBLY COMPLETE *********************** diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/env.lst b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/env.lst index 6278df20bb0..e70c0627d87 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/env.lst +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/env.lst @@ -44,3 +44,4 @@ SOURCE=Testfunction22h.fs SCFLAGS="-g --test:EmitFeeFeeAs100001 --optimize-" COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd TestFunction22h.exe" # TestFunction22h.fs - SOURCE=TestFunction24.fs SCFLAGS="-g --optimize-" PEVER=/Exp_Fail COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd TestFunction24.exe" # TestFunction24.fs - + SOURCE=TestFunction25.fs SCFLAGS="-g --optimize+" PEVER=/Exp_Fail COMPILE_ONLY=1 POSTCMD="..\\CompareIL.cmd TestFunction25.exe" # TestFunction25.fs -