Skip to content

Commit 86e998d

Browse files
committed
Fix AccessFlags3KHR.None being added even when it already has a member with value 0
1 parent 81ba841 commit 86e998d

File tree

3 files changed

+30
-4
lines changed

3 files changed

+30
-4
lines changed

.silktouch/ac001027d53000e0.stout

1.74 MB
Binary file not shown.

sources/SilkTouch/SilkTouch/Mods/TransformFlags.cs

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,36 @@ private class Rewriter(Compilation compilation) : CSharpSyntaxRewriter
5858
}
5959

6060
// Add None member if it doesn't exist yet
61-
var hasNoneMember = node.Members.Any(
62-
member => member.Identifier.Text == "None"
63-
|| (member.EqualsValue != null && semanticModel.GetConstantValue(member.EqualsValue.Value).Value is 0));
61+
var hasNoneMember = symbol.Members().Any(member =>
62+
{
63+
if (member.Name == "None")
64+
{
65+
return true;
66+
}
67+
68+
if (member is not IFieldSymbol fieldSymbol)
69+
{
70+
return false;
71+
}
72+
73+
// ConstantValue is an "object"
74+
// Directly comparing to 0 doesn't work
75+
// Casting to int does not either
76+
var isZero = fieldSymbol.ConstantValue switch
77+
{
78+
sbyte n => n == 0,
79+
byte n => n == 0,
80+
short n => n == 0,
81+
ushort n => n == 0,
82+
int n => n == 0,
83+
uint n => n == 0,
84+
long n => n == 0,
85+
ulong n => n == 0,
86+
_ => false
87+
};
88+
89+
return isZero;
90+
});
6491

6592
if (!hasNoneMember)
6693
{

sources/Vulkan/Vulkan/Enums/AccessFlags3KHR.gen.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,5 @@ namespace Silk.NET.Vulkan;
1313
[Flags]
1414
public enum AccessFlags3KHR : ulong
1515
{
16-
None = 0,
1716
Access3NoneKHR = unchecked((ulong)0UL),
1817
}

0 commit comments

Comments
 (0)