Skip to content
Merged
Show file tree
Hide file tree
Changes from 10 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -345,9 +345,14 @@ internal static unsafe void SetConstantValue(ModuleBuilder module, int tk, Type

switch (corType)
{
case CorElementType.ELEMENT_TYPE_BOOLEAN:
if (destType.IsEnum)
{
throw new ArgumentException(SR.Format(SR.Argument_ConstantNotSupported, type));
}
goto case CorElementType.ELEMENT_TYPE_I1;
case CorElementType.ELEMENT_TYPE_I1:
case CorElementType.ELEMENT_TYPE_U1:
case CorElementType.ELEMENT_TYPE_BOOLEAN:
case CorElementType.ELEMENT_TYPE_I2:
case CorElementType.ELEMENT_TYPE_U2:
case CorElementType.ELEMENT_TYPE_CHAR:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,6 @@ internal static bool TryGetUnboxedValueOfEnumOrInteger(object value, out ulong r

switch (elementType)
{
case EETypeElementType.Boolean:
result = Unsafe.As<byte, bool>(ref pValue) ? 1UL : 0UL;
return true;

case EETypeElementType.Char:
result = (ulong)(long)Unsafe.As<byte, char>(ref pValue);
return true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,8 +134,7 @@ private static Exception ConvertOrWidenPrimitivesEnumsAndPointersIfPossible(obje
switch (dstCorElementType)
{
case CorElementType.ELEMENT_TYPE_BOOLEAN:
bool boolValue = Convert.ToBoolean(srcObject);
dstObject = dstEEType.IsEnum ? Enum.ToObject(dstEEType, boolValue ? 1 : 0) : boolValue;
dstObject = Convert.ToBoolean(srcObject);
break;

case CorElementType.ELEMENT_TYPE_CHAR:
Expand Down
3 changes: 1 addition & 2 deletions src/coreclr/vm/reflectioninvocation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1979,8 +1979,7 @@ extern "C" void QCALLTYPE Enum_GetValuesAndNames(QCall::TypeHandle pEnumType, QC
GCPROTECT_BEGIN(gc);

{
// The managed side expects ELEMENT_TYPE_U1 as the underlying type for boolean
gc.values = (BASEARRAYREF) AllocatePrimitiveArray((type == ELEMENT_TYPE_BOOLEAN) ? ELEMENT_TYPE_U1 : type, cFields);
gc.values = (BASEARRAYREF) AllocatePrimitiveArray(type, cFields);

BYTE* pToValues = gc.values->GetDataPtr();
size_t elementSize = gc.values->GetComponentSize();
Expand Down
74 changes: 0 additions & 74 deletions src/libraries/Microsoft.VisualBasic.Core/tests/ConversionsTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -159,10 +159,6 @@ public static IEnumerable<object[]> ToByte_Object_TestData()
// bool.
yield return new object[] { true, byte.MaxValue };
yield return new object[] { false, byte.MinValue };
if (PlatformDetection.IsReflectionEmitSupported && PlatformDetection.IsRareEnumsSupported)
{
yield return new object[] { BoolEnum, byte.MinValue };
}

// null.
yield return new object[] { null, byte.MinValue };
Expand Down Expand Up @@ -340,10 +336,6 @@ public static IEnumerable<object[]> ToSByte_Object_TestData()
// bool.
yield return new object[] { true, (sbyte)(-1) };
yield return new object[] { false, (sbyte)0 };
if (PlatformDetection.IsReflectionEmitSupported && PlatformDetection.IsRareEnumsSupported)
{
yield return new object[] { BoolEnum, (sbyte)0 };
}

// null.
yield return new object[] { null, (sbyte)0 };
Expand Down Expand Up @@ -514,10 +506,6 @@ public static IEnumerable<object[]> ToUShort_Object_TestData()
// bool.
yield return new object[] { true, ushort.MaxValue };
yield return new object[] { false, ushort.MinValue };
if (PlatformDetection.IsReflectionEmitSupported && PlatformDetection.IsRareEnumsSupported)
{
yield return new object[] { BoolEnum, ushort.MinValue };
}

// null.
yield return new object[] { null, ushort.MinValue };
Expand Down Expand Up @@ -698,10 +686,6 @@ public static IEnumerable<object[]> ToShort_Object_TestData()
// bool.
yield return new object[] { true, (short)(-1) };
yield return new object[] { false, (short)0 };
if (PlatformDetection.IsReflectionEmitSupported && PlatformDetection.IsRareEnumsSupported)
{
yield return new object[] { BoolEnum, (short)0 };
}

// null.
yield return new object[] { null, (short)0 };
Expand Down Expand Up @@ -876,10 +860,6 @@ public static IEnumerable<object[]> ToUInteger_Object_TestData()
// bool.
yield return new object[] { true, uint.MaxValue };
yield return new object[] { false, uint.MinValue };
if (PlatformDetection.IsReflectionEmitSupported && PlatformDetection.IsRareEnumsSupported)
{
yield return new object[] { BoolEnum, uint.MinValue };
}

// null.
yield return new object[] { null, uint.MinValue };
Expand Down Expand Up @@ -1066,10 +1046,6 @@ public static IEnumerable<object[]> ToInteger_Object_TestData()
// bool.
yield return new object[] { true, -1 };
yield return new object[] { false, 0 };
if (PlatformDetection.IsReflectionEmitSupported && PlatformDetection.IsRareEnumsSupported)
{
yield return new object[] { BoolEnum, 0 };
}

// null.
yield return new object[] { null, 0 };
Expand Down Expand Up @@ -1252,10 +1228,6 @@ public static IEnumerable<object[]> ToULong_Object_TestData()
// bool.
yield return new object[] { true, ulong.MaxValue };
yield return new object[] { false, ulong.MinValue };
if (PlatformDetection.IsReflectionEmitSupported && PlatformDetection.IsRareEnumsSupported)
{
yield return new object[] { BoolEnum, ulong.MinValue };
}

// null.
yield return new object[] { null, ulong.MinValue };
Expand Down Expand Up @@ -1480,10 +1452,6 @@ public static IEnumerable<object[]> ToLong_Object_TestData()
// bool.
yield return new object[] { true, (long)(-1) };
yield return new object[] { false, (long)0 };
if (PlatformDetection.IsReflectionEmitSupported && PlatformDetection.IsRareEnumsSupported)
{
yield return new object[] { BoolEnum, (long)0 };
}

// null.
yield return new object[] { null, (long)0 };
Expand Down Expand Up @@ -1706,10 +1674,6 @@ public static IEnumerable<object[]> ToSingle_Object_TestData()
// bool.
yield return new object[] { true, (float)(-1) };
yield return new object[] { false, (float)0 };
if (PlatformDetection.IsReflectionEmitSupported && PlatformDetection.IsRareEnumsSupported)
{
yield return new object[] { BoolEnum, (float)0 };
}

// null.
yield return new object[] { null, (float)0 };
Expand Down Expand Up @@ -1899,10 +1863,6 @@ public static IEnumerable<object[]> ToDouble_Object_TestData()
// bool.
yield return new object[] { true, (double)(-1) };
yield return new object[] { false, (double)0 };
if (PlatformDetection.IsReflectionEmitSupported && PlatformDetection.IsRareEnumsSupported)
{
yield return new object[] { BoolEnum, (double)0 };
}

// null.
yield return new object[] { null, (double)0 };
Expand Down Expand Up @@ -2095,10 +2055,6 @@ public static IEnumerable<object[]> ToDecimal_Object_TestData()
// bool.
yield return new object[] { true, (decimal)(-1) };
yield return new object[] { false, (decimal)0 };
if (PlatformDetection.IsReflectionEmitSupported && PlatformDetection.IsRareEnumsSupported)
{
yield return new object[] { BoolEnum, (decimal)0 };
}

// null.
yield return new object[] { null, (decimal)0 };
Expand Down Expand Up @@ -2321,10 +2277,6 @@ public static IEnumerable<object[]> ToBoolean_Object_TestData()
// bool.
yield return new object[] { true, true };
yield return new object[] { false, false };
if (PlatformDetection.IsReflectionEmitSupported && PlatformDetection.IsRareEnumsSupported)
{
yield return new object[] { BoolEnum, false };
}

// null.
yield return new object[] { null, false };
Expand Down Expand Up @@ -2636,10 +2588,6 @@ public static IEnumerable<object[]> ToString_IConvertible_TestData()
// bool.
yield return new object[] { true, "True" };
yield return new object[] { false, "False" };
if (PlatformDetection.IsReflectionEmitSupported && PlatformDetection.IsRareEnumsSupported)
{
yield return new object[] { BoolEnum, "False" };
}

// string.
yield return new object[] { "", "" };
Expand Down Expand Up @@ -2749,28 +2697,6 @@ public static object DoubleEnum
}
}

private static object s_boolEnum;

public static object BoolEnum
{
get
{
if (s_boolEnum == null)
{
AssemblyBuilder assembly = AssemblyBuilder.DefineDynamicAssembly(new AssemblyName("Name"), AssemblyBuilderAccess.RunAndCollect);
ModuleBuilder module = assembly.DefineDynamicModule("Name");

EnumBuilder eb = module.DefineEnum("BoolEnumType", TypeAttributes.Public, typeof(bool));
eb.DefineLiteral("False", false);
eb.DefineLiteral("True", true);

s_boolEnum = Activator.CreateInstance(eb.CreateTypeInfo());
}

return s_boolEnum;
}
}

private static object s_charEnum;

public static object CharEnum
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2376,7 +2376,6 @@ public static IEnumerable<Type> EnumerableTypes()
if (PlatformDetection.IsReflectionEmitSupported && PlatformDetection.IsRareEnumsSupported)
{
yield return NonCSharpTypes.CharEnumType;
yield return NonCSharpTypes.BoolEnumType;
}
}

Expand Down
Loading