From: "tenderlovemaking (Aaron Patterson) via ruby-core" Date: 2024-12-10T17:02:02+00:00 Subject: [ruby-core:120166] [Ruby master Bug#20938] Percent String literal delimiter impacts string contents with parse.y Issue #20938 has been updated by tenderlovemaking (Aaron Patterson). nobu (Nobuyoshi Nakada) wrote in #note-3: > Prism seems to cut the string content out, then convert EOLs. > > The conversion of EOL is lower layer than parsing, so the result of "program1" should be "1_" without "\n". Sorry, I don't understand. Can you explain more? Why does EOL conversion impact `program1` but not `program2`? ---------------------------------------- Bug #20938: Percent String literal delimiter impacts string contents with parse.y https://bugs.ruby-lang.org/issues/20938#change-110924 * Author: eightbitraptor (Matt V-H) * Status: Assigned * Assignee: prism * ruby -v: ruby 3.4.0dev (2024-11-28T09:19:02Z master 31a3e87777) +PRISM +GC [arm64-darwin24] * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- The following code defines 2 programs that declare string literals using `%` and a single byte delimiter. I'd expect these programs to have the same output no matter which delimiter is used. With Prism, both programs output the same value (the string content: `1_\n`), but using parse.y the output values differ depending on the delimiter. Are the outputs supposed to be the same or different? ``` program1 = "%\n1_\r\n\n" # => parse.y: 1_, prism: "1_\n" program2 = "%'1_\r\n'" # => "1_\n" p eval(program1) p eval(program2) ``` [[Github Issue]](https://github.com/ruby/prism/pull/3290) -- 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/