Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RangeError When using pattern matching in YARD documentation generation #1521

Open
aristotelesbr opened this issue Nov 17, 2023 · 0 comments

Comments

@aristotelesbr
Copy link

aristotelesbr commented Nov 17, 2023

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

aalin added a commit to mayu-live/css that referenced this issue Jan 10, 2024
tapioca uses YARD for parsing, and YARD is currently unable to parse these
expressions, so I couldn't generate RBI files for sorbet using tapioca.

lsegal/yard#1521
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant