Description
YARD is losing control with deconstruction and array of symbols.
Steps to reproduce
This is the minimal reproduction for the issue.
Gemfile:
source 'https://rubygems.org'
ruby '>= 3.0'
gem 'yard'
.yardopts:
yardoc
--output-dir rdoc
--markup=markdown
src/**/*.rb
src/main.rb:
module Mod
class A
# Some fn
# @param arg [Object]
def fn(arg)
case arg
in SomeClass['array', v]
'42'
else
super
end
end
# A nice little const.
CONST = %i[a b c]
end
end
Actual Output
Expected Output
And that was something I can achieve by:
- Putting the const before the fn
module Mod
class A
# A nice little const.
CONST = %i[a b c]
# Some fn
# @param arg [Object]
def fn(arg)
case arg
in SomeClass['array', v]
'42'
else
super
end
end
end
end
- Avoiding
%i notation:
module Mod
class A
# Some fn
# @param arg [Object]
def fn(arg)
case arg
in SomeClass['array', v]
'42'
else
super
end
end
# A nice little const.
CONST = [:a, :b, :c]
end
end
None of those solutions are actually acceptable in my case:
- I cannot change the order of these particular things, because the deconstruction happens in a class different than that of the const, and I cannot extract the class to a separate file (I can —physically— of course, it's just that it doesn't make sense in my project).
- I cannot avoid
%i notation because the actual const is humongous (again, I physically can, but I would be violating the codebase coding style to please YARD).
Environment details:
- OS: mac (M1) or Linux (ubuntu) … I don't think it matters
- Ruby version (
ruby -v): 3.3.1
- YARD version (
yard -v): 0.9.36
- Relevant software dependency/versions:
Description
YARD is losing control with deconstruction and array of symbols.
Steps to reproduce
This is the minimal reproduction for the issue.
Gemfile:.yardopts:src/main.rb:Actual Output
Expected Output
And that was something I can achieve by:
%inotation:None of those solutions are actually acceptable in my case:
%inotation because the actual const is humongous (again, I physically can, but I would be violating the codebase coding style to please YARD).Environment details:
ruby -v): 3.3.1yard -v): 0.9.36