Fix empty enums being skipped over

This commit is contained in:
Robin Voetter
2020-06-30 02:44:03 +02:00
parent 3b7b06fbac
commit cd403e57ff
2 changed files with 23 additions and 20 deletions

View File

@@ -140,8 +140,7 @@ const DeclarationResolver = struct {
while (read_index < self.registry.decls.len) {
const decl = self.registry.decls[read_index];
const is_required = self.declarations.contains(decl.name);
const is_empty_enum = decl.decl_type == .enumeration and decl.decl_type.enumeration.fields.len == 0;
if (decl.decl_type == .foreign or (is_required and !is_empty_enum)) {
if (decl.decl_type == .foreign or is_required) {
self.registry.decls[write_index] = decl;
write_index += 1;
}

View File

@@ -541,6 +541,9 @@ fn Renderer(comptime WriterType: type) type {
try self.renderTypeName(name);
try self.writer.writeAll(" = packed struct {");
if (bits.fields.len == 0) {
try self.writer.writeAll("_reserved_bits: Flags = 0,");
} else {
var flags_by_bitpos = [_]?[]const u8{null} ** 32;
for (bits.fields) |field| {
if (field.value == .bitpos) {
@@ -561,6 +564,7 @@ fn Renderer(comptime WriterType: type) type {
}
try self.writer.writeAll("= false, ");
}
}
try self.writer.writeAll("pub usingnamespace FlagsMixin(");
try self.renderTypeName(name);
try self.writer.writeAll(");\n};\n");