<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Standard Section 3.4.4<div class=""><br class=""></div><div class="">
                
        
        
                <div class="page" title="Page 22">
                        <div class="layoutArea">
                                <div class="column"><p class=""><span style="font-size: 10.000000pt; font-family: 'ArialMT'" class="">"It is erroneous if the same identifier is used for more than one <block argument> of a individual
<block constructor>. It is erroneous for any one of the reserved identifiers ('nil', 'true', 'false', 'self'
and 'super') to be used as a <block argument>. It is erroneous if the same identifier is used both
as a <block argument> and also appears in the <temporaries> of a single <block constructor>. An
identifier that is used as a <block argument> is called a </span><span style="font-size: 10.000000pt; font-family: 'Arial'; font-style: italic" class="">block argument name</span><span style="font-size: 10.000000pt; font-family: 'ArialMT'" class="">. An identifier that
appears in the <temporaries> of a <block constructor> is called a </span><span style="font-size: 10.000000pt; font-family: 'Arial'; font-style: italic" class="">block temporary variable name</span><span style="font-size: 10.000000pt; font-family: 'ArialMT'" class="">." </span></p>
                                </div>
                        </div>
                </div><div>According to the standard it is *erroneous* to shadow these reserved words in *any* scope.</div><div><br class=""></div><div><blockquote type="cite" class=""><div class="">On Jul 18, 2019, at 10:15 PM, Frank Shearar <<a href="mailto:frank.shearar@gmail.com" class="">frank.shearar@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="auto" class="">The snippet from the standard says that it is illegal to use these identifiers as method arguments. The example uses block arguments.<div dir="auto" class=""><br class=""></div><div dir="auto" class="">Now maybe a reasonable person would assume that argument names, regardless of whether method or block (especially if one views blocks as anonymous methods), come from the same set, and maybe it seems like a terrible idea to allow this kind of shadowing,  but I don't see the current behaviour as incompatible with the standard snippet.</div><div dir="auto" class=""><br class=""></div><div dir="auto" class="">So sure, forbid such shadowing because it's terrible, but I don't see it being ILLEGAL.</div><div dir="auto" class=""><div dir="auto" class=""><br class=""></div><div dir="auto" class="">frank</div></div></div><br class=""><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu., Jul. 18, 2019, 18:26 JOHN SARKELA via Squeak-dev, <<a href="mailto:squeak-dev@lists.squeakfoundation.org" target="_blank" rel="noreferrer" class="">squeak-dev@lists.squeakfoundation.org</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word;line-break:after-white-space" class=""><div style="word-wrap:break-word;line-break:after-white-space" class="">It is by definition erroneous. It is counter to the definition of the standard language. That is a problem that should be fixed.<br class=""><div class=""><br class=""><blockquote type="cite" class=""><div class="">On Jul 18, 2019, at 7:53 PM, Nicolas Cellier <<a href="mailto:nicolas.cellier.aka.nice@gmail.com" rel="noreferrer noreferrer" target="_blank" class="">nicolas.cellier.aka.nice@gmail.com</a>> wrote:</div><br class="m_8012151042661541792m_6714587235991067858Apple-interchange-newline"><div class=""><div dir="auto" class="">Is it really a problem?<div dir="auto" class="">Did the system horribly break?</div><div dir="auto" class="">IMO this should just be not recommended.</div></div><br class=""><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le ven. 19 juil. 2019 à 00:39, Chris Muller <<a href="mailto:asqueaker@gmail.com" rel="noreferrer noreferrer" target="_blank" class="">asqueaker@gmail.com</a>> a écrit :<br class=""></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="">Wow.  We should disallow that.  Those words are reserved.</div><br class=""><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jul 17, 2019 at 5:52 AM Levente Uzonyi <<a href="mailto:leves@caesar.elte.hu" rel="noreferrer noreferrer noreferrer" target="_blank" class="">leves@caesar.elte.hu</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi All,<br class="">
<br class="">
You can currently evaluate the following:<br class="">
<br class="">
[ :self :thisContext |<br class="">
        | nil super true false |<br class="">
        nil := 1.<br class="">
        super := 2.<br class="">
        true := 3.<br class="">
        false := 4.<br class="">
        self + thisContext = (nil + super + true + false) ] value: 4 value: 6<br class="">
<br class="">
Is this the expected behavior or should we disallow such oddities?<br class="">
<br class="">
Levente<br class="">
<br class="">
</blockquote></div>
<br class="">
</blockquote></div>
<br class=""></div></blockquote></div><br class=""></div></div><br class="">
</blockquote></div>
</div></blockquote></div><br class=""></div></body></html>