Hi Lukas,<div><br></div><div> there's a problem with the current printOn:/storeOn: distinction in current Squeak. The issue is that within a literal Array all characters must be printed using the $ form, /not/ the Character message or (Character value: N) forms. e.g.</div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>#($ ) storeString => #(Character space)</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>(Compiler evaluate: #($ ) storeString) size => 2</div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>(Compiler evaluate: #($ ) storeString) = #(#Character #space) => true</div><div><br></div><div>In VisualWorks (7.7) the above works correctly (*)</div>
<div><br></div><div><div><span class="Apple-tab-span" style="white-space:pre">        </span>#($ ) storeString => #($ )</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>(Compiler evaluate: #($ ) storeString) size => 1</div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>(Compiler evaluate: #($ ) storeString) = #(#Character #space) => false</div></div><div><br></div><div>and works because Array asserts the "characters print literally" stream policy while printing literally.</div>
<div><br></div><div><br></div><div>I stumbled upon this looking at the decompiler tests, specifically of MethodPragmaTest>>testCompileCharacter:</div><div><div><span class="Apple-tab-span" style="white-space: pre; ">        </span>testCompileCharacter</div>
<div><span class="Apple-tab-span" style="white-space: pre; ">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>self assertPragma: 'foo: $a' givesKeyword: #foo: arguments: #( $a ).</div><div><span class="Apple-tab-span" style="white-space: pre; ">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>self assertPragma: 'foo: $ ' givesKeyword: #foo: arguments: #( $ ).</div>
</div><div><br></div><div>which decompiled shows as</div><div><div><span class="Apple-tab-span" style="white-space: pre; ">        </span>testCompileCharacter</div><div><span class="Apple-tab-span" style="white-space: pre; ">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>self</div>
<div><span class="Apple-tab-span" style="white-space: pre; ">        </span><span class="Apple-tab-span" style="white-space:pre">                </span>assertPragma: 'foo: $a'</div><div><span class="Apple-tab-span" style="white-space: pre; ">        </span><span class="Apple-tab-span" style="white-space:pre">                </span>givesKeyword: #foo:</div>
<div><span class="Apple-tab-span" style="white-space: pre; ">        </span><span class="Apple-tab-span" style="white-space:pre">                </span>arguments: #($a ).</div><div><span class="Apple-tab-span" style="white-space: pre; ">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>self</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space: pre; ">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>assertPragma: 'foo: $ '</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space: pre; ">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>givesKeyword: #foo:</div><div>
<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space: pre; ">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>arguments: #(Character space )</div>
</div><div><br></div><div><br></div><div><br></div><div>(*) but VW still has a bizarre def for printString, </div><div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>(Array with: Character space) printString '#(Core.Character space)'</div>
</div><div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>(Compiler evaluate: (Array with: Character space) printString) size => 2</div></div><div><br></div><div><br></div><div>best</div>
<div>Eliot</div>