diff options
author | Jason Smith <jason.smith@xamarin.com> | 2016-03-22 13:02:25 -0700 |
---|---|---|
committer | Jason Smith <jason.smith@xamarin.com> | 2016-03-22 16:13:41 -0700 |
commit | 17fdde66d94155fc62a034fa6658995bef6fd6e5 (patch) | |
tree | b5e5073a2a7b15cdbe826faa5c763e270a505729 /ICSharpCode.Decompiler/Tests/IncrementDecrement.cs | |
download | xamarin-forms-17fdde66d94155fc62a034fa6658995bef6fd6e5.tar.gz xamarin-forms-17fdde66d94155fc62a034fa6658995bef6fd6e5.tar.bz2 xamarin-forms-17fdde66d94155fc62a034fa6658995bef6fd6e5.zip |
Initial import
Diffstat (limited to 'ICSharpCode.Decompiler/Tests/IncrementDecrement.cs')
-rw-r--r-- | ICSharpCode.Decompiler/Tests/IncrementDecrement.cs | 254 |
1 files changed, 254 insertions, 0 deletions
diff --git a/ICSharpCode.Decompiler/Tests/IncrementDecrement.cs b/ICSharpCode.Decompiler/Tests/IncrementDecrement.cs new file mode 100644 index 00000000..e06b680d --- /dev/null +++ b/ICSharpCode.Decompiler/Tests/IncrementDecrement.cs @@ -0,0 +1,254 @@ +// Copyright (c) AlphaSierraPapa for the SharpDevelop Team +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this +// software and associated documentation files (the "Software"), to deal in the Software +// without restriction, including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all copies or +// substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. + +using System; + +public class IncrementDecrement +{ + [Flags] + private enum MyEnum + { + None = 0, + One = 1, + Two = 2, + Four = 4 + } + + public class MutableClass + { + public int Field; + + public int Property + { + get; + set; + } + + public uint this[string name] + { + get + { + return 0u; + } + set + { + } + } + } + + private IncrementDecrement.MyEnum enumField; + public static int StaticField; + + public static int StaticProperty + { + get; + set; + } + + private IncrementDecrement.MutableClass M() + { + return new IncrementDecrement.MutableClass(); + } + + private int[,] Array() + { + return null; + } + + private unsafe int* GetPointer() + { + return null; + } + + public int PreIncrementInAddition(int i, int j) + { + return i + ++j; + } + + public int PreIncrementArrayElement(int[] array, int pos) + { + return --array[pos]; + } + + public int PreIncrementInstanceField() + { + return ++this.M().Field; + } + + public int PreIncrementInstanceField2(IncrementDecrement.MutableClass m) + { + return ++m.Field; + } + + public int PreIncrementInstanceProperty() + { + return ++this.M().Property; + } + + public int PreIncrementStaticField() + { + return ++IncrementDecrement.StaticField; + } + + public int PreIncrementStaticProperty() + { + return ++IncrementDecrement.StaticProperty; + } + +// public uint PreIncrementIndexer(string name) +// { +// return ++this.M()[name]; +// } + + public int PreIncrementByRef(ref int i) + { + return ++i; + } + + public unsafe int PreIncrementByPointer() + { + return ++(*this.GetPointer()); + } + + public int PreIncrement2DArray() + { + return ++this.Array()[1, 2]; + } + + public int CompoundAssignInstanceField() + { + return this.M().Field *= 10; + } + + public int CompoundAssignInstanceProperty() + { + return this.M().Property *= 10; + } + + public int CompoundAssignStaticField() + { + return IncrementDecrement.StaticField ^= 100; + } + + public int CompoundAssignStaticProperty() + { + return IncrementDecrement.StaticProperty &= 10; + } + + public int CompoundAssignArrayElement1(int[] array, int pos) + { + return array[pos] *= 10; + } + + public int CompoundAssignArrayElement2(int[] array) + { + return array[Environment.TickCount] *= 10; + } + +// public uint CompoundAssignIndexer(string name) +// { +// return this.M()[name] -= 2; +// } + + public int CompoundAssignIncrement2DArray() + { + return this.Array()[1, 2] %= 10; + } + + public int CompoundAssignByRef(ref int i) + { + return i <<= 2; + } + + public unsafe double CompoundAssignByPointer(double* ptr) + { + return *ptr /= 1.5; + } + + public void CompoundAssignEnum() + { + this.enumField |= IncrementDecrement.MyEnum.Two; + this.enumField &= ~IncrementDecrement.MyEnum.Four; + } + + public int PostIncrementInAddition(int i, int j) + { + return i++ + j; + } + + public void PostIncrementInlineLocalVariable(Func<int, int> f) + { + int num = 0; + f(num++); + } + + public int PostIncrementArrayElement(int[] array, int pos) + { + return array[pos]--; + } + + public int PostIncrementStaticField() + { + return IncrementDecrement.StaticField++; + } + + public int PostIncrementStaticProperty() + { + return IncrementDecrement.StaticProperty++; + } + + public int PostIncrementInstanceField(IncrementDecrement.MutableClass m) + { + return m.Field++; + } + +// public uint PostIncrementIndexer(string name) +// { +// return this.M()[name]++; +// } + +// public unsafe int PostIncrementOfPointer(int* ptr) +// { +// return *(ptr++); +// } + + public int PostIncrementInstanceField() + { + return this.M().Field--; + } + + public int PostIncrementInstanceProperty() + { + return this.M().Property--; + } + + public int PostIncrement2DArray() + { + return this.Array()[IncrementDecrement.StaticField, IncrementDecrement.StaticProperty]++; + } + + public int PostIncrementByRef(ref int i) + { + return i++; + } + + public unsafe int PostIncrementByPointer() + { + return (*this.GetPointer())++; + } +} |