<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On 25 Jul 2013, at 15:31, Kim Bruce wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; font-family: Calibri; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; ">If inside the body of an object/class definition, you write self.m and there is no m in the definition, then I would like the programmer to be warned about this.<span class="Apple-converted-space"> </span></span></blockquote></div><br><div>This is similar to what the Trellis "grass catcher" did — accumulated warnings.   The "green browser" * that Nathaniel developed for Traits took this idea further: it produced an ambient display, in the system browser, of all messages sent to self fro which there wee not yet any methods.   This was really useful, as it told the programmer what remained to be worked on.  Eventually, before the code was committed, every one of the required methods that remained needed to be turned into an indication that the method was intentionally missing (abstract, aka subclassResponsibility).</div><div><br></div><div>However, during development, having the list of required methods visible and automatically updated served as a "to do" list for the programmer.   Vitally important, however, was that such a list did not in any way stop the programmer from running tests on the methods that had already been written.  Of course, if a test provoked execution of a missing method, the test emitted an appropriate Error.</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">       </span>Andrew</div><div> </div><div>[*]  <span class="Apple-style-span" style="font-family: monospace; white-space: pre; ">@article{SchaRli:2004:BIP:2295362.2295408,</span></div><pre id="2295408" style="color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); position: static; z-index: auto; "> author = {Sch\"{a}rli, Nathanael and Black, Andrew P.},
 title = {A browser for incremental programming},
 journal = {Comput. Lang. Syst. Struct.},
 issue_date = {April, 2004},
 volume = {30},
 number = {1-2},
 month = apr,
 year = {2004},
 issn = {1477-8424},
 pages = {79--95},
 numpages = {17},
 url = {<a href="http://dx.doi.org/10.1016/j.cl.2003.09.004">http://dx.doi.org/10.1016/j.cl.2003.09.004</a>},
 doi = {10.1016/j.cl.2003.09.004},
 acmid = {2295408},
 publisher = {Elsevier Science Publishers B. V.},
 address = {Amsterdam, The Netherlands, The Netherlands},
 keywords = {Incremental programming, Intentional programming, Method reachability, Requires set, Smalltalk browser},

</pre><div><br></div></body></html>