[ruby-core:116790] [Ruby master Bug#20270] Options with `--parser=prism`
From:
"nobu (Nobuyoshi Nakada) via ruby-core" <ruby-core@...>
Date:
2024-02-16 05:50:21 UTC
List:
ruby-core #116790
Issue #20270 has been reported by nobu (Nobuyoshi Nakada).
----------------------------------------
Bug #20270: Options with `--parser=prism`
https://bugs.ruby-lang.org/issues/20270
* Author: nobu (Nobuyoshi Nakada)
* Status: Open
* Priority: Normal
* Backport: 3.0: DONTNEED, 3.1: DONTNEED, 3.2: DONTNEED, 3.3: REQUIRED
----------------------------------------
### `--dump` option
Currently `parsetree` and `prism_parsetree` bits are separated, but it seems meaningless as far as `--parser` option selects only one parser.
Why doesn't simply `--dump=parsetree` dump AST by parse.y, or PRISM AST if `--parser=prism` is given?
Actually, `ruby --dump=parsetree --parser=prism` just segfaults, because these bits and `--parser` option are separately handled.
### streaming code from stdin
```sh-session
$ echo end | ruby --parser=prism -
ruby: warning: The compiler based on the Prism parser is currently experimental and compatibility with the compiler based on parse.y is not yet complete. Please report any issues you find on the `ruby/prism` issue tracker.
-: warning: Prism support for streaming code from stdin is not currently supported
```
Nothing reported is fine, since it is not currently supported.
I was a bit curious that it looks like trying something after the warning.
```C
if (strcmp(opt->script, "-") == 0) {
int xflag = opt->xflag;
VALUE rb_source = open_load_file(opt->script_name, &xflag);
opt->xflag = xflag != 0;
rb_warn("Prism support for streaming code from stdin is not currently supported");
error = pm_parse_string(&result, rb_source, opt->script_name);
}
```
Note that `open_load_file` returns `rb_stdin` when `-` is given.
This object is a `RFile`, not a `RString`, and `RSTRING_PTR(rb_source)` accesses after the object boundary.
It should just bail out, not try obviously wrong thing.
### Fix
https://github.com/nobu/ruby/tree/options-refactor
--
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/postorius/lists/ruby-core.ml.ruby-lang.org/