<div dir="ltr">Heh... well ya broke my code!  I have a class side send to self pvtInitialize* which now results in 'Private instance initialization messages may only be sent to ''self new'' or "self basicNew" (by class instance creation methods)'  (i.e. self pvt* is valid instance *or* class side)</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jun 12, 2019 at 9:14 PM Juan Vuletich <<a href="mailto:juan@jvuletich.org">juan@jvuletich.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><u></u>

  
    
    
  
  <div bgcolor="#ffffff">
    The last bunch of updates done today enable sending `super
    pvtMessage`. I also added a new, related way for initializers. Now,
    an instance creation method can do 'self new pvtInitializeStuff' or
    'self basicNew pvtInitializeStuff', but no one else can call
    #pvtInitializeStuff. As a first example, I finally was able to make
    Point almost immutable. Please check it.<br>
    <br>
    Cheers,<br>
    <pre class="gmail-m_3946603279149095569moz-signature" cols="72">-- 
Juan Vuletich
<a class="gmail-m_3946603279149095569moz-txt-link-abbreviated" href="http://www.cuis-smalltalk.org" target="_blank">www.cuis-smalltalk.org</a>
<a class="gmail-m_3946603279149095569moz-txt-link-freetext" href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev" target="_blank">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev</a>
<a class="gmail-m_3946603279149095569moz-txt-link-freetext" href="https://github.com/jvuletich" target="_blank">https://github.com/jvuletich</a>
<a class="gmail-m_3946603279149095569moz-txt-link-freetext" href="https://www.linkedin.com/in/juan-vuletich-75611b3" target="_blank">https://www.linkedin.com/in/juan-vuletich-75611b3</a>
@JuanVuletich</pre>
    <br>
    On 6/11/2019 2:43 PM, Phil B wrote:
    <blockquote type="cite">
      <div dir="ltr">
        <div dir="ltr">Ah, then count me as a firm 'yes' vote!  I've
          been in favor of that forever as I agree making things
          explicitly pvt* removes any possible misinterpretation.  The
          only problem is that many (most?) the senders of those set*
          methods tend to come from class-side so pvt* visibility would
          have to extend there as well for this to work. (What I tend to
          do currently for those cases in my code currently is use a
          private* prefix.)</div>
        <br>
        <div class="gmail_quote">
          <div dir="ltr" class="gmail_attr">On Tue, Jun 11, 2019 at 1:28
            PM Juan Vuletich <<a href="mailto:juan@jvuletich.org" target="_blank">juan@jvuletich.org</a>>
            wrote:<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 bgcolor="#ffffff"> On 6/10/2019 8:15 PM, Phil B wrote:
              <blockquote type="cite">
                <div dir="ltr">
                  <div class="gmail_quote">
                    <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Why do you think
                      the #privateSetX:setY: looks silly?  I think it's
                      a decent placeholder that I read as saying 'we
                      really want this to be immutable and are
                      indicating this as private to reflect that fact
                      until we can actually make it immutable via the
                      VM' <br>
                    </blockquote>
                  </div>
                </div>
              </blockquote>
              <br>
              Because the comment begs you not to call it. If we just
              add the pvt prefix, then it is way more robust. You need
              to add a new method to set the ivars, and clearly you are
              on your own then.<br>
              <br>
              <blockquote type="cite">
                <div dir="ltr">
                  <div class="gmail_quote">
                    <div><br>
                    </div>
                    <div>Private categories are good for getting methods
                      out of the way in the main browser but I'm not
                      wild about them beyond that.  The main issue I
                      have with private categories is that they are so
                      easy to overlook in the browsers.  For example, if
                      you're in the message finder and you do a search
                      on 'set', the fact that it shows up as private*
                      makes it very clear that it's not a method you
                      should be using generally.  If the private prefix
                      were removed, you'd have to be sure to select an
                      implementor in the right pane (and hope that they
                      are consistently categorized) and then be sure to
                      look for the category buried in the method
                      annotation below (which might be 'private' or
                      'private - someSubCategory' etc)... ugh!  Or if
                      you see a raw selector (i.e. #setX:setY:) in code
                      now you have to do the above as opposed to just
                      looking at the selector name.</div>
                    <div><br>
                    </div>
                    <div>That said, if it really bugs you or others, I
                      will live without the prefix.  But I do find it
                      helpful.</div>
                    <div><br>
                    </div>
                    <div>Thanks,</div>
                    <div>Phil </div>
                  </div>
                </div>
              </blockquote>
              <br>
              I'm suggesting the opposite! To start adding the pvt
              prefix to methods we intend to be private (i.e. those
              already in a 'private*' category).<br>
              <br>
              Cheers,<br>
              <pre class="gmail-m_3946603279149095569gmail-m_7166279947383819097moz-signature" cols="72">-- 
Juan Vuletich
<a class="gmail-m_3946603279149095569gmail-m_7166279947383819097moz-txt-link-abbreviated" href="http://www.cuis-smalltalk.org" target="_blank">www.cuis-smalltalk.org</a>
<a class="gmail-m_3946603279149095569gmail-m_7166279947383819097moz-txt-link-freetext" href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev" target="_blank">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev</a>
<a class="gmail-m_3946603279149095569gmail-m_7166279947383819097moz-txt-link-freetext" href="https://github.com/jvuletich" target="_blank">https://github.com/jvuletich</a>
<a class="gmail-m_3946603279149095569gmail-m_7166279947383819097moz-txt-link-freetext" href="https://www.linkedin.com/in/juan-vuletich-75611b3" target="_blank">https://www.linkedin.com/in/juan-vuletich-75611b3</a>
@JuanVuletich</pre>
            </div>
          </blockquote>
        </div>
      </div>
    </blockquote>
    <br>
  </div>

</blockquote></div>