Skip to content

Commit 5df7422

Browse files
committed
should not return type defined in typedef
1 parent a77f931 commit 5df7422

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

_tools/ruby_h_to_go/lib/ruby_header_parser/parser.rb

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ def initialize(header_dir)
1919

2020
# @return [Array<RubyHeaderParser::FunctionDefinition>]
2121
def extract_function_definitions
22-
__extract_function_definitions(c_kinds: "p", is_parse_multiline_definition: true)
22+
__extract_function_definitions(c_kinds: "p", kind: "p", is_parse_multiline_definition: true)
2323
end
2424

2525
# @return [Array<RubyHeaderParser::FunctionDefinition>]
2626
def extract_static_inline_function_definitions
27-
__extract_function_definitions(c_kinds: "+p-d", is_parse_multiline_definition: false)
27+
__extract_function_definitions(c_kinds: "+p-d", kind: "f", is_parse_multiline_definition: false)
2828
end
2929

3030
# @return [Array<RubyHeaderParser::StructDefinition>]
@@ -66,9 +66,10 @@ def extract_type_definitions
6666
private
6767

6868
# @param c_kinds [String]
69+
# @param kind [String]
6970
# @param is_parse_multiline_definition [Boolean]
7071
# @return [Array<RubyHeaderParser::FunctionDefinition>]
71-
def __extract_function_definitions(c_kinds:, is_parse_multiline_definition:)
72+
def __extract_function_definitions(c_kinds:, kind:, is_parse_multiline_definition:)
7273
stdout = execute_ctags("--c-kinds=#{c_kinds} --fields=+nS --extras=+q")
7374

7475
stdout.each_line.with_object([]) do |line, definitions|
@@ -78,6 +79,8 @@ def __extract_function_definitions(c_kinds:, is_parse_multiline_definition:)
7879

7980
next unless data.should_generate_function?(function_name)
8081

82+
next unless parts[3] == kind
83+
8184
line_num = Util.find_field(parts, "line").to_i
8285
definition =
8386
parse_function_definition(filepath: parts[1], pattern: parts[2], line_num:, is_parse_multiline_definition:)

_tools/ruby_h_to_go/spec/ruby_header_parser/parser_spec.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,11 @@
143143

144144
its(:count) { should be > 0 }
145145

146+
it "should not return type defined in typedef" do
147+
definition_names = definitions.map(&:name)
148+
expect(definition_names).not_to include("rb_event_flag_t")
149+
end
150+
146151
context "rb_num2int_inline" do
147152
subject { definitions.find { |d| d.name == "rb_num2int_inline" } }
148153

0 commit comments

Comments
 (0)