Skip to content

Commit a8145f0

Browse files
committed
Fixed [error] Cannot pass a value of type (::Symbol | nil) as an argument of type (:ref | :array | nil)
``` lib/ruby_header_parser/parser.rb:289:8: [error] Cannot pass a value of type `(::Symbol | nil)` as an argument of type `(:ref | :array | nil)` │ (::Symbol | nil) <: (:ref | :array | nil) │ ::Symbol <: (:ref | :array | nil) │ ::Symbol <: :ref │ │ Diagnostic ID: Ruby::ArgumentTypeMismatch │ └ pointer:, ~~~~~~~ ```
1 parent 1ed7ca6 commit a8145f0

File tree

3 files changed

+11
-8
lines changed

3 files changed

+11
-8
lines changed

lib/ruby_header_parser/parser.rb

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -329,21 +329,24 @@ def analyze_argument_type(function_name:, arg_pos:, parts:)
329329
# - pointer [Symbol,nil]
330330
# - length [Integer]
331331
def prepare_argument_parts(parts:, arg_pos:)
332-
pointer = nil
333-
length = 0
334-
335332
if parts[-1] =~ /\[([0-9]+)?\]$/
336333
parts[-1].gsub!(/\[([0-9]+)?\]$/, "")
337334
length = ::Regexp.last_match(1).to_i
338-
pointer = :array
335+
336+
unless parts[-1] =~ /^[0-9a-zA-Z_]+$/
337+
# last elements isn't dummy argument
338+
parts << "arg#{arg_pos}"
339+
end
340+
341+
return [:array, length]
339342
end
340343

341344
unless parts[-1] =~ /^[0-9a-zA-Z_]+$/
342345
# last elements isn't dummy argument
343346
parts << "arg#{arg_pos}"
344347
end
345348

346-
[pointer, length]
349+
[nil, 0]
347350
end
348351

349352
# @param type [String]

sig/ruby_header_parser/argument_definition.rbs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ module RubyHeaderParser
55
attr_accessor pointer: :ref | :array | nil
66
attr_accessor length: Integer
77

8-
def initialize: (type: String, name: String, pointer: (:ref | :array)?, ?length: Integer) -> void
8+
def initialize: (type: String, name: String, pointer: (:ref | :array | :ref_array | :function | :sref | :str_array | :in_ref)?, ?length: Integer) -> void
99

1010
def ==: (untyped other) -> bool
1111

sig/ruby_header_parser/parser.rbs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,12 @@ module RubyHeaderParser
6868
function_name: String,
6969
arg_pos: Integer,
7070
parts: Array[String]
71-
) -> [String, Symbol?, Integer]
71+
) -> [String, (:ref | :array | :ref_array | :function | :sref | :str_array | :in_ref)?, Integer]
7272

7373
def prepare_argument_parts: (
7474
parts: Array[String],
7575
arg_pos: Integer
76-
) -> [Symbol?, Integer]
76+
) -> [(:array)?, Integer]
7777

7878
def pointer_length: (String) -> Integer
7979
end

0 commit comments

Comments
 (0)