Improve error message on trailing comma in method definition
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 42/100
Hướng nghiên cứu
Bắt đầu bằng cách tái hiện lỗi qua exe/syntax_suggest với ví dụ /tmp/bad.rb, sau đó so sánh đầu ra của nó với phiên bản đã xóa dấu phẩy ở cuối. Theo dõi đường đi của việc báo lỗi để xác định trường hợp này có thể nhận được chẩn đoán rõ ràng hơn ở đâu; hoàn thành khi ví dụ không hợp lệ báo cáo dấu phẩy ở cuối thay vì lỗi unexpected-colon gây nhầm lẫn.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
The error produced by this (invalid) code is confusing and not helpful:
def run_build_script(
workspace_dir: ARGV[0],
output_dir: ARGV[1],
cache_dir: ARGV[2],
stack: ENV.fetch("STACK"),
ruby_version: ENV.fetch("STACK"),
io: STDOUT,
)
end
$ exe/syntax_suggest /tmp/bad.rb
--> /tmp/bad.rb
syntax error, unexpected ':', expecting end-of-input
1 def run_build_script(
> 2 workspace_dir: ARGV[0],
> 3 output_dir: ARGV[1],
> 4 cache_dir: ARGV[2],
> 5 stack: ENV.fetch("STACK"),
> 6 ruby_version: ENV.fetch("STACK"),
> 7 io: STDOUT,
8 )
The problem is that there's a trailing comma. This code works (when you remove the comma after STDOUT):
$ cat /tmp/bad.rb
def run_build_script(
workspace_dir: ARGV[0],
output_dir: ARGV[1],
cache_dir: ARGV[2],
stack: ENV.fetch("STACK"),
ruby_version: ENV.fetch("STACK"),
io: STDOUT
)
end
$ exe/syntax_suggest /tmp/bad.rb
Syntax OK
Fix Idea(s)
I'm not sure how to approach this. Possibly we could check for some variation of this regex https://rubular.com/r/aocG0GtGFjEiG2 as a brute force check. There may be a more elegant option.
Sidebar: I would love to see trailing commas allowed in method definitions. I think adding this behavior is an issue for positional args as you want that feedback that your airity is off. Idea: Allow it if and only if the method ends in a kwarg (instead of a positional arg). I don't know if it's been discussed or not.
- Ngôn ngữ chính
- Ruby
- Star
- 350
- Fork
- 17
- Merge trung bình
- 48 phút
- Pull request đã merge (30 ngày)
- 5
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- 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.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của ruby/syntax_suggest
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 38/100
ruby/syntax_suggest#258 · 6 bình luận ·
-
Accidental if instead of a block Đang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 30/100
ruby/syntax_suggest#206 ·
-
RSpec won't use syntax_suggest Đang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
ruby/syntax_suggest#171 · 3 bình luận ·
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 20/100
ruby/syntax_suggest#118 · 3 bình luận ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 45/100
ruby/syntax_suggest#109 · 1 bình luận ·
Tất cả issue của ruby/syntax_suggest
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
-
bug
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
riscv/riscv-unified-db#2626 ·
-
Component: GLib
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
-
ds-drift
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
we-promise/sure#3693 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
simp/pupmod-simp-simp#395 ·