Skip to content

Bug: deconstruction + array of symbols #1547

Description

@stackmystack

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

image

Expected Output

image

And that was something I can achieve by:

  1. 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
  1. 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:

  1. 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).
  2. 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:
    • none

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions