Browse Source

Fix enum with zeros for hex literals

pull/1267/head
Ghasan Al-Sakkaf 6 years ago committed by Dimitar Dobrev
parent
commit
0b9b10d2f5
  1. 5
      src/Generator.Tests/Passes/TestPasses.cs
  2. 3
      src/Generator/Library.cs
  3. 4
      tests/Native/Passes.h

5
src/Generator.Tests/Passes/TestPasses.cs

@ -108,6 +108,11 @@ namespace CppSharp.Generator.Tests.Passes @@ -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));

3
src/Generator/Library.cs

@ -103,6 +103,9 @@ namespace CppSharp @@ -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);
}

4
tests/Native/Passes.h

@ -39,8 +39,8 @@ struct TestReadOnlyProperties @@ -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; };

Loading…
Cancel
Save