Skip to content

Commit 0b9b10d

Browse files
Ghasanddobrev
authored andcommitted
Fix enum with zeros for hex literals
1 parent 74eab9f commit 0b9b10d

File tree

3 files changed

+10
-2
lines changed

3 files changed

+10
-2
lines changed

src/Generator.Tests/Passes/TestPasses.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,11 @@ public void TestCleanEnumItemNames()
108108
var @enum = AstContext.Enum("TestEnumItemName");
109109
Assert.IsNotNull(@enum);
110110

111+
// Testing the values read for the enum
112+
Assert.AreEqual(0, @enum.Items[0].Value); // Decimal literal
113+
Assert.AreEqual(1, @enum.Items[1].Value); // Hex literal
114+
Assert.AreEqual(2, @enum.Items[2].Value); // Hex literal with suffix
115+
111116
passBuilder.RemovePrefix("TEST_ENUM_ITEM_NAME_", RenameTargets.EnumItem);
112117
passBuilder.AddPass(new CleanInvalidDeclNamesPass());
113118
passBuilder.RunPasses(pass => pass.VisitASTContext(AstContext));

src/Generator/Library.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,9 @@ static bool ParseToNumber(string num, Enumeration @enum, out long val)
103103
{
104104
num = num.Substring(2);
105105

106+
// This is in case the literal contains suffix
107+
num = Regex.Replace(num, "(?i)[ul]*$", String.Empty);
108+
106109
return long.TryParse(num, NumberStyles.HexNumber,
107110
CultureInfo.CurrentCulture, out val);
108111
}

tests/Native/Passes.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ struct TestReadOnlyProperties
3939
};
4040

4141
#define TEST_ENUM_ITEM_NAME_0 0
42-
#define TEST_ENUM_ITEM_NAME_1 1
43-
#define TEST_ENUM_ITEM_NAME_2 2
42+
#define TEST_ENUM_ITEM_NAME_1 0x1
43+
#define TEST_ENUM_ITEM_NAME_2 0x2U
4444

4545
// TestStructInheritance
4646
struct S1 { int F1, F2; };

0 commit comments

Comments
 (0)