mirror of https://github.com/icsharpcode/ILSpy.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
288 lines
5.5 KiB
288 lines
5.5 KiB
#if !(CS110 && NET70) |
|
using System; |
|
#endif |
|
using System.Threading.Tasks; |
|
|
|
namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty |
|
{ |
|
internal class ConstantsTests |
|
{ |
|
#if CS90 |
|
public nint? NullableNInt() |
|
{ |
|
return null; |
|
} |
|
|
|
public nuint? NullableNUInt() |
|
{ |
|
return null; |
|
} |
|
#endif |
|
|
|
#if !(CS110 && NET70) |
|
public IntPtr? NullableIntPtr() |
|
{ |
|
return null; |
|
} |
|
|
|
public UIntPtr? NullableUIntPtr() |
|
{ |
|
return null; |
|
} |
|
#endif |
|
|
|
public ulong Issue1308(ulong u = 8uL) |
|
{ |
|
Test((u & 0xFFFFFFFFu) != 0); |
|
return 18446744069414584320uL; |
|
} |
|
|
|
public void Byte_BitmaskingInCondition(byte v) |
|
{ |
|
Test((v & 0xF) == 0); |
|
Test((v & 0x123) == 0); |
|
Test((v | 0xF) == 0); |
|
Test((v | 0x123) == 0); |
|
} |
|
|
|
public void SByte_BitmaskingInCondition(sbyte v) |
|
{ |
|
Test((v & 0xF) == 0); |
|
Test((v & 0x123) == 0); |
|
Test((v | 0xF) == 0); |
|
Test((v | 0x123) == 0); |
|
} |
|
|
|
public void Enum_Flag_Check(TaskCreationOptions v) |
|
{ |
|
Test((v & TaskCreationOptions.AttachedToParent) != 0); |
|
Test((v & TaskCreationOptions.AttachedToParent) == 0); |
|
} |
|
|
|
private void Test(bool expr) |
|
{ |
|
} |
|
|
|
private void Test(decimal expr) |
|
{ |
|
} |
|
|
|
public void Decimal() |
|
{ |
|
// Roslyn and legacy csc both normalize the decimal constant references, |
|
// but to a different representation (ctor call vs. field use) |
|
Test(0m); |
|
Test(1m); |
|
Test(-1m); |
|
Test(decimal.MinValue); |
|
Test(decimal.MaxValue); |
|
} |
|
|
|
public void BitwiseAndWithConstantUInt64(ulong a) |
|
{ |
|
ExpectUInt64(a & 7); |
|
ExpectUInt64(a & 0x7FFFFFFF); |
|
ExpectUInt64(a & 0xFFFFFFFFu); |
|
ExpectUInt64(a & 0x7FFFFFFFFFFFFFFFuL); |
|
ExpectUInt64(a & 0xFFFFFFFFFFFFFFFFuL); |
|
} |
|
|
|
public void BitwiseAndWithConstantInt64(long a) |
|
{ |
|
ExpectInt64(a & 7); |
|
ExpectInt64(a & 0x7FFFFFFF); |
|
ExpectInt64(a & 0xFFFFFFFFu); |
|
ExpectInt64(a & 0x7FFFFFFFFFFFFFFFL); |
|
} |
|
|
|
public void BitwiseAndWithConstantUInt32(uint a) |
|
{ |
|
ExpectUInt32(a & 7u); |
|
ExpectUInt32(a & 0x7FFFFFFFu); |
|
ExpectUInt32(a & 0xFFFFFFFFu); |
|
} |
|
|
|
public void BitwiseAndWithConstantInt32(int a) |
|
{ |
|
ExpectInt32(a & 7); |
|
ExpectInt32(a & 0x7FFFFFFF); |
|
} |
|
|
|
public void BitwiseAndWithConstantUInt16(ushort a) |
|
{ |
|
ExpectUInt16((ushort)(a & 7u)); |
|
ExpectUInt16((ushort)(a & 0x7FFFu)); |
|
ExpectUInt16((ushort)(a & 0xFFFFu)); |
|
} |
|
|
|
public void BitwiseAndWithConstantInt16(short a) |
|
{ |
|
ExpectInt16((short)(a & 7)); |
|
ExpectInt16((short)(a & 0x7FFF)); |
|
} |
|
|
|
public void BitwiseAndWithConstantUInt8(byte a) |
|
{ |
|
ExpectUInt8((byte)(a & 7u)); |
|
ExpectUInt8((byte)(a & 0x7Fu)); |
|
ExpectUInt8((byte)(a & 0xFFu)); |
|
} |
|
|
|
public void BitwiseAndWithConstantInt8(sbyte a) |
|
{ |
|
ExpectInt8((sbyte)(a & 7)); |
|
ExpectInt8((sbyte)(a & 0x7F)); |
|
} |
|
|
|
public void BitwiseOrWithConstantUInt64(ulong a) |
|
{ |
|
ExpectUInt64(a | 7); |
|
ExpectUInt64(a | 0x7FFFFFFF); |
|
ExpectUInt64(a | 0xFFFFFFFFu); |
|
ExpectUInt64(a | 0x7FFFFFFFFFFFFFFFuL); |
|
ExpectUInt64(a | 0xFFFFFFFFFFFFFFFFuL); |
|
} |
|
|
|
public void BitwiseOrWithConstantInt64(long a) |
|
{ |
|
ExpectInt64(a | 7); |
|
ExpectInt64(a | 0x7FFFFFFF); |
|
ExpectInt64(a | 0xFFFFFFFFu); |
|
ExpectInt64(a | 0x7FFFFFFFFFFFFFFFL); |
|
} |
|
|
|
public void BitwiseOrWithConstantUInt32(uint a) |
|
{ |
|
ExpectUInt32(a | 7u); |
|
ExpectUInt32(a | 0x7FFFFFFFu); |
|
ExpectUInt32(a | 0xFFFFFFFFu); |
|
} |
|
|
|
public void BitwiseOrWithConstantInt32(int a) |
|
{ |
|
ExpectInt32(a | 7); |
|
ExpectInt32(a | 0x7FFFFFFF); |
|
} |
|
|
|
public void BitwiseOrWithConstantUInt16(ushort a) |
|
{ |
|
ExpectUInt16((ushort)(a | 7u)); |
|
ExpectUInt16((ushort)(a | 0x7FFFu)); |
|
ExpectUInt16((ushort)(a | 0xFFFFu)); |
|
} |
|
|
|
public void BitwiseOrWithConstantInt16(short a) |
|
{ |
|
ExpectInt16((short)(a | 7)); |
|
ExpectInt16((short)(a | 0x7FFF)); |
|
} |
|
|
|
public void BitwiseOrWithConstantUInt8(byte a) |
|
{ |
|
ExpectUInt8((byte)(a | 7u)); |
|
ExpectUInt8((byte)(a | 0x7Fu)); |
|
ExpectUInt8((byte)(a | 0xFFu)); |
|
} |
|
|
|
public void BitwiseOrWithConstantInt8(sbyte a) |
|
{ |
|
ExpectInt8((sbyte)(a | 7)); |
|
ExpectInt8((sbyte)(a | 0x7F)); |
|
} |
|
|
|
public void BitwiseXorWithConstantUInt64(ulong a) |
|
{ |
|
ExpectUInt64(a ^ 7); |
|
ExpectUInt64(a ^ 0x7FFFFFFF); |
|
ExpectUInt64(a ^ 0xFFFFFFFFu); |
|
ExpectUInt64(a ^ 0x7FFFFFFFFFFFFFFFuL); |
|
ExpectUInt64(a ^ 0xFFFFFFFFFFFFFFFFuL); |
|
} |
|
|
|
public void BitwiseXorWithConstantInt64(long a) |
|
{ |
|
ExpectInt64(a ^ 7); |
|
ExpectInt64(a ^ 0x7FFFFFFF); |
|
ExpectInt64(a ^ 0xFFFFFFFFu); |
|
ExpectInt64(a ^ 0x7FFFFFFFFFFFFFFFL); |
|
} |
|
|
|
public void BitwiseXorWithConstantUInt32(uint a) |
|
{ |
|
ExpectUInt32(a ^ 7u); |
|
ExpectUInt32(a ^ 0x7FFFFFFFu); |
|
ExpectUInt32(a ^ 0xFFFFFFFFu); |
|
} |
|
|
|
public void BitwiseXorWithConstantInt32(int a) |
|
{ |
|
ExpectInt32(a ^ 7); |
|
ExpectInt32(a ^ 0x7FFFFFFF); |
|
} |
|
|
|
public void BitwiseXorWithConstantUInt16(ushort a) |
|
{ |
|
ExpectUInt16((ushort)(a ^ 7u)); |
|
ExpectUInt16((ushort)(a ^ 0x7FFFu)); |
|
ExpectUInt16((ushort)(a ^ 0xFFFFu)); |
|
} |
|
|
|
public void BitwiseXorWithConstantInt16(short a) |
|
{ |
|
ExpectInt16((short)(a ^ 7)); |
|
ExpectInt16((short)(a ^ 0x7FFF)); |
|
} |
|
|
|
public void BitwiseXorWithConstantUInt8(byte a) |
|
{ |
|
ExpectUInt8((byte)(a ^ 7u)); |
|
ExpectUInt8((byte)(a ^ 0x7Fu)); |
|
ExpectUInt8((byte)(a ^ 0xFFu)); |
|
} |
|
|
|
public void BitwiseXorWithConstantInt8(sbyte a) |
|
{ |
|
ExpectInt8((sbyte)(a ^ 7)); |
|
ExpectInt8((sbyte)(a ^ 0x7F)); |
|
} |
|
|
|
private void ExpectUInt64(ulong _) |
|
{ |
|
|
|
} |
|
|
|
private void ExpectInt64(long _) |
|
{ |
|
|
|
} |
|
|
|
private void ExpectUInt32(uint _) |
|
{ |
|
|
|
} |
|
|
|
private void ExpectInt32(int _) |
|
{ |
|
|
|
} |
|
|
|
private void ExpectUInt16(ushort _) |
|
{ |
|
|
|
} |
|
|
|
private void ExpectInt16(short _) |
|
{ |
|
|
|
} |
|
|
|
private void ExpectUInt8(byte _) |
|
{ |
|
} |
|
|
|
private void ExpectInt8(sbyte _) |
|
{ |
|
|
|
} |
|
} |
|
}
|
|
|