Skip to content

stree match command crashed by "undefined method `pretty_print' for nil:NilClass" #324

@bongole

Description

@bongole

When I run the following command with stree version 6.0.1, it crashes with below error:

$ echo 'p("a")' | stree _6.0.1_ match

undefined method `pretty_print' for nil:NilClass
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/match_visitor.rb:24:in `visit'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/match_visitor.rb:48:in `block in field'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/prettier_print-1.2.0/lib/prettier_print.rb:979:in `block in nest'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/prettier_print-1.2.0/lib/prettier_print.rb:1006:in `with_target'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/prettier_print-1.2.0/lib/prettier_print.rb:979:in `nest'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/match_visitor.rb:45:in `field'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/field_visitor.rb:228:in `block in visit_call'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/match_visitor.rb:67:in `block in node'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/prettier_print-1.2.0/lib/prettier_print.rb:1006:in `with_target'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/match_visitor.rb:67:in `node'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/field_visitor.rb:227:in `visit_call'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/node.rb:2960:in `accept'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/basic_visitor.rb:106:in `visit'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/match_visitor.rb:16:in `visit'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/match_visitor.rb:58:in `block (3 levels) in list'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/prettier_print-1.2.0/lib/prettier_print.rb:767:in `block in seplist'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/prettier_print-1.2.0/lib/prettier_print.rb:759:in `each'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/prettier_print-1.2.0/lib/prettier_print.rb:759:in `seplist'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/match_visitor.rb:58:in `block (2 levels) in list'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/prettier_print-1.2.0/lib/prettier_print.rb:958:in `block in indent'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/prettier_print-1.2.0/lib/prettier_print.rb:1006:in `with_target'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/prettier_print-1.2.0/lib/prettier_print.rb:958:in `indent'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/match_visitor.rb:56:in `block in list'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/prettier_print-1.2.0/lib/prettier_print.rb:859:in `block in group'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/prettier_print-1.2.0/lib/prettier_print.rb:1006:in `with_target'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/prettier_print-1.2.0/lib/prettier_print.rb:855:in `group'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/match_visitor.rb:53:in `list'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/field_visitor.rb:797:in `block in visit_statements'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/match_visitor.rb:67:in `block in node'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/prettier_print-1.2.0/lib/prettier_print.rb:1006:in `with_target'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/match_visitor.rb:67:in `node'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/field_visitor.rb:796:in `visit_statements'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/node.rb:9911:in `accept'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/basic_visitor.rb:106:in `visit'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/match_visitor.rb:16:in `visit'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/match_visitor.rb:48:in `block in field'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/prettier_print-1.2.0/lib/prettier_print.rb:979:in `block in nest'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/prettier_print-1.2.0/lib/prettier_print.rb:1006:in `with_target'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/prettier_print-1.2.0/lib/prettier_print.rb:979:in `nest'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/match_visitor.rb:45:in `field'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/field_visitor.rb:659:in `block in visit_program'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/match_visitor.rb:67:in `block in node'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/prettier_print-1.2.0/lib/prettier_print.rb:1006:in `with_target'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/match_visitor.rb:67:in `node'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/field_visitor.rb:658:in `visit_program'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/node.rb:8598:in `accept'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/node.rb:150:in `block in construct_keys'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/prettier_print-1.2.0/lib/prettier_print.rb:385:in `format'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/node.rb:150:in `construct_keys'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/cli.rb:251:in `run'
/home/bongole/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/syntax_tree-6.0.1/lib/syntax_tree/cli.rb:580:in `block (2 levels) in process_queue'

It worked fine with stree version 5.3.0.

$ echo 'p("a")' | stree _5.3.0_ match

SyntaxTree::Program[
  statements: SyntaxTree::Statements[
    body: [
      SyntaxTree::CallNode[
        receiver: nil,
        operator: nil,
        message: SyntaxTree::Ident[value: "p"],
        arguments: SyntaxTree::ArgParen[
          arguments: SyntaxTree::Args[
            parts: [
              SyntaxTree::StringLiteral[
                parts: [SyntaxTree::TStringContent[value: "a"]]
              ]
            ]
          ]
        ]
      ]
    ]
  ]
]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions