
Issue #20966 has been updated by alanwu (Alan Wu). Status changed from Open to Rejected `+"\x1f\x8b".force_encoding("BINARY")` is parsed as `+( "\x1f\x8b".force_encoding("BINARY") )` and the warning is coming from `force_encoding`. Try `(+"\x1f\x8b").force_encoding("BINARY")` or `"\x1f\x8b".+@().force_encoding("BINARY")`. A way to see the order is with ruby/debug: ```shell $ rdbg -e 'trace call' -e 'c' test.rb [1, 2] in test.rb => 1| Warning[:deprecated] = true 2| _ = +"a".force_encoding("BINARY") =>#0 <main> at test.rb:1 (rdbg:commands) trace call Enable CallTracer (enabled) (rdbg:commands) c DEBUGGER (trace/call) #th:1 #depth:2 > Warning.[]= at test.rb:1 DEBUGGER (trace/call) #th:1 #depth:2 < Warning.[]= #=> true at test.rb:1 DEBUGGER (trace/call) #th:1 #depth:2 > String#force_encoding at test.rb:2 DEBUGGER (trace/call) #th:1 #depth:3 > Warning#warn at test.rb:2 test.rb:2: warning: literal string will be frozen in the future (run with --debug-frozen-string-literal for more information) DEBUGGER (trace/call) #th:1 #depth:3 < Warning#warn #=> nil at test.rb:2 DEBUGGER (trace/call) #th:1 #depth:2 < String#force_encoding #=> "a" at test.rb:2 DEBUGGER (trace/call) #th:1 #depth:2 > String#+@ at test.rb:2 DEBUGGER (trace/call) #th:1 #depth:2 < String#+@ #=> "a" at test.rb:2 ``` ---------------------------------------- Bug #20966: Unary plus String warns about freezing https://bugs.ruby-lang.org/issues/20966#change-111073 * Author: getajobmike (Mike Perham) * Status: Rejected * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- ``` /Users/mperham/src/sidekiq/test/profiling_test.rb:49: warning: literal string will be frozen in the future (run with --debug-frozen-string-literal for more information) ``` -- https://bugs.ruby-lang.org/