diff --git a/src/Generator.Tests/Passes/TestPasses.cs b/src/Generator.Tests/Passes/TestPasses.cs index 5416a711..58533f0e 100644 --- a/src/Generator.Tests/Passes/TestPasses.cs +++ b/src/Generator.Tests/Passes/TestPasses.cs @@ -108,6 +108,11 @@ namespace CppSharp.Generator.Tests.Passes var @enum = AstContext.Enum("TestEnumItemName"); Assert.IsNotNull(@enum); + // Testing the values read for the enum + Assert.AreEqual(0, @enum.Items[0].Value); // Decimal literal + Assert.AreEqual(1, @enum.Items[1].Value); // Hex literal + Assert.AreEqual(2, @enum.Items[2].Value); // Hex literal with suffix + passBuilder.RemovePrefix("TEST_ENUM_ITEM_NAME_", RenameTargets.EnumItem); passBuilder.AddPass(new CleanInvalidDeclNamesPass()); passBuilder.RunPasses(pass => pass.VisitASTContext(AstContext)); diff --git a/src/Generator/Library.cs b/src/Generator/Library.cs index 7241f9b2..30e2f773 100644 --- a/src/Generator/Library.cs +++ b/src/Generator/Library.cs @@ -103,6 +103,9 @@ namespace CppSharp { num = num.Substring(2); + // This is in case the literal contains suffix + num = Regex.Replace(num, "(?i)[ul]*$", String.Empty); + return long.TryParse(num, NumberStyles.HexNumber, CultureInfo.CurrentCulture, out val); } diff --git a/tests/Native/Passes.h b/tests/Native/Passes.h index 5954a6d2..79ab7ab3 100644 --- a/tests/Native/Passes.h +++ b/tests/Native/Passes.h @@ -39,8 +39,8 @@ struct TestReadOnlyProperties }; #define TEST_ENUM_ITEM_NAME_0 0 -#define TEST_ENUM_ITEM_NAME_1 1 -#define TEST_ENUM_ITEM_NAME_2 2 +#define TEST_ENUM_ITEM_NAME_1 0x1 +#define TEST_ENUM_ITEM_NAME_2 0x2U // TestStructInheritance struct S1 { int F1, F2; };