<div>Hi,</div>
<div> </div>
<div>I don't think this is a good way to introduce declared atoms. </div>
<div> </div>
<div>We already have the -type and -spec notation for definition of</div>
<div>types and function signatures which are then used by Dialyzer for type checking.<br></div>
<div>I don't think we should introduce yet another notation that is not harmonized with -type and -spec.</div>
<div>It is already possible to declare atoms in -type and -spec. Why not use this already present notation and add</div>
<div>optional checking of atoms against declared atoms inside -type and -spec instead.</div>
<div> </div>
<div>With the suggested -atom declaration we will probably get the same atoms declared 2 times with different notations and I think that</div>
<div>will clutter down the code with redundant information to an unacceptable degree. </div>
<div> </div>
<div>/Kenneth, Erlang/OTP Ericsson<br></div>
<div class="gmail_quote">On Sun, Feb 5, 2012 at 10:15 PM, Richard Carlsson <span dir="ltr"><<a href="mailto:carlsson.richard@gmail.com">carlsson.richard@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="PADDING-LEFT:1ex;MARGIN:0px 0px 0px 0.8ex;BORDER-LEFT:#ccc 1px solid">Sorry, pressed send too soon in the last attempt. Here is the code:<br><br> git fetch git@github.com:richcarl/otp.<u></u>git warn-unknown-atom<br>
<br>Here is a suggested patch to the compiler, that I'm throwing out there as a request for comments. In any large code base, it can be hard to maintain atom hygiene - you may have hidden errors due to misspelled atoms, people may be adding atoms without much thought, and it can be hard to track which atoms are being used where and for what (e.g., atoms used for options, error indicators, message tags, callback module and function names, etc. This allows you to declare your atoms like so:<br>
<br> -atoms([foo, bar]).<br><br>You can have any number of such declarations, and an atom may occur multiple times and/or in different declarations - it's the union of known atoms that matters. Note that this declaration is backwards compatible; the current compiler will accept it as a generic attribute with no particular meaning.<br>
<br>If you specify the compiler option `warn_unused_atom' when compiling a module (you can put `-compile([warn_unused_atom]).<u></u>' in the module if you want to enable the checking in that module only), you will get a warning for each atom that has not been explicitly declared. The compiler knows about standard atoms such as `ok', `true', `false', `undefined' etc., and it does not check function and module names in calls, or record names and fields of records, since these are checked in other ways already.<br>
<br>I don't think this addition warrants an EEP, since it doesn't change the language as such; it only adds a backwards compatible feature to the compiler. However, I'd like to get some initial feedback before I bother to update the documentation and submit it as a full patch.<br>
<br>git@github.com:richcarl/otp.<u></u>git<br><br>  /Richard<br>______________________________<u></u>_________________<br>erlang-patches mailing list<br><a href="mailto:erlang-patches@erlang.org" target="_blank">erlang-patches@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-patches" target="_blank">http://erlang.org/mailman/<u></u>listinfo/erlang-patches</a><br></blockquote></div><br>