<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2017-04-21 23:05 GMT+02:00 Nicolas Cellier <span dir="ltr"><<a href="mailto:nicolas.cellier.aka.nice@gmail.com" target="_blank">nicolas.cellier.aka.nice@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div>I see more than 1000 senders but most of them are in the style 1 to: ...<br></div>If any of receiver or 1st arg is a LiteralNode, no need to analyze, so it should be possible to write a small analyzer to select non trivial cases and review manually. Something like:<br><br>SystemNavigation default<br>    browseMessageList: ((SystemNavigation default allCallsOn: #to:do:) select: [:e |<br>        | ast found |<br>        ast := e actualClass newParser parse: e sourceCode class: e actualClass.<br>        found := nil.<br>        ast accept: (ParseNodeEnumerator<br>            ofBlock: [:node | ((node isKindOf: MessageNode)<br>                    and: [node selector key = #to:do:<br>                    and: [node receiver isLiteralNode not<br>                    and: [node arguments first isLiteralNode not]]])<br>                ifTrue: [found := node]]).<br>        found notNil])<br>    name: 'complex senders of to:do:'<br>    autoSelect: true.<br><br>Above script did not find any complex senders though I see some, so I must have screwed something, but you get the idea.<br><br></div>Then there is the case of to:by:do: to analyze too.<br><div><br></div></div></blockquote><div><br>Ah, my script failed because to:do: is transformed at this stage (disguised in #to:by:do:)...<br><br>SystemNavigation default<br>    browseMessageList: ((SystemNavigation default allCallsOn: #to:do:) select: [:e |<br>        | ast found |<br>        ast := e actualClass newParser parse: e sourceCode class: e actualClass.<br>        found := nil.<br>        ast accept: (ParseNodeEnumerator<br>            ofBlock: [:node | ((node isKindOf: MessageNode)<br>                    and: [(node selector key = #to:do: or: [node selector key = #to:by:do: ])<br>                    and: [node receiver isLiteralNode not<br>                    and: [node arguments first isLiteralNode not]]])<br>                ifTrue: [found := node]]).<br>        found notNil])<br>    name: 'complex senders of to:do:'<br>    autoSelect: #to:do:<br> <br></div><div>But I can't test other trivial cases when node arguments first isVariableNode, because it allways is after transform.<br></div><div>It would be necessary to disable transform during analysis...<br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div></div></div><div class="gmail-HOEnZb"><div class="gmail-h5"><div class="gmail_extra"><br><div class="gmail_quote">2017-04-21 16:08 GMT+02:00 Bert Freudenberg <span dir="ltr"><<a href="mailto:bert@freudenbergs.de" target="_blank">bert@freudenbergs.de</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><span><div class="gmail_extra"><div class="gmail_quote">On Fri, Apr 21, 2017 at 1:56 AM, Eliot Miranda <span dir="ltr"><<a href="mailto:eliot.miranda@gmail.com" target="_blank">eliot.miranda@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>On the order of evaluation bug, does anyone have any memory of which methods depended on this bug?</div></div></div></div></blockquote></div><br></div></span><div class="gmail_extra">No idea ...</div><span class="gmail-m_-5634244986683606228HOEnZb"><font color="#888888"><div class="gmail_extra"><div><br></div><div>- Bert -</div></div></font></span></div>
<br><br>
<br></blockquote></div><br></div>
</div></div></blockquote></div><br></div></div>