Prism::Translation::Parser raises NoMethodError for a method with a &nil parameter and a body

Đang mở Phù hợp với người mới
#4,370 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

@bbatsov đang làm issue này rồi.

Từ ngày 11/11/2026.

  • #4371 của @bbatsov — đang mở

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
82/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
ruby
Lĩnh vực
backend

Hướng nghiên cứu

Bắt đầu trong lib/prism/translation/parser/compiler.rb và kiểm tra find_forwarding, nơi issue cho biết node.block.name được gọi cho các tham số block. So sánh các kiểu node tham số của &nil và tham số block có tên, sau đó chạy các bài kiểm thử dịch parser bao quát định nghĩa phương thức. Công việc hoàn tất khi phân tích một phương thức có thân không rỗng và tham số &nil không còn gây ra NoMethodError, đồng thời các trường hợp block và lambda hiện có vẫn hoạt động.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

With Prism 2.1.0 the parser translation fails on a method that has a &nil parameter and a non-empty body:

require "prism"
require "prism/translation/parser"

buffer = Parser::Source::Buffer.new("test.rb", source: "def foo(&nil); bar; end")
Prism::Translation::Parser41.new.parse(buffer)
# => undefined method 'name' for an instance of Prism::NoBlockParameterNode (NoMethodError)

It works when the body is empty, and for blocks and lambdas (foo { |&nil| bar }).

find_forwarding in lib/prism/translation/parser/compiler.rb calls node.block.name for any block parameter, and NoBlockParameterNode has no name. Checking for a BlockParameterNode there fixes it. Happy to send a PR.

Ngôn ngữ chính
C
Star
1k
Fork
202
Merge trung bình
5 giờ 55 phút
Pull request đã merge (30 ngày)
85

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của ruby/prism

Tất cả issue của ruby/prism

Issue tương tự

Thêm issue về C

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.