Skip to content

Commit e4e27dd

Browse files
committed
Fix anonymous enum who have a typedef
1 parent a6735b9 commit e4e27dd

1 file changed

Lines changed: 7 additions & 1 deletion

File tree

utils/gen_library_base.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
require_relative 'yaml_ast'
22

3+
def has_typedef?(name)
4+
$all_types.any? { |t| t.type.respond_to?(:name) && t.type.name == name }
5+
end
6+
37
def to_ffi_name(name, default = true)
48
case name
59
when nil
@@ -341,14 +345,16 @@ def to_ffi
341345
m.type.to_ffi
342346
elsif m.type.is_a?(Pointer)
343347
':pointer'
344-
elsif m.type.name && !m.type.is_a?(Struct) && !m.type.is_a?(Union)
348+
elsif m.type.name && has_typedef?(m.type.name)
345349
to_ffi_name(m.type.name)
346350
elsif m.type.is_a?(Struct)
347351
s = m.type.name ? $all_structs.find { |st| st.name == m.type.name } : m.type
348352
"(Class::new(#{FFI_STRUCT}) { layout #{gen_layout(s.to_ffi)} }.by_value)"
349353
elsif m.type.is_a?(Union)
350354
u = m.type.name ? $all_unions&.find { |un| un.name == m.type.name } : m.type
351355
"(Class::new(#{FFI_UNION}) { layout #{gen_layout(u.to_ffi)} }.by_value)"
356+
elsif m.type.name
357+
to_ffi_name(m.type.name)
352358
else
353359
raise "unknown type: #{m.type}"
354360
end

0 commit comments

Comments
 (0)