Skip to content

Commit 9dbcbba

Browse files
committed
Recognize LLU and LU integer suffixes
1 parent 03746e3 commit 9dbcbba

File tree

2 files changed

+19
-11
lines changed

2 files changed

+19
-11
lines changed

sources/ClangSharp.PInvokeGenerator/PInvokeGenerator.VisitStmt.cs

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1703,11 +1703,7 @@ private void VisitIntegerLiteral(IntegerLiteral integerLiteral)
17031703
{
17041704
var valueString = integerLiteral.ValueString;
17051705

1706-
if (valueString.EndsWith('l') || valueString.EndsWith('L'))
1707-
{
1708-
valueString = valueString[0..^1];
1709-
}
1710-
else if (valueString.EndsWith("ui8", StringComparison.OrdinalIgnoreCase))
1706+
if (valueString.EndsWith("ui8", StringComparison.OrdinalIgnoreCase))
17111707
{
17121708
valueString = valueString[0..^3];
17131709
}
@@ -1731,20 +1727,31 @@ private void VisitIntegerLiteral(IntegerLiteral integerLiteral)
17311727
{
17321728
valueString = valueString[0..^3] + "L";
17331729
}
1734-
1735-
if (valueString.EndsWith("ul", StringComparison.OrdinalIgnoreCase))
1730+
else if (
1731+
valueString.EndsWith("ull", StringComparison.OrdinalIgnoreCase) ||
1732+
valueString.EndsWith("llu", StringComparison.OrdinalIgnoreCase))
17361733
{
1737-
valueString = valueString[0..^2] + "UL";
1734+
valueString = valueString[0..^3] + "UL";
17381735
}
1739-
else if (valueString.EndsWith('l') || valueString.EndsWith('L'))
1736+
else if (valueString.EndsWith("ll", StringComparison.OrdinalIgnoreCase))
1737+
{
1738+
valueString = valueString[0..^2] + "L";
1739+
}
1740+
else if (
1741+
valueString.EndsWith("ul", StringComparison.OrdinalIgnoreCase) ||
1742+
valueString.EndsWith("lu", StringComparison.OrdinalIgnoreCase))
17401743
{
1741-
valueString = valueString[0..^1] + "L";
1744+
valueString = valueString[0..^2] + "U";
17421745
}
17431746
else if (valueString.EndsWith('u') || valueString.EndsWith('U'))
17441747
{
17451748
valueString = valueString[0..^1] + "U";
17461749
}
1747-
1750+
else if (valueString.EndsWith('l') || valueString.EndsWith('L'))
1751+
{
1752+
valueString = valueString[0..^1];
1753+
}
1754+
17481755
var outputBuilder = StartCSharpCode();
17491756
outputBuilder.Write(valueString);
17501757
StopCSharpCode();

tests/ClangSharp.PInvokeGenerator.UnitTests/Base/VarDeclarationTest.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ public abstract class VarDeclarationTest : PInvokeGeneratorTest
3131
[TestCase("0U", "uint", "0U")]
3232
[TestCase("0LL", "long", "0L")]
3333
[TestCase("0ULL", "ulong", "0UL")]
34+
[TestCase("0LLU", "ulong", "0UL")]
3435
[TestCase("0.0", "double", "0.0")]
3536
[TestCase("0.f", "float", "0.0f")]
3637
public Task MacroTest(string nativeValue, string expectedManagedType, string expectedManagedValue) => MacroTestImpl(nativeValue, expectedManagedType, expectedManagedValue);

0 commit comments

Comments
 (0)