Skip to content

Traversal error on Module #3

@kristianmandrup

Description

@kristianmandrup
  define_method :"test select on a Module" do
    nodes = build('module Hello end').select(Ruby::Module)
    assert_equal 1, nodes.size
  end
Ruby::Module
#, @parent=#>, @ldelim=nil, @rdelim=nil, @parent=#>, @body=[:bodystmt, #>, nil, nil, nil], @ldelim=#, @parent=#>, @rdelim=#, @parent=#>, @parent=#]>>
Ruby::Token
#, @parent=#, @parent=#>, @ldelim=nil, @rdelim=nil, @parent=#>, @body=[:bodystmt, #>, nil, nil, nil], @ldelim=#, @rdelim=#, @parent=#>, @parent=#]>>>
Ruby::Const
#, @parent=#>, @ldelim=nil, @rdelim=nil, @parent=#, @body=[:bodystmt, #>, nil, nil, nil], @ldelim=#, @parent=#>, @rdelim=#, @parent=#>, @parent=#]>>>
Ruby::Whitespace
" "
Ruby::Identifier
#, @parent=#, @ldelim=nil, @rdelim=nil, @parent=#, @body=[:bodystmt, #>, nil, nil, nil], @ldelim=#, @parent=#>, @rdelim=#, @parent=#>, @parent=#]>>>>
Ruby::Whitespace
" "
Symbol
:bodystmt
E 

  1) Error:
test select by a single klass(TraversalTest):
NoMethodError: private method `select' called for :bodystmt:Symbol

Fix:

# traversal.rb

        children.flatten.compact.inject(result) do |result, node| 
          return result if node.class.to_s == 'Symbol'
          result + node.select(*args, &block)
        end

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