From: "Eregon (Benoit Daloze) via ruby-core" Date: 2024-09-15T10:25:26+00:00 Subject: [ruby-core:119196] [Ruby master Bug#20736] prism emits wrong warnings in syntax-error code Issue #20736 has been updated by Eregon (Benoit Daloze). I think good error recovery is key to have helpful error messages when writing Ruby code. Maybe one way here is to not show warnings if there are any errors? OTOH I think it is not a big usability problem, warnings appear first and the separation between warnings and errors is clear in the output. (and parse.y also shows both warnings and errors when there are both, as shown above) > However, I am not sure about the benefit, given the such confusing warnings. These are very synthetic examples in test. What matters is how helpful is the output for code (with errors) that users would write. So I think setting $VERBOSE to nil in these tests is the right fix. It's also what is done e.g. [here](https://github.com/ruby/rdoc/blob/964a1982c8387881a61fc7855a3b999ffdc191b6/lib/rdoc/markup/to_html.rb#L434-L443). > If other problems arise, we should stop error recovery in the interpreter. Let's not jump to such conclusions because some synthetic code in a test emits some confusing output, that code is confusing in the first place. Instead, I propose we evaluate based on code written by humans and not generated by tests. ---------------------------------------- Bug #20736: prism emits wrong warnings in syntax-error code https://bugs.ruby-lang.org/issues/20736#change-109780 * Author: mame (Yusuke Endoh) * Status: Feedback * Assignee: kddnewton (Kevin Newton) * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- ``` $ ./local/bin/ruby -w --parser=parse.y -e 'begin eval("0a"); rescue SyntaxError; end' $ ./local/bin/ruby -w --parser=prism -e 'begin eval("0a"); rescue SyntaxError; end' (eval at -e:1):1: warning: possibly useless use of a literal in void context ``` ``` $ ./local/bin/ruby -w --parser=parse.y -e 'begin eval("+a.0"); rescue SyntaxError; end' $ ./local/bin/ruby -w --parser=prism -e 'begin eval("+a.0"); rescue SyntaxError; end' (eval at -e:1):1: warning: possibly useless use of +@ in void context ``` -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/