From: "nobu (Nobuyoshi Nakada) via ruby-core" Date: 2024-12-10T16:32:22+00:00 Subject: [ruby-core:120164] [Ruby master Bug#20938] Percent String literal delimiter impacts string contents with parse.y Issue #20938 has been updated by nobu (Nobuyoshi Nakada). 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". ---------------------------------------- Bug #20938: Percent String literal delimiter impacts string contents with parse.y https://bugs.ruby-lang.org/issues/20938#change-110922 * Author: eightbitraptor (Matt V-H) * Status: Open * 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/