Issue #17104 has been updated by byroot (Jean Boussier). > I'd argue "a#{2}c" is not a string literal ("a2c" is a string literal). I understand your point of view. However in my view what defines a literal, is the use of a specific syntax, so `""` in this case. Same for hashes or arrays, `[1 + 2]` is a literal (to me), it might not be a "static" literal, but it is a literal nonetheless. ---------------------------------------- Feature #17104: Do not freeze interpolated strings when using frozen-string-literal https://bugs.ruby-lang.org/issues/17104#change-86958 * Author: bughit (bug hit) * Status: Open * Priority: Normal ---------------------------------------- ```rb #frozen_string_literal: true def foo(str) "#{str}" end fr1 = 'a' fr2 = 'a' fr1_1 = foo(fr1) fr2_1 = foo(fr2) puts fr1.__id__, fr2.__id__, fr1_1.__id__, fr2_1.__id__ puts fr1_1 << 'b' ``` Isn't the point of frozen literals to avoid needless allocations? But interpolated strings are allocated each time, so freezing appears pointless. -- https://bugs.ruby-lang.org/ Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>