Skip to content

RangeError When using pattern matching in YARD documentation generation #1521

Closed
@aristotelesbr

Description

@aristotelesbr

Description

Maybe i encountered an issue while generating documentation using the YARD gem with pattern matching syntax like "foo" => String. A RangeError is thrown regarding a 'beginless range'. This error specifically arises in the ast_node.rb:348 file as part of the documentation generation process.

Error Message:
.asdf/installs/ruby/3.2.2/lib/ruby/gems/3.2.0/gems/yard-0.9.34/lib/yard/parser/ruby/ast_node.rb:348:in `first': cannot get the first element of beginless range (RangeError)

Steps to reproduce

  1. Include pattern matching in the style of "foo" => String in a method documented with YARD.
  2. Run the command yard doc .
  3. Observe the above-mentioned RangeError.

Expected Result:
Documentation is generated without any errors.

Actual Result:
The documentation generation process fails with a RangeError when trying to interpret pattern matching with string literals.

Environment:

  • Operating System: Linux
  • Ruby Version: 3.2.2
  • YARD Gem Version: 0.9.34

Code Example:

# @api private
#
# @param type [String] the response content type
# @param charset [Hash] the response charset
#
# @return [void]
def put_content_type(type, charset: nil)
  type => ::String

  case charset
  in ::String then header!('Content-Type', "#{type}; charset=#{charset}")
  else             header!('Content-Type', type)
  end
rescue ::NoMatchingPatternError
  raise ::ArgumentError, 'type must be a string'
end

Repository reference link

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions