Skip to content

Instantly share code, notes, and snippets.

@fpawel
Created May 24, 2017 10:59
Show Gist options
  • Save fpawel/1ac019d24cdc268c371247fa562be16e to your computer and use it in GitHub Desktop.
Save fpawel/1ac019d24cdc268c371247fa562be16e to your computer and use it in GitHub Desktop.
// Program
public static void f3(Program.Type3 _arg1)
{
if (_arg1 is Program.Type3.Type3Case2)
{
Program.Type3.Type3Case2 type3Case = (Program.Type3.Type3Case2)_arg1;
return;
}
if (!(_arg1 is Program.Type3.Type3Case3))
{
Program.Type3.Type3Case1 type3Case2 = (Program.Type3.Type3Case1)_arg1;
return;
}
Program.Type3.Type3Case3 type3Case3 = (Program.Type3.Type3Case3)_arg1;
}
// Program
public static void f4(Program.Type4 _arg1)
{
switch (_arg1.Tag)
{
case 0:
{
IL_1D:
Program.Type4.Type4Case1 type4Case = (Program.Type4.Type4Case1)_arg1;
return;
}
case 1:
{
Program.Type4.Type4Case2 type4Case2 = (Program.Type4.Type4Case2)_arg1;
return;
}
case 2:
{
Program.Type4.Type4Case3 type4Case3 = (Program.Type4.Type4Case3)_arg1;
return;
}
case 3:
{
Program.Type4.Type4Case4 type4Case4 = (Program.Type4.Type4Case4)_arg1;
return;
}
}
goto IL_1D;
}
// Learn more about F# at http://fsharp.org
// See the 'F# Tutorial' project for more help.
type Type2 =
| Type2Case1 of int
| Type2Case2 of int
let f2 = function
| Type2Case1 _ -> ()
| Type2Case2 _ -> ()
type Type3 =
| Type3Case1 of int
| Type3Case2 of int
| Type3Case3 of int
let f3 = function
| Type3Case1 _ -> ()
| Type3Case2 _ -> ()
| Type3Case3 _ -> ()
type Type4 =
| Type4Case1 of int
| Type4Case2 of int
| Type4Case3 of int
| Type4Case4 of int
let f4 = function
| Type4Case1 _ -> ()
| Type4Case2 _ -> ()
| Type4Case3 _ -> ()
| Type4Case4 _ -> ()
type Type5 =
| Type5Case1 of int
| Type5Case2 of int
| Type5Case3 of int
| Type5Case4 of int
| Type5Case5 of int
let f5 = function
| Type5Case1 _ -> ()
| Type5Case2 _ -> ()
| Type5Case3 _ -> ()
| Type5Case4 _ -> ()
| Type5Case5 _ -> ()
[<EntryPoint>]
let main argv =
f2 <| Type2Case2 0
f3 <| Type3Case2 0
f4 <| Type4Case2 0
f5 <| Type5Case2 0
0 // return an integer exit code
using Microsoft.FSharp.Core;
using System;
using System.Collections;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
[CompilationMapping(SourceConstructFlags.Module)]
public static class Program
{
[CompilationMapping(SourceConstructFlags.SumType), DebuggerDisplay("{__DebugDisplay(),nq}")]
[Serializable]
[StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)]
public abstract class Type2 : IEquatable<Program.Type2>, IStructuralEquatable, IComparable<Program.Type2>, IComparable, IStructuralComparable
{
public static class Tags
{
public const int Type2Case1 = 0;
public const int Type2Case2 = 1;
}
[DebuggerDisplay("{__DebugDisplay(),nq}"), DebuggerTypeProxy(typeof(Program.Type2.Type2Case1@DebugTypeProxy))]
[Serializable]
public class Type2Case1 : Program.Type2
{
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal readonly int item;
[CompilationMapping(SourceConstructFlags.Field, 0, 0), DebuggerNonUserCode, CompilerGenerated]
public int Item
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this.item;
}
}
[DebuggerNonUserCode, CompilerGenerated]
internal Type2Case1(int item)
{
this.item = item;
}
}
[DebuggerDisplay("{__DebugDisplay(),nq}"), DebuggerTypeProxy(typeof(Program.Type2.Type2Case2@DebugTypeProxy))]
[Serializable]
public class Type2Case2 : Program.Type2
{
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal readonly int item;
[CompilationMapping(SourceConstructFlags.Field, 1, 0), DebuggerNonUserCode, CompilerGenerated]
public int Item
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this.item;
}
}
[DebuggerNonUserCode, CompilerGenerated]
internal Type2Case2(int item)
{
this.item = item;
}
}
internal class Type2Case1@DebugTypeProxy
{
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal Program.Type2.Type2Case1 _obj;
[CompilationMapping(SourceConstructFlags.Field, 0, 0), DebuggerNonUserCode, CompilerGenerated]
public int Item
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this._obj.item;
}
}
[DebuggerNonUserCode, CompilerGenerated]
public Type2Case1@DebugTypeProxy(Program.Type2.Type2Case1 obj)
{
this._obj = obj;
}
}
internal class Type2Case2@DebugTypeProxy
{
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal Program.Type2.Type2Case2 _obj;
[CompilationMapping(SourceConstructFlags.Field, 1, 0), DebuggerNonUserCode, CompilerGenerated]
public int Item
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this._obj.item;
}
}
[DebuggerNonUserCode, CompilerGenerated]
public Type2Case2@DebugTypeProxy(Program.Type2.Type2Case2 obj)
{
this._obj = obj;
}
}
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
public int Tag
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return (!(this is Program.Type2.Type2Case2)) ? 0 : 1;
}
}
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
public bool IsType2Case1
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this is Program.Type2.Type2Case1;
}
}
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
public bool IsType2Case2
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this is Program.Type2.Type2Case2;
}
}
[DebuggerNonUserCode, CompilerGenerated]
internal Type2()
{
}
[CompilationMapping(SourceConstructFlags.UnionCase, 0)]
public static Program.Type2 NewType2Case1(int item)
{
return new Program.Type2.Type2Case1(item);
}
[CompilationMapping(SourceConstructFlags.UnionCase, 1)]
public static Program.Type2 NewType2Case2(int item)
{
return new Program.Type2.Type2Case2(item);
}
[DebuggerNonUserCode, CompilerGenerated]
internal object __DebugDisplay()
{
return ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<Program.Type2, string>>(new PrintfFormat<FSharpFunc<Program.Type2, string>, Unit, string, string, string>("%+0.8A")).Invoke(this);
}
[CompilerGenerated]
public override string ToString()
{
return ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<Program.Type2, string>>(new PrintfFormat<FSharpFunc<Program.Type2, string>, Unit, string, string, Program.Type2>("%+A")).Invoke(this);
}
[CompilerGenerated]
public sealed override int CompareTo(Program.Type2 obj)
{
if (this != null)
{
if (obj == null)
{
return 1;
}
int num = (!(this is Program.Type2.Type2Case2)) ? 0 : 1;
int num2 = (!(obj is Program.Type2.Type2Case2)) ? 0 : 1;
if (num != num2)
{
return num - num2;
}
if (this is Program.Type2.Type2Case1)
{
Program.Type2.Type2Case1 type2Case = (Program.Type2.Type2Case1)this;
Program.Type2.Type2Case1 type2Case2 = (Program.Type2.Type2Case1)obj;
IComparer genericComparer = LanguagePrimitives.GenericComparer;
int item = type2Case.item;
int item2 = type2Case2.item;
if (item < item2)
{
return -1;
}
return (item > item2) ? 1 : 0;
}
else
{
Program.Type2.Type2Case2 type2Case3 = (Program.Type2.Type2Case2)this;
Program.Type2.Type2Case2 type2Case4 = (Program.Type2.Type2Case2)obj;
IComparer genericComparer2 = LanguagePrimitives.GenericComparer;
int item3 = type2Case3.item;
int item4 = type2Case4.item;
if (item3 < item4)
{
return -1;
}
return (item3 > item4) ? 1 : 0;
}
}
else
{
if (obj != null)
{
return -1;
}
return 0;
}
}
[CompilerGenerated]
public sealed override int CompareTo(object obj)
{
return this.CompareTo((Program.Type2)obj);
}
[CompilerGenerated]
public sealed override int CompareTo(object obj, IComparer comp)
{
Program.Type2 type = (Program.Type2)obj;
if (this != null)
{
if ((Program.Type2)obj == null)
{
return 1;
}
int num = (!(this is Program.Type2.Type2Case2)) ? 0 : 1;
Program.Type2 type2 = type;
int num2 = (!(type2 is Program.Type2.Type2Case2)) ? 0 : 1;
if (num != num2)
{
return num - num2;
}
if (this is Program.Type2.Type2Case1)
{
Program.Type2.Type2Case1 type2Case = (Program.Type2.Type2Case1)this;
Program.Type2.Type2Case1 type2Case2 = (Program.Type2.Type2Case1)type;
int item = type2Case.item;
int item2 = type2Case2.item;
if (item < item2)
{
return -1;
}
return (item > item2) ? 1 : 0;
}
else
{
Program.Type2.Type2Case2 type2Case3 = (Program.Type2.Type2Case2)this;
Program.Type2.Type2Case2 type2Case4 = (Program.Type2.Type2Case2)type;
int item3 = type2Case3.item;
int item4 = type2Case4.item;
if (item3 < item4)
{
return -1;
}
return (item3 > item4) ? 1 : 0;
}
}
else
{
if ((Program.Type2)obj != null)
{
return -1;
}
return 0;
}
}
[CompilerGenerated]
public sealed override int GetHashCode(IEqualityComparer comp)
{
if (this == null)
{
return 0;
}
int num;
if (this is Program.Type2.Type2Case1)
{
Program.Type2.Type2Case1 type2Case = (Program.Type2.Type2Case1)this;
num = 0;
return -1640531527 + (type2Case.item + ((num << 6) + (num >> 2)));
}
Program.Type2.Type2Case2 type2Case2 = (Program.Type2.Type2Case2)this;
num = 1;
return -1640531527 + (type2Case2.item + ((num << 6) + (num >> 2)));
}
[CompilerGenerated]
public sealed override int GetHashCode()
{
return this.GetHashCode(LanguagePrimitives.GenericEqualityComparer);
}
[CompilerGenerated]
public sealed override bool Equals(object obj, IEqualityComparer comp)
{
if (this == null)
{
return obj == null;
}
Program.Type2 type = obj as Program.Type2;
if (type == null)
{
return false;
}
Program.Type2 type2 = type;
int num = (!(this is Program.Type2.Type2Case2)) ? 0 : 1;
Program.Type2 type3 = type2;
int num2 = (!(type3 is Program.Type2.Type2Case2)) ? 0 : 1;
if (num != num2)
{
return false;
}
if (this is Program.Type2.Type2Case1)
{
Program.Type2.Type2Case1 type2Case = (Program.Type2.Type2Case1)this;
Program.Type2.Type2Case1 type2Case2 = (Program.Type2.Type2Case1)type2;
return type2Case.item == type2Case2.item;
}
Program.Type2.Type2Case2 type2Case3 = (Program.Type2.Type2Case2)this;
Program.Type2.Type2Case2 type2Case4 = (Program.Type2.Type2Case2)type2;
return type2Case3.item == type2Case4.item;
}
[CompilerGenerated]
public sealed override bool Equals(Program.Type2 obj)
{
if (this == null)
{
return obj == null;
}
if (obj == null)
{
return false;
}
int num = (!(this is Program.Type2.Type2Case2)) ? 0 : 1;
int num2 = (!(obj is Program.Type2.Type2Case2)) ? 0 : 1;
if (num != num2)
{
return false;
}
if (this is Program.Type2.Type2Case1)
{
Program.Type2.Type2Case1 type2Case = (Program.Type2.Type2Case1)this;
Program.Type2.Type2Case1 type2Case2 = (Program.Type2.Type2Case1)obj;
return type2Case.item == type2Case2.item;
}
Program.Type2.Type2Case2 type2Case3 = (Program.Type2.Type2Case2)this;
Program.Type2.Type2Case2 type2Case4 = (Program.Type2.Type2Case2)obj;
return type2Case3.item == type2Case4.item;
}
[CompilerGenerated]
public sealed override bool Equals(object obj)
{
Program.Type2 type = obj as Program.Type2;
return type != null && this.Equals(type);
}
}
[CompilationMapping(SourceConstructFlags.SumType), DebuggerDisplay("{__DebugDisplay(),nq}")]
[Serializable]
[StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)]
public abstract class Type3 : IEquatable<Program.Type3>, IStructuralEquatable, IComparable<Program.Type3>, IComparable, IStructuralComparable
{
public static class Tags
{
public const int Type3Case1 = 0;
public const int Type3Case2 = 1;
public const int Type3Case3 = 2;
}
[DebuggerDisplay("{__DebugDisplay(),nq}"), DebuggerTypeProxy(typeof(Program.Type3.Type3Case1@DebugTypeProxy))]
[Serializable]
public class Type3Case1 : Program.Type3
{
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal readonly int item;
[CompilationMapping(SourceConstructFlags.Field, 0, 0), DebuggerNonUserCode, CompilerGenerated]
public int Item
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this.item;
}
}
[DebuggerNonUserCode, CompilerGenerated]
internal Type3Case1(int item)
{
this.item = item;
}
}
[DebuggerDisplay("{__DebugDisplay(),nq}"), DebuggerTypeProxy(typeof(Program.Type3.Type3Case2@DebugTypeProxy))]
[Serializable]
public class Type3Case2 : Program.Type3
{
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal readonly int item;
[CompilationMapping(SourceConstructFlags.Field, 1, 0), DebuggerNonUserCode, CompilerGenerated]
public int Item
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this.item;
}
}
[DebuggerNonUserCode, CompilerGenerated]
internal Type3Case2(int item)
{
this.item = item;
}
}
[DebuggerDisplay("{__DebugDisplay(),nq}"), DebuggerTypeProxy(typeof(Program.Type3.Type3Case3@DebugTypeProxy))]
[Serializable]
public class Type3Case3 : Program.Type3
{
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal readonly int item;
[CompilationMapping(SourceConstructFlags.Field, 2, 0), DebuggerNonUserCode, CompilerGenerated]
public int Item
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this.item;
}
}
[DebuggerNonUserCode, CompilerGenerated]
internal Type3Case3(int item)
{
this.item = item;
}
}
internal class Type3Case1@DebugTypeProxy
{
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal Program.Type3.Type3Case1 _obj;
[CompilationMapping(SourceConstructFlags.Field, 0, 0), DebuggerNonUserCode, CompilerGenerated]
public int Item
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this._obj.item;
}
}
[DebuggerNonUserCode, CompilerGenerated]
public Type3Case1@DebugTypeProxy(Program.Type3.Type3Case1 obj)
{
this._obj = obj;
}
}
internal class Type3Case2@DebugTypeProxy
{
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal Program.Type3.Type3Case2 _obj;
[CompilationMapping(SourceConstructFlags.Field, 1, 0), DebuggerNonUserCode, CompilerGenerated]
public int Item
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this._obj.item;
}
}
[DebuggerNonUserCode, CompilerGenerated]
public Type3Case2@DebugTypeProxy(Program.Type3.Type3Case2 obj)
{
this._obj = obj;
}
}
internal class Type3Case3@DebugTypeProxy
{
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal Program.Type3.Type3Case3 _obj;
[CompilationMapping(SourceConstructFlags.Field, 2, 0), DebuggerNonUserCode, CompilerGenerated]
public int Item
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this._obj.item;
}
}
[DebuggerNonUserCode, CompilerGenerated]
public Type3Case3@DebugTypeProxy(Program.Type3.Type3Case3 obj)
{
this._obj = obj;
}
}
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
public int Tag
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return (!(this is Program.Type3.Type3Case3)) ? ((!(this is Program.Type3.Type3Case2)) ? 0 : 1) : 2;
}
}
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
public bool IsType3Case1
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this is Program.Type3.Type3Case1;
}
}
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
public bool IsType3Case2
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this is Program.Type3.Type3Case2;
}
}
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
public bool IsType3Case3
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this is Program.Type3.Type3Case3;
}
}
[DebuggerNonUserCode, CompilerGenerated]
internal Type3()
{
}
[CompilationMapping(SourceConstructFlags.UnionCase, 0)]
public static Program.Type3 NewType3Case1(int item)
{
return new Program.Type3.Type3Case1(item);
}
[CompilationMapping(SourceConstructFlags.UnionCase, 1)]
public static Program.Type3 NewType3Case2(int item)
{
return new Program.Type3.Type3Case2(item);
}
[CompilationMapping(SourceConstructFlags.UnionCase, 2)]
public static Program.Type3 NewType3Case3(int item)
{
return new Program.Type3.Type3Case3(item);
}
[DebuggerNonUserCode, CompilerGenerated]
internal object __DebugDisplay()
{
return ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<Program.Type3, string>>(new PrintfFormat<FSharpFunc<Program.Type3, string>, Unit, string, string, string>("%+0.8A")).Invoke(this);
}
[CompilerGenerated]
public override string ToString()
{
return ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<Program.Type3, string>>(new PrintfFormat<FSharpFunc<Program.Type3, string>, Unit, string, string, Program.Type3>("%+A")).Invoke(this);
}
[CompilerGenerated]
public sealed override int CompareTo(Program.Type3 obj)
{
if (this != null)
{
if (obj == null)
{
return 1;
}
int num = (!(this is Program.Type3.Type3Case3)) ? ((!(this is Program.Type3.Type3Case2)) ? 0 : 1) : 2;
int num2 = (!(obj is Program.Type3.Type3Case3)) ? ((!(obj is Program.Type3.Type3Case2)) ? 0 : 1) : 2;
if (num != num2)
{
return num - num2;
}
if (!(this is Program.Type3.Type3Case1))
{
if (!(this is Program.Type3.Type3Case2))
{
if (this is Program.Type3.Type3Case3)
{
Program.Type3.Type3Case3 type3Case = (Program.Type3.Type3Case3)this;
Program.Type3.Type3Case3 type3Case2 = (Program.Type3.Type3Case3)obj;
IComparer genericComparer = LanguagePrimitives.GenericComparer;
int item = type3Case.item;
int item2 = type3Case2.item;
if (item < item2)
{
return -1;
}
return (item > item2) ? 1 : 0;
}
}
else
{
Program.Type3.Type3Case2 type3Case3 = (Program.Type3.Type3Case2)this;
Program.Type3.Type3Case2 type3Case4 = (Program.Type3.Type3Case2)obj;
IComparer genericComparer2 = LanguagePrimitives.GenericComparer;
int item3 = type3Case3.item;
int item4 = type3Case4.item;
if (item3 < item4)
{
return -1;
}
return (item3 > item4) ? 1 : 0;
}
}
Program.Type3.Type3Case1 type3Case5 = (Program.Type3.Type3Case1)this;
Program.Type3.Type3Case1 type3Case6 = (Program.Type3.Type3Case1)obj;
IComparer genericComparer3 = LanguagePrimitives.GenericComparer;
int item5 = type3Case5.item;
int item6 = type3Case6.item;
if (item5 < item6)
{
return -1;
}
return (item5 > item6) ? 1 : 0;
}
else
{
if (obj != null)
{
return -1;
}
return 0;
}
}
[CompilerGenerated]
public sealed override int CompareTo(object obj)
{
return this.CompareTo((Program.Type3)obj);
}
[CompilerGenerated]
public sealed override int CompareTo(object obj, IComparer comp)
{
Program.Type3 type = (Program.Type3)obj;
if (this != null)
{
if ((Program.Type3)obj == null)
{
return 1;
}
int num = (!(this is Program.Type3.Type3Case3)) ? ((!(this is Program.Type3.Type3Case2)) ? 0 : 1) : 2;
Program.Type3 type2 = type;
int num2 = (!(type2 is Program.Type3.Type3Case3)) ? ((!(type2 is Program.Type3.Type3Case2)) ? 0 : 1) : 2;
if (num != num2)
{
return num - num2;
}
if (!(this is Program.Type3.Type3Case1))
{
if (!(this is Program.Type3.Type3Case2))
{
if (this is Program.Type3.Type3Case3)
{
Program.Type3.Type3Case3 type3Case = (Program.Type3.Type3Case3)this;
Program.Type3.Type3Case3 type3Case2 = (Program.Type3.Type3Case3)type;
int item = type3Case.item;
int item2 = type3Case2.item;
if (item < item2)
{
return -1;
}
return (item > item2) ? 1 : 0;
}
}
else
{
Program.Type3.Type3Case2 type3Case3 = (Program.Type3.Type3Case2)this;
Program.Type3.Type3Case2 type3Case4 = (Program.Type3.Type3Case2)type;
int item3 = type3Case3.item;
int item4 = type3Case4.item;
if (item3 < item4)
{
return -1;
}
return (item3 > item4) ? 1 : 0;
}
}
Program.Type3.Type3Case1 type3Case5 = (Program.Type3.Type3Case1)this;
Program.Type3.Type3Case1 type3Case6 = (Program.Type3.Type3Case1)type;
int item5 = type3Case5.item;
int item6 = type3Case6.item;
if (item5 < item6)
{
return -1;
}
return (item5 > item6) ? 1 : 0;
}
else
{
if ((Program.Type3)obj != null)
{
return -1;
}
return 0;
}
}
[CompilerGenerated]
public sealed override int GetHashCode(IEqualityComparer comp)
{
if (this != null)
{
int num;
if (!(this is Program.Type3.Type3Case1))
{
if (this is Program.Type3.Type3Case2)
{
Program.Type3.Type3Case2 type3Case = (Program.Type3.Type3Case2)this;
num = 1;
return -1640531527 + (type3Case.item + ((num << 6) + (num >> 2)));
}
if (this is Program.Type3.Type3Case3)
{
Program.Type3.Type3Case3 type3Case2 = (Program.Type3.Type3Case3)this;
num = 2;
return -1640531527 + (type3Case2.item + ((num << 6) + (num >> 2)));
}
}
Program.Type3.Type3Case1 type3Case3 = (Program.Type3.Type3Case1)this;
num = 0;
return -1640531527 + (type3Case3.item + ((num << 6) + (num >> 2)));
}
return 0;
}
[CompilerGenerated]
public sealed override int GetHashCode()
{
return this.GetHashCode(LanguagePrimitives.GenericEqualityComparer);
}
[CompilerGenerated]
public sealed override bool Equals(object obj, IEqualityComparer comp)
{
if (this == null)
{
return obj == null;
}
Program.Type3 type = obj as Program.Type3;
if (type == null)
{
return false;
}
Program.Type3 type2 = type;
int num = (!(this is Program.Type3.Type3Case3)) ? ((!(this is Program.Type3.Type3Case2)) ? 0 : 1) : 2;
Program.Type3 type3 = type2;
int num2 = (!(type3 is Program.Type3.Type3Case3)) ? ((!(type3 is Program.Type3.Type3Case2)) ? 0 : 1) : 2;
if (num == num2)
{
if (!(this is Program.Type3.Type3Case1))
{
if (this is Program.Type3.Type3Case2)
{
Program.Type3.Type3Case2 type3Case = (Program.Type3.Type3Case2)this;
Program.Type3.Type3Case2 type3Case2 = (Program.Type3.Type3Case2)type2;
return type3Case.item == type3Case2.item;
}
if (this is Program.Type3.Type3Case3)
{
Program.Type3.Type3Case3 type3Case3 = (Program.Type3.Type3Case3)this;
Program.Type3.Type3Case3 type3Case4 = (Program.Type3.Type3Case3)type2;
return type3Case3.item == type3Case4.item;
}
}
Program.Type3.Type3Case1 type3Case5 = (Program.Type3.Type3Case1)this;
Program.Type3.Type3Case1 type3Case6 = (Program.Type3.Type3Case1)type2;
return type3Case5.item == type3Case6.item;
}
return false;
}
[CompilerGenerated]
public sealed override bool Equals(Program.Type3 obj)
{
if (this == null)
{
return obj == null;
}
if (obj == null)
{
return false;
}
int num = (!(this is Program.Type3.Type3Case3)) ? ((!(this is Program.Type3.Type3Case2)) ? 0 : 1) : 2;
int num2 = (!(obj is Program.Type3.Type3Case3)) ? ((!(obj is Program.Type3.Type3Case2)) ? 0 : 1) : 2;
if (num == num2)
{
if (!(this is Program.Type3.Type3Case1))
{
if (this is Program.Type3.Type3Case2)
{
Program.Type3.Type3Case2 type3Case = (Program.Type3.Type3Case2)this;
Program.Type3.Type3Case2 type3Case2 = (Program.Type3.Type3Case2)obj;
return type3Case.item == type3Case2.item;
}
if (this is Program.Type3.Type3Case3)
{
Program.Type3.Type3Case3 type3Case3 = (Program.Type3.Type3Case3)this;
Program.Type3.Type3Case3 type3Case4 = (Program.Type3.Type3Case3)obj;
return type3Case3.item == type3Case4.item;
}
}
Program.Type3.Type3Case1 type3Case5 = (Program.Type3.Type3Case1)this;
Program.Type3.Type3Case1 type3Case6 = (Program.Type3.Type3Case1)obj;
return type3Case5.item == type3Case6.item;
}
return false;
}
[CompilerGenerated]
public sealed override bool Equals(object obj)
{
Program.Type3 type = obj as Program.Type3;
return type != null && this.Equals(type);
}
}
[CompilationMapping(SourceConstructFlags.SumType), DebuggerDisplay("{__DebugDisplay(),nq}")]
[Serializable]
[StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)]
public abstract class Type4 : IEquatable<Program.Type4>, IStructuralEquatable, IComparable<Program.Type4>, IComparable, IStructuralComparable
{
public static class Tags
{
public const int Type4Case1 = 0;
public const int Type4Case2 = 1;
public const int Type4Case3 = 2;
public const int Type4Case4 = 3;
}
[DebuggerDisplay("{__DebugDisplay(),nq}"), DebuggerTypeProxy(typeof(Program.Type4.Type4Case1@DebugTypeProxy))]
[Serializable]
public class Type4Case1 : Program.Type4
{
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal readonly int item;
[CompilationMapping(SourceConstructFlags.Field, 0, 0), DebuggerNonUserCode, CompilerGenerated]
public int Item
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this.item;
}
}
[DebuggerNonUserCode, CompilerGenerated]
internal Type4Case1(int item) : base(0)
{
this.item = item;
}
}
[DebuggerDisplay("{__DebugDisplay(),nq}"), DebuggerTypeProxy(typeof(Program.Type4.Type4Case2@DebugTypeProxy))]
[Serializable]
public class Type4Case2 : Program.Type4
{
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal readonly int item;
[CompilationMapping(SourceConstructFlags.Field, 1, 0), DebuggerNonUserCode, CompilerGenerated]
public int Item
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this.item;
}
}
[DebuggerNonUserCode, CompilerGenerated]
internal Type4Case2(int item) : base(1)
{
this.item = item;
}
}
[DebuggerDisplay("{__DebugDisplay(),nq}"), DebuggerTypeProxy(typeof(Program.Type4.Type4Case3@DebugTypeProxy))]
[Serializable]
public class Type4Case3 : Program.Type4
{
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal readonly int item;
[CompilationMapping(SourceConstructFlags.Field, 2, 0), DebuggerNonUserCode, CompilerGenerated]
public int Item
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this.item;
}
}
[DebuggerNonUserCode, CompilerGenerated]
internal Type4Case3(int item) : base(2)
{
this.item = item;
}
}
[DebuggerDisplay("{__DebugDisplay(),nq}"), DebuggerTypeProxy(typeof(Program.Type4.Type4Case4@DebugTypeProxy))]
[Serializable]
public class Type4Case4 : Program.Type4
{
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal readonly int item;
[CompilationMapping(SourceConstructFlags.Field, 3, 0), DebuggerNonUserCode, CompilerGenerated]
public int Item
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this.item;
}
}
[DebuggerNonUserCode, CompilerGenerated]
internal Type4Case4(int item) : base(3)
{
this.item = item;
}
}
internal class Type4Case1@DebugTypeProxy
{
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal Program.Type4.Type4Case1 _obj;
[CompilationMapping(SourceConstructFlags.Field, 0, 0), DebuggerNonUserCode, CompilerGenerated]
public int Item
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this._obj.item;
}
}
[DebuggerNonUserCode, CompilerGenerated]
public Type4Case1@DebugTypeProxy(Program.Type4.Type4Case1 obj)
{
this._obj = obj;
}
}
internal class Type4Case2@DebugTypeProxy
{
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal Program.Type4.Type4Case2 _obj;
[CompilationMapping(SourceConstructFlags.Field, 1, 0), DebuggerNonUserCode, CompilerGenerated]
public int Item
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this._obj.item;
}
}
[DebuggerNonUserCode, CompilerGenerated]
public Type4Case2@DebugTypeProxy(Program.Type4.Type4Case2 obj)
{
this._obj = obj;
}
}
internal class Type4Case3@DebugTypeProxy
{
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal Program.Type4.Type4Case3 _obj;
[CompilationMapping(SourceConstructFlags.Field, 2, 0), DebuggerNonUserCode, CompilerGenerated]
public int Item
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this._obj.item;
}
}
[DebuggerNonUserCode, CompilerGenerated]
public Type4Case3@DebugTypeProxy(Program.Type4.Type4Case3 obj)
{
this._obj = obj;
}
}
internal class Type4Case4@DebugTypeProxy
{
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal Program.Type4.Type4Case4 _obj;
[CompilationMapping(SourceConstructFlags.Field, 3, 0), DebuggerNonUserCode, CompilerGenerated]
public int Item
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this._obj.item;
}
}
[DebuggerNonUserCode, CompilerGenerated]
public Type4Case4@DebugTypeProxy(Program.Type4.Type4Case4 obj)
{
this._obj = obj;
}
}
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal readonly int _tag;
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
public int Tag
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this._tag;
}
}
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
public bool IsType4Case1
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this.Tag == 0;
}
}
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
public bool IsType4Case2
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this.Tag == 1;
}
}
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
public bool IsType4Case3
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this.Tag == 2;
}
}
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
public bool IsType4Case4
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this.Tag == 3;
}
}
[DebuggerNonUserCode, CompilerGenerated]
internal Type4(int _tag)
{
this._tag = _tag;
}
[CompilationMapping(SourceConstructFlags.UnionCase, 0)]
public static Program.Type4 NewType4Case1(int item)
{
return new Program.Type4.Type4Case1(item);
}
[CompilationMapping(SourceConstructFlags.UnionCase, 1)]
public static Program.Type4 NewType4Case2(int item)
{
return new Program.Type4.Type4Case2(item);
}
[CompilationMapping(SourceConstructFlags.UnionCase, 2)]
public static Program.Type4 NewType4Case3(int item)
{
return new Program.Type4.Type4Case3(item);
}
[CompilationMapping(SourceConstructFlags.UnionCase, 3)]
public static Program.Type4 NewType4Case4(int item)
{
return new Program.Type4.Type4Case4(item);
}
[DebuggerNonUserCode, CompilerGenerated]
internal object __DebugDisplay()
{
return ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<Program.Type4, string>>(new PrintfFormat<FSharpFunc<Program.Type4, string>, Unit, string, string, string>("%+0.8A")).Invoke(this);
}
[CompilerGenerated]
public override string ToString()
{
return ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<Program.Type4, string>>(new PrintfFormat<FSharpFunc<Program.Type4, string>, Unit, string, string, Program.Type4>("%+A")).Invoke(this);
}
[CompilerGenerated]
public sealed override int CompareTo(Program.Type4 obj)
{
if (this != null)
{
if (obj == null)
{
return 1;
}
int tag = this._tag;
int tag2 = obj._tag;
if (tag == tag2)
{
switch (this.Tag)
{
case 0:
{
IL_4F:
Program.Type4.Type4Case1 type4Case = (Program.Type4.Type4Case1)this;
Program.Type4.Type4Case1 type4Case2 = (Program.Type4.Type4Case1)obj;
IComparer genericComparer = LanguagePrimitives.GenericComparer;
int item = type4Case.item;
int item2 = type4Case2.item;
if (item < item2)
{
return -1;
}
return (item > item2) ? 1 : 0;
}
case 1:
{
Program.Type4.Type4Case2 type4Case3 = (Program.Type4.Type4Case2)this;
Program.Type4.Type4Case2 type4Case4 = (Program.Type4.Type4Case2)obj;
IComparer genericComparer2 = LanguagePrimitives.GenericComparer;
int item3 = type4Case3.item;
int item4 = type4Case4.item;
if (item3 < item4)
{
return -1;
}
return (item3 > item4) ? 1 : 0;
}
case 2:
{
Program.Type4.Type4Case3 type4Case5 = (Program.Type4.Type4Case3)this;
Program.Type4.Type4Case3 type4Case6 = (Program.Type4.Type4Case3)obj;
IComparer genericComparer3 = LanguagePrimitives.GenericComparer;
int item5 = type4Case5.item;
int item6 = type4Case6.item;
if (item5 < item6)
{
return -1;
}
return (item5 > item6) ? 1 : 0;
}
case 3:
{
Program.Type4.Type4Case4 type4Case7 = (Program.Type4.Type4Case4)this;
Program.Type4.Type4Case4 type4Case8 = (Program.Type4.Type4Case4)obj;
IComparer genericComparer4 = LanguagePrimitives.GenericComparer;
int item7 = type4Case7.item;
int item8 = type4Case8.item;
if (item7 < item8)
{
return -1;
}
return (item7 > item8) ? 1 : 0;
}
}
goto IL_4F;
}
return tag - tag2;
}
else
{
if (obj != null)
{
return -1;
}
return 0;
}
}
[CompilerGenerated]
public sealed override int CompareTo(object obj)
{
return this.CompareTo((Program.Type4)obj);
}
[CompilerGenerated]
public sealed override int CompareTo(object obj, IComparer comp)
{
Program.Type4 type = (Program.Type4)obj;
if (this != null)
{
if ((Program.Type4)obj == null)
{
return 1;
}
int tag = this._tag;
int tag2 = type._tag;
if (tag == tag2)
{
switch (this.Tag)
{
case 0:
{
IL_5B:
Program.Type4.Type4Case1 type4Case = (Program.Type4.Type4Case1)this;
Program.Type4.Type4Case1 type4Case2 = (Program.Type4.Type4Case1)type;
int item = type4Case.item;
int item2 = type4Case2.item;
if (item < item2)
{
return -1;
}
return (item > item2) ? 1 : 0;
}
case 1:
{
Program.Type4.Type4Case2 type4Case3 = (Program.Type4.Type4Case2)this;
Program.Type4.Type4Case2 type4Case4 = (Program.Type4.Type4Case2)type;
int item3 = type4Case3.item;
int item4 = type4Case4.item;
if (item3 < item4)
{
return -1;
}
return (item3 > item4) ? 1 : 0;
}
case 2:
{
Program.Type4.Type4Case3 type4Case5 = (Program.Type4.Type4Case3)this;
Program.Type4.Type4Case3 type4Case6 = (Program.Type4.Type4Case3)type;
int item5 = type4Case5.item;
int item6 = type4Case6.item;
if (item5 < item6)
{
return -1;
}
return (item5 > item6) ? 1 : 0;
}
case 3:
{
Program.Type4.Type4Case4 type4Case7 = (Program.Type4.Type4Case4)this;
Program.Type4.Type4Case4 type4Case8 = (Program.Type4.Type4Case4)type;
int item7 = type4Case7.item;
int item8 = type4Case8.item;
if (item7 < item8)
{
return -1;
}
return (item7 > item8) ? 1 : 0;
}
}
goto IL_5B;
}
return tag - tag2;
}
else
{
if ((Program.Type4)obj != null)
{
return -1;
}
return 0;
}
}
[CompilerGenerated]
public sealed override int GetHashCode(IEqualityComparer comp)
{
if (this != null)
{
switch (this.Tag)
{
case 0:
{
IL_2B:
Program.Type4.Type4Case1 type4Case = (Program.Type4.Type4Case1)this;
int num = 0;
return -1640531527 + (type4Case.item + ((num << 6) + (num >> 2)));
}
case 1:
{
Program.Type4.Type4Case2 type4Case2 = (Program.Type4.Type4Case2)this;
int num = 1;
return -1640531527 + (type4Case2.item + ((num << 6) + (num >> 2)));
}
case 2:
{
Program.Type4.Type4Case3 type4Case3 = (Program.Type4.Type4Case3)this;
int num = 2;
return -1640531527 + (type4Case3.item + ((num << 6) + (num >> 2)));
}
case 3:
{
Program.Type4.Type4Case4 type4Case4 = (Program.Type4.Type4Case4)this;
int num = 3;
return -1640531527 + (type4Case4.item + ((num << 6) + (num >> 2)));
}
}
goto IL_2B;
}
return 0;
}
[CompilerGenerated]
public sealed override int GetHashCode()
{
return this.GetHashCode(LanguagePrimitives.GenericEqualityComparer);
}
[CompilerGenerated]
public sealed override bool Equals(object obj, IEqualityComparer comp)
{
if (this == null)
{
return obj == null;
}
Program.Type4 type = obj as Program.Type4;
if (type == null)
{
return false;
}
Program.Type4 type2 = type;
int tag = this._tag;
int tag2 = type2._tag;
if (tag == tag2)
{
switch (this.Tag)
{
case 0:
{
IL_55:
Program.Type4.Type4Case1 type4Case = (Program.Type4.Type4Case1)this;
Program.Type4.Type4Case1 type4Case2 = (Program.Type4.Type4Case1)type2;
return type4Case.item == type4Case2.item;
}
case 1:
{
Program.Type4.Type4Case2 type4Case3 = (Program.Type4.Type4Case2)this;
Program.Type4.Type4Case2 type4Case4 = (Program.Type4.Type4Case2)type2;
return type4Case3.item == type4Case4.item;
}
case 2:
{
Program.Type4.Type4Case3 type4Case5 = (Program.Type4.Type4Case3)this;
Program.Type4.Type4Case3 type4Case6 = (Program.Type4.Type4Case3)type2;
return type4Case5.item == type4Case6.item;
}
case 3:
{
Program.Type4.Type4Case4 type4Case7 = (Program.Type4.Type4Case4)this;
Program.Type4.Type4Case4 type4Case8 = (Program.Type4.Type4Case4)type2;
return type4Case7.item == type4Case8.item;
}
}
goto IL_55;
}
return false;
}
[CompilerGenerated]
public sealed override bool Equals(Program.Type4 obj)
{
if (this == null)
{
return obj == null;
}
if (obj == null)
{
return false;
}
int tag = this._tag;
int tag2 = obj._tag;
if (tag == tag2)
{
switch (this.Tag)
{
case 0:
{
IL_4F:
Program.Type4.Type4Case1 type4Case = (Program.Type4.Type4Case1)this;
Program.Type4.Type4Case1 type4Case2 = (Program.Type4.Type4Case1)obj;
return type4Case.item == type4Case2.item;
}
case 1:
{
Program.Type4.Type4Case2 type4Case3 = (Program.Type4.Type4Case2)this;
Program.Type4.Type4Case2 type4Case4 = (Program.Type4.Type4Case2)obj;
return type4Case3.item == type4Case4.item;
}
case 2:
{
Program.Type4.Type4Case3 type4Case5 = (Program.Type4.Type4Case3)this;
Program.Type4.Type4Case3 type4Case6 = (Program.Type4.Type4Case3)obj;
return type4Case5.item == type4Case6.item;
}
case 3:
{
Program.Type4.Type4Case4 type4Case7 = (Program.Type4.Type4Case4)this;
Program.Type4.Type4Case4 type4Case8 = (Program.Type4.Type4Case4)obj;
return type4Case7.item == type4Case8.item;
}
}
goto IL_4F;
}
return false;
}
[CompilerGenerated]
public sealed override bool Equals(object obj)
{
Program.Type4 type = obj as Program.Type4;
return type != null && this.Equals(type);
}
}
[CompilationMapping(SourceConstructFlags.SumType), DebuggerDisplay("{__DebugDisplay(),nq}")]
[Serializable]
[StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)]
public abstract class Type5 : IEquatable<Program.Type5>, IStructuralEquatable, IComparable<Program.Type5>, IComparable, IStructuralComparable
{
public static class Tags
{
public const int Type5Case1 = 0;
public const int Type5Case2 = 1;
public const int Type5Case3 = 2;
public const int Type5Case4 = 3;
public const int Type5Case5 = 4;
}
[DebuggerDisplay("{__DebugDisplay(),nq}"), DebuggerTypeProxy(typeof(Program.Type5.Type5Case1@DebugTypeProxy))]
[Serializable]
public class Type5Case1 : Program.Type5
{
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal readonly int item;
[CompilationMapping(SourceConstructFlags.Field, 0, 0), DebuggerNonUserCode, CompilerGenerated]
public int Item
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this.item;
}
}
[DebuggerNonUserCode, CompilerGenerated]
internal Type5Case1(int item) : base(0)
{
this.item = item;
}
}
[DebuggerDisplay("{__DebugDisplay(),nq}"), DebuggerTypeProxy(typeof(Program.Type5.Type5Case2@DebugTypeProxy))]
[Serializable]
public class Type5Case2 : Program.Type5
{
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal readonly int item;
[CompilationMapping(SourceConstructFlags.Field, 1, 0), DebuggerNonUserCode, CompilerGenerated]
public int Item
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this.item;
}
}
[DebuggerNonUserCode, CompilerGenerated]
internal Type5Case2(int item) : base(1)
{
this.item = item;
}
}
[DebuggerDisplay("{__DebugDisplay(),nq}"), DebuggerTypeProxy(typeof(Program.Type5.Type5Case3@DebugTypeProxy))]
[Serializable]
public class Type5Case3 : Program.Type5
{
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal readonly int item;
[CompilationMapping(SourceConstructFlags.Field, 2, 0), DebuggerNonUserCode, CompilerGenerated]
public int Item
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this.item;
}
}
[DebuggerNonUserCode, CompilerGenerated]
internal Type5Case3(int item) : base(2)
{
this.item = item;
}
}
[DebuggerDisplay("{__DebugDisplay(),nq}"), DebuggerTypeProxy(typeof(Program.Type5.Type5Case4@DebugTypeProxy))]
[Serializable]
public class Type5Case4 : Program.Type5
{
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal readonly int item;
[CompilationMapping(SourceConstructFlags.Field, 3, 0), DebuggerNonUserCode, CompilerGenerated]
public int Item
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this.item;
}
}
[DebuggerNonUserCode, CompilerGenerated]
internal Type5Case4(int item) : base(3)
{
this.item = item;
}
}
[DebuggerDisplay("{__DebugDisplay(),nq}"), DebuggerTypeProxy(typeof(Program.Type5.Type5Case5@DebugTypeProxy))]
[Serializable]
public class Type5Case5 : Program.Type5
{
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal readonly int item;
[CompilationMapping(SourceConstructFlags.Field, 4, 0), DebuggerNonUserCode, CompilerGenerated]
public int Item
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this.item;
}
}
[DebuggerNonUserCode, CompilerGenerated]
internal Type5Case5(int item) : base(4)
{
this.item = item;
}
}
internal class Type5Case1@DebugTypeProxy
{
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal Program.Type5.Type5Case1 _obj;
[CompilationMapping(SourceConstructFlags.Field, 0, 0), DebuggerNonUserCode, CompilerGenerated]
public int Item
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this._obj.item;
}
}
[DebuggerNonUserCode, CompilerGenerated]
public Type5Case1@DebugTypeProxy(Program.Type5.Type5Case1 obj)
{
this._obj = obj;
}
}
internal class Type5Case2@DebugTypeProxy
{
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal Program.Type5.Type5Case2 _obj;
[CompilationMapping(SourceConstructFlags.Field, 1, 0), DebuggerNonUserCode, CompilerGenerated]
public int Item
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this._obj.item;
}
}
[DebuggerNonUserCode, CompilerGenerated]
public Type5Case2@DebugTypeProxy(Program.Type5.Type5Case2 obj)
{
this._obj = obj;
}
}
internal class Type5Case3@DebugTypeProxy
{
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal Program.Type5.Type5Case3 _obj;
[CompilationMapping(SourceConstructFlags.Field, 2, 0), DebuggerNonUserCode, CompilerGenerated]
public int Item
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this._obj.item;
}
}
[DebuggerNonUserCode, CompilerGenerated]
public Type5Case3@DebugTypeProxy(Program.Type5.Type5Case3 obj)
{
this._obj = obj;
}
}
internal class Type5Case4@DebugTypeProxy
{
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal Program.Type5.Type5Case4 _obj;
[CompilationMapping(SourceConstructFlags.Field, 3, 0), DebuggerNonUserCode, CompilerGenerated]
public int Item
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this._obj.item;
}
}
[DebuggerNonUserCode, CompilerGenerated]
public Type5Case4@DebugTypeProxy(Program.Type5.Type5Case4 obj)
{
this._obj = obj;
}
}
internal class Type5Case5@DebugTypeProxy
{
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal Program.Type5.Type5Case5 _obj;
[CompilationMapping(SourceConstructFlags.Field, 4, 0), DebuggerNonUserCode, CompilerGenerated]
public int Item
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this._obj.item;
}
}
[DebuggerNonUserCode, CompilerGenerated]
public Type5Case5@DebugTypeProxy(Program.Type5.Type5Case5 obj)
{
this._obj = obj;
}
}
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal readonly int _tag;
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
public int Tag
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this._tag;
}
}
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
public bool IsType5Case1
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this.Tag == 0;
}
}
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
public bool IsType5Case2
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this.Tag == 1;
}
}
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
public bool IsType5Case3
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this.Tag == 2;
}
}
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
public bool IsType5Case4
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this.Tag == 3;
}
}
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
public bool IsType5Case5
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this.Tag == 4;
}
}
[DebuggerNonUserCode, CompilerGenerated]
internal Type5(int _tag)
{
this._tag = _tag;
}
[CompilationMapping(SourceConstructFlags.UnionCase, 0)]
public static Program.Type5 NewType5Case1(int item)
{
return new Program.Type5.Type5Case1(item);
}
[CompilationMapping(SourceConstructFlags.UnionCase, 1)]
public static Program.Type5 NewType5Case2(int item)
{
return new Program.Type5.Type5Case2(item);
}
[CompilationMapping(SourceConstructFlags.UnionCase, 2)]
public static Program.Type5 NewType5Case3(int item)
{
return new Program.Type5.Type5Case3(item);
}
[CompilationMapping(SourceConstructFlags.UnionCase, 3)]
public static Program.Type5 NewType5Case4(int item)
{
return new Program.Type5.Type5Case4(item);
}
[CompilationMapping(SourceConstructFlags.UnionCase, 4)]
public static Program.Type5 NewType5Case5(int item)
{
return new Program.Type5.Type5Case5(item);
}
[DebuggerNonUserCode, CompilerGenerated]
internal object __DebugDisplay()
{
return ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<Program.Type5, string>>(new PrintfFormat<FSharpFunc<Program.Type5, string>, Unit, string, string, string>("%+0.8A")).Invoke(this);
}
[CompilerGenerated]
public override string ToString()
{
return ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<Program.Type5, string>>(new PrintfFormat<FSharpFunc<Program.Type5, string>, Unit, string, string, Program.Type5>("%+A")).Invoke(this);
}
[CompilerGenerated]
public sealed override int CompareTo(Program.Type5 obj)
{
if (this != null)
{
if (obj == null)
{
return 1;
}
int tag = this._tag;
int tag2 = obj._tag;
if (tag == tag2)
{
switch (this.Tag)
{
case 0:
{
IL_53:
Program.Type5.Type5Case1 type5Case = (Program.Type5.Type5Case1)this;
Program.Type5.Type5Case1 type5Case2 = (Program.Type5.Type5Case1)obj;
IComparer genericComparer = LanguagePrimitives.GenericComparer;
int item = type5Case.item;
int item2 = type5Case2.item;
if (item < item2)
{
return -1;
}
return (item > item2) ? 1 : 0;
}
case 1:
{
Program.Type5.Type5Case2 type5Case3 = (Program.Type5.Type5Case2)this;
Program.Type5.Type5Case2 type5Case4 = (Program.Type5.Type5Case2)obj;
IComparer genericComparer2 = LanguagePrimitives.GenericComparer;
int item3 = type5Case3.item;
int item4 = type5Case4.item;
if (item3 < item4)
{
return -1;
}
return (item3 > item4) ? 1 : 0;
}
case 2:
{
Program.Type5.Type5Case3 type5Case5 = (Program.Type5.Type5Case3)this;
Program.Type5.Type5Case3 type5Case6 = (Program.Type5.Type5Case3)obj;
IComparer genericComparer3 = LanguagePrimitives.GenericComparer;
int item5 = type5Case5.item;
int item6 = type5Case6.item;
if (item5 < item6)
{
return -1;
}
return (item5 > item6) ? 1 : 0;
}
case 3:
{
Program.Type5.Type5Case4 type5Case7 = (Program.Type5.Type5Case4)this;
Program.Type5.Type5Case4 type5Case8 = (Program.Type5.Type5Case4)obj;
IComparer genericComparer4 = LanguagePrimitives.GenericComparer;
int item7 = type5Case7.item;
int item8 = type5Case8.item;
if (item7 < item8)
{
return -1;
}
return (item7 > item8) ? 1 : 0;
}
case 4:
{
Program.Type5.Type5Case5 type5Case9 = (Program.Type5.Type5Case5)this;
Program.Type5.Type5Case5 type5Case10 = (Program.Type5.Type5Case5)obj;
IComparer genericComparer5 = LanguagePrimitives.GenericComparer;
int item9 = type5Case9.item;
int item10 = type5Case10.item;
if (item9 < item10)
{
return -1;
}
return (item9 > item10) ? 1 : 0;
}
}
goto IL_53;
}
return tag - tag2;
}
else
{
if (obj != null)
{
return -1;
}
return 0;
}
}
[CompilerGenerated]
public sealed override int CompareTo(object obj)
{
return this.CompareTo((Program.Type5)obj);
}
[CompilerGenerated]
public sealed override int CompareTo(object obj, IComparer comp)
{
Program.Type5 type = (Program.Type5)obj;
if (this != null)
{
if ((Program.Type5)obj == null)
{
return 1;
}
int tag = this._tag;
int tag2 = type._tag;
if (tag == tag2)
{
switch (this.Tag)
{
case 0:
{
IL_5F:
Program.Type5.Type5Case1 type5Case = (Program.Type5.Type5Case1)this;
Program.Type5.Type5Case1 type5Case2 = (Program.Type5.Type5Case1)type;
int item = type5Case.item;
int item2 = type5Case2.item;
if (item < item2)
{
return -1;
}
return (item > item2) ? 1 : 0;
}
case 1:
{
Program.Type5.Type5Case2 type5Case3 = (Program.Type5.Type5Case2)this;
Program.Type5.Type5Case2 type5Case4 = (Program.Type5.Type5Case2)type;
int item3 = type5Case3.item;
int item4 = type5Case4.item;
if (item3 < item4)
{
return -1;
}
return (item3 > item4) ? 1 : 0;
}
case 2:
{
Program.Type5.Type5Case3 type5Case5 = (Program.Type5.Type5Case3)this;
Program.Type5.Type5Case3 type5Case6 = (Program.Type5.Type5Case3)type;
int item5 = type5Case5.item;
int item6 = type5Case6.item;
if (item5 < item6)
{
return -1;
}
return (item5 > item6) ? 1 : 0;
}
case 3:
{
Program.Type5.Type5Case4 type5Case7 = (Program.Type5.Type5Case4)this;
Program.Type5.Type5Case4 type5Case8 = (Program.Type5.Type5Case4)type;
int item7 = type5Case7.item;
int item8 = type5Case8.item;
if (item7 < item8)
{
return -1;
}
return (item7 > item8) ? 1 : 0;
}
case 4:
{
Program.Type5.Type5Case5 type5Case9 = (Program.Type5.Type5Case5)this;
Program.Type5.Type5Case5 type5Case10 = (Program.Type5.Type5Case5)type;
int item9 = type5Case9.item;
int item10 = type5Case10.item;
if (item9 < item10)
{
return -1;
}
return (item9 > item10) ? 1 : 0;
}
}
goto IL_5F;
}
return tag - tag2;
}
else
{
if ((Program.Type5)obj != null)
{
return -1;
}
return 0;
}
}
[CompilerGenerated]
public sealed override int GetHashCode(IEqualityComparer comp)
{
if (this != null)
{
switch (this.Tag)
{
case 0:
{
IL_2F:
Program.Type5.Type5Case1 type5Case = (Program.Type5.Type5Case1)this;
int num = 0;
return -1640531527 + (type5Case.item + ((num << 6) + (num >> 2)));
}
case 1:
{
Program.Type5.Type5Case2 type5Case2 = (Program.Type5.Type5Case2)this;
int num = 1;
return -1640531527 + (type5Case2.item + ((num << 6) + (num >> 2)));
}
case 2:
{
Program.Type5.Type5Case3 type5Case3 = (Program.Type5.Type5Case3)this;
int num = 2;
return -1640531527 + (type5Case3.item + ((num << 6) + (num >> 2)));
}
case 3:
{
Program.Type5.Type5Case4 type5Case4 = (Program.Type5.Type5Case4)this;
int num = 3;
return -1640531527 + (type5Case4.item + ((num << 6) + (num >> 2)));
}
case 4:
{
Program.Type5.Type5Case5 type5Case5 = (Program.Type5.Type5Case5)this;
int num = 4;
return -1640531527 + (type5Case5.item + ((num << 6) + (num >> 2)));
}
}
goto IL_2F;
}
return 0;
}
[CompilerGenerated]
public sealed override int GetHashCode()
{
return this.GetHashCode(LanguagePrimitives.GenericEqualityComparer);
}
[CompilerGenerated]
public sealed override bool Equals(object obj, IEqualityComparer comp)
{
if (this == null)
{
return obj == null;
}
Program.Type5 type = obj as Program.Type5;
if (type == null)
{
return false;
}
Program.Type5 type2 = type;
int tag = this._tag;
int tag2 = type2._tag;
if (tag == tag2)
{
switch (this.Tag)
{
case 0:
{
IL_59:
Program.Type5.Type5Case1 type5Case = (Program.Type5.Type5Case1)this;
Program.Type5.Type5Case1 type5Case2 = (Program.Type5.Type5Case1)type2;
return type5Case.item == type5Case2.item;
}
case 1:
{
Program.Type5.Type5Case2 type5Case3 = (Program.Type5.Type5Case2)this;
Program.Type5.Type5Case2 type5Case4 = (Program.Type5.Type5Case2)type2;
return type5Case3.item == type5Case4.item;
}
case 2:
{
Program.Type5.Type5Case3 type5Case5 = (Program.Type5.Type5Case3)this;
Program.Type5.Type5Case3 type5Case6 = (Program.Type5.Type5Case3)type2;
return type5Case5.item == type5Case6.item;
}
case 3:
{
Program.Type5.Type5Case4 type5Case7 = (Program.Type5.Type5Case4)this;
Program.Type5.Type5Case4 type5Case8 = (Program.Type5.Type5Case4)type2;
return type5Case7.item == type5Case8.item;
}
case 4:
{
Program.Type5.Type5Case5 type5Case9 = (Program.Type5.Type5Case5)this;
Program.Type5.Type5Case5 type5Case10 = (Program.Type5.Type5Case5)type2;
return type5Case9.item == type5Case10.item;
}
}
goto IL_59;
}
return false;
}
[CompilerGenerated]
public sealed override bool Equals(Program.Type5 obj)
{
if (this == null)
{
return obj == null;
}
if (obj == null)
{
return false;
}
int tag = this._tag;
int tag2 = obj._tag;
if (tag == tag2)
{
switch (this.Tag)
{
case 0:
{
IL_53:
Program.Type5.Type5Case1 type5Case = (Program.Type5.Type5Case1)this;
Program.Type5.Type5Case1 type5Case2 = (Program.Type5.Type5Case1)obj;
return type5Case.item == type5Case2.item;
}
case 1:
{
Program.Type5.Type5Case2 type5Case3 = (Program.Type5.Type5Case2)this;
Program.Type5.Type5Case2 type5Case4 = (Program.Type5.Type5Case2)obj;
return type5Case3.item == type5Case4.item;
}
case 2:
{
Program.Type5.Type5Case3 type5Case5 = (Program.Type5.Type5Case3)this;
Program.Type5.Type5Case3 type5Case6 = (Program.Type5.Type5Case3)obj;
return type5Case5.item == type5Case6.item;
}
case 3:
{
Program.Type5.Type5Case4 type5Case7 = (Program.Type5.Type5Case4)this;
Program.Type5.Type5Case4 type5Case8 = (Program.Type5.Type5Case4)obj;
return type5Case7.item == type5Case8.item;
}
case 4:
{
Program.Type5.Type5Case5 type5Case9 = (Program.Type5.Type5Case5)this;
Program.Type5.Type5Case5 type5Case10 = (Program.Type5.Type5Case5)obj;
return type5Case9.item == type5Case10.item;
}
}
goto IL_53;
}
return false;
}
[CompilerGenerated]
public sealed override bool Equals(object obj)
{
Program.Type5 type = obj as Program.Type5;
return type != null && this.Equals(type);
}
}
public static void f2(Program.Type2 _arg1)
{
if (_arg1 is Program.Type2.Type2Case2)
{
Program.Type2.Type2Case2 type2Case = (Program.Type2.Type2Case2)_arg1;
return;
}
Program.Type2.Type2Case1 type2Case2 = (Program.Type2.Type2Case1)_arg1;
}
public static void f3(Program.Type3 _arg1)
{
if (_arg1 is Program.Type3.Type3Case2)
{
Program.Type3.Type3Case2 type3Case = (Program.Type3.Type3Case2)_arg1;
return;
}
if (!(_arg1 is Program.Type3.Type3Case3))
{
Program.Type3.Type3Case1 type3Case2 = (Program.Type3.Type3Case1)_arg1;
return;
}
Program.Type3.Type3Case3 type3Case3 = (Program.Type3.Type3Case3)_arg1;
}
public static void f4(Program.Type4 _arg1)
{
switch (_arg1.Tag)
{
case 0:
{
IL_1D:
Program.Type4.Type4Case1 type4Case = (Program.Type4.Type4Case1)_arg1;
return;
}
case 1:
{
Program.Type4.Type4Case2 type4Case2 = (Program.Type4.Type4Case2)_arg1;
return;
}
case 2:
{
Program.Type4.Type4Case3 type4Case3 = (Program.Type4.Type4Case3)_arg1;
return;
}
case 3:
{
Program.Type4.Type4Case4 type4Case4 = (Program.Type4.Type4Case4)_arg1;
return;
}
}
goto IL_1D;
}
public static void f5(Program.Type5 _arg1)
{
switch (_arg1.Tag)
{
case 0:
{
IL_21:
Program.Type5.Type5Case1 type5Case = (Program.Type5.Type5Case1)_arg1;
return;
}
case 1:
{
Program.Type5.Type5Case2 type5Case2 = (Program.Type5.Type5Case2)_arg1;
return;
}
case 2:
{
Program.Type5.Type5Case3 type5Case3 = (Program.Type5.Type5Case3)_arg1;
return;
}
case 3:
{
Program.Type5.Type5Case4 type5Case4 = (Program.Type5.Type5Case4)_arg1;
return;
}
case 4:
{
Program.Type5.Type5Case5 type5Case5 = (Program.Type5.Type5Case5)_arg1;
return;
}
}
goto IL_21;
}
[EntryPoint]
public static int main(string[] argv)
{
Program.f2(Program.Type2.NewType2Case2(0));
Program.f3(Program.Type3.NewType3Case2(0));
Program.f4(Program.Type4.NewType4Case2(0));
Program.f5(Program.Type5.NewType5Case2(0));
return 0;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment