👋

[Bug #21974] ::Foo = 1 を RubyVM::AST.parse でパースすると segv するというバグ報告

に公開

[Bug #21974] Cannot inspect RubyVM::AST for CDECL

  • ::Foo = 1RubyVM::AbstractSyntaxTree.parse でパースすると segv するというバグ報告
pp RubyVM::AbstractSyntaxTree.parse("::Foo = 1")
# => [BUG] Segmentation fault at 0x0000000000000000
  • Ruby 4.0 から再現するみたいですね
  • Foo = 1 だと問題ないのでエラーになるケースは限られてそう?
pp RubyVM::AbstractSyntaxTree.parse("Foo = 1")
# => (SCOPE@1:0-1:7 tbl: [] args: nil body: (CDECL@1:0-1:7 :Foo (INTEGER@1:6-1:7 1)))
  • この不具合は開発版の Ruby 4.1-dev で修正済み
pp RubyVM::AbstractSyntaxTree.parse("::Foo = 1")
# Ruby 4.0 => [BUG] Segmentation fault at 0x0000000000000000
# Ruby 4.1 => (SCOPE@1:0-1:9 tbl: [] args: nil body: (CDECL@1:0-1:9 (COLON3@1:0-1:5 :Foo) :Foo (INTEGER@1:8-1:9 1)))
GitHubで編集を提案

Discussion