[erlang-patches] Print column numbers when compiling

Anthony Ramine <>
Wed Sep 19 19:28:58 CEST 2012


Hi,

I've documented the 'file' attribute item in the branch's first commit and reordered some erl_scan commits;
please refetch.

--
Anthony Ramine

Le 19 sept. 2012 à 11:11, Henrik Nord a écrit :

> done
> On 09/14/2012 03:41 PM, Anthony Ramine wrote:
>> Hi,
>> 
>> I've rewritten the erl_lint_SUITE patch with less formatting changes so the diff is clearer; please refetch.
>> 
>> Regards,
>> 
>> --
>> Anthony Ramine
>> 
>> 
>> Le 13 sept. 2012 à 10:54, Henrik Nord a écrit :
>> 
>>> Refetched.
>>> 
>>> On 09/11/2012 12:13 PM, Anthony Ramine wrote:
>>>> Fixed, please refetch. Sorry for the inconvenience; I tried to remove every duplicate definition of erl_scan:error_info() and forgot to update the docs.
>>>> 
>>>> --
>>>> Anthony Ramine
>>>> 
>>>> 
>>>> 
>>>> 
>>>> Le 10 sept. 2012 à 16:02, Henrik Nord a écrit :
>>>> 
>>>>> build error
>>>>> 
>>>>> 
>>>>> 
>>>>> date=`date +"%B %e %Y"`; \
>>>>> 	xsltproc --output "../man6/stdlib.6" --stringparam company "Ericsson AB" --stringparam docgen "/ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen" --stringparam gendate "$date" --stringparam appname "stdlib" --stringparam appver "1.18.3" --xinclude -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd  -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd_man_entities /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/xsl/db_man.xsl stdlib_app.xml
>>>>> /usr/bin/install -c -m 644 ushell1.gif ../html/ushell1.gif
>>>>> /usr/bin/install -c -m 644 ushell2.gif ../html/ushell2.gif
>>>>> /usr/bin/install -c -m 644 ushell3.gif ../html/ushell3.gif
>>>>> date=`date +"%B %e %Y"`; \
>>>>> 	specs_file=`pwd`/../specs/specs_array.xml; \
>>>>> 	xsltproc --output "../man3/array.3" --stringparam company "Ericsson AB" --stringparam docgen "/ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen" --stringparam gendate "$date" --stringparam appname "stdlib" --stringparam appver "1.18.3" --stringparam specs_file "$specs_file" --xinclude -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd  -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd_man_entities /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/xsl/db_man.xsl array.xml
>>>>> date=`date +"%B %e %Y"`; \
>>>>> 	specs_file=`pwd`/../specs/specs_base64.xml; \
>>>>> 	xsltproc --output "../man3/base64.3" --stringparam company "Ericsson AB" --stringparam docgen "/ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen" --stringparam gendate "$date" --stringparam appname "stdlib" --stringparam appver "1.18.3" --stringparam specs_file "$specs_file" --xinclude -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd  -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd_man_entities /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/xsl/db_man.xsl base64.xml
>>>>> date=`date +"%B %e %Y"`; \
>>>>> 	specs_file=`pwd`/../specs/specs_beam_lib.xml; \
>>>>> 	xsltproc --output "../man3/beam_lib.3" --stringparam company "Ericsson AB" --stringparam docgen "/ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen" --stringparam gendate "$date" --stringparam appname "stdlib" --stringparam appver "1.18.3" --stringparam specs_file "$specs_file" --xinclude -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd  -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd_man_entities /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/xsl/db_man.xsl beam_lib.xml
>>>>> date=`date +"%B %e %Y"`; \
>>>>> 	specs_file=`pwd`/../specs/specs_binary.xml; \
>>>>> 	xsltproc --output "../man3/binary.3" --stringparam company "Ericsson AB" --stringparam docgen "/ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen" --stringparam gendate "$date" --stringparam appname "stdlib" --stringparam appver "1.18.3" --stringparam specs_file "$specs_file" --xinclude -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd  -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd_man_entities /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/xsl/db_man.xsl binary.xml
>>>>> date=`date +"%B %e %Y"`; \
>>>>> 	specs_file=`pwd`/../specs/specs_c.xml; \
>>>>> 	xsltproc --output "../man3/c.3" --stringparam company "Ericsson AB" --stringparam docgen "/ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen" --stringparam gendate "$date" --stringparam appname "stdlib" --stringparam appver "1.18.3" --stringparam specs_file "$specs_file" --xinclude -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd  -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd_man_entities /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/xsl/db_man.xsl c.xml
>>>>> date=`date +"%B %e %Y"`; \
>>>>> 	specs_file=`pwd`/../specs/specs_calendar.xml; \
>>>>> 	xsltproc --output "../man3/calendar.3" --stringparam company "Ericsson AB" --stringparam docgen "/ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen" --stringparam gendate "$date" --stringparam appname "stdlib" --stringparam appver "1.18.3" --stringparam specs_file "$specs_file" --xinclude -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd  -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd_man_entities /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/xsl/db_man.xsl calendar.xml
>>>>> date=`date +"%B %e %Y"`; \
>>>>> 	specs_file=`pwd`/../specs/specs_dets.xml; \
>>>>> 	xsltproc --output "../man3/dets.3" --stringparam company "Ericsson AB" --stringparam docgen "/ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen" --stringparam gendate "$date" --stringparam appname "stdlib" --stringparam appver "1.18.3" --stringparam specs_file "$specs_file" --xinclude -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd  -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd_man_entities /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/xsl/db_man.xsl dets.xml
>>>>> date=`date +"%B %e %Y"`; \
>>>>> 	specs_file=`pwd`/../specs/specs_dict.xml; \
>>>>> 	xsltproc --output "../man3/dict.3" --stringparam company "Ericsson AB" --stringparam docgen "/ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen" --stringparam gendate "$date" --stringparam appname "stdlib" --stringparam appver "1.18.3" --stringparam specs_file "$specs_file" --xinclude -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd  -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd_man_entities /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/xsl/db_man.xsl dict.xml
>>>>> date=`date +"%B %e %Y"`; \
>>>>> 	specs_file=`pwd`/../specs/specs_digraph.xml; \
>>>>> 	xsltproc --output "../man3/digraph.3" --stringparam company "Ericsson AB" --stringparam docgen "/ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen" --stringparam gendate "$date" --stringparam appname "stdlib" --stringparam appver "1.18.3" --stringparam specs_file "$specs_file" --xinclude -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd  -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd_man_entities /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/xsl/db_man.xsl digraph.xml
>>>>> date=`date +"%B %e %Y"`; \
>>>>> 	specs_file=`pwd`/../specs/specs_digraph_utils.xml; \
>>>>> 	xsltproc --output "../man3/digraph_utils.3" --stringparam company "Ericsson AB" --stringparam docgen "/ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen" --stringparam gendate "$date" --stringparam appname "stdlib" --stringparam appver "1.18.3" --stringparam specs_file "$specs_file" --xinclude -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd  -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd_man_entities /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/xsl/db_man.xsl digraph_utils.xml
>>>>> date=`date +"%B %e %Y"`; \
>>>>> 	specs_file=`pwd`/../specs/specs_epp.xml; \
>>>>> 	xsltproc --output "../man3/epp.3" --stringparam company "Ericsson AB" --stringparam docgen "/ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen" --stringparam gendate "$date" --stringparam appname "stdlib" --stringparam appver "1.18.3" --stringparam specs_file "$specs_file" --xinclude -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd  -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd_man_entities /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/xsl/db_man.xsl epp.xml
>>>>> date=`date +"%B %e %Y"`; \
>>>>> 	specs_file=`pwd`/../specs/specs_erl_eval.xml; \
>>>>> 	xsltproc --output "../man3/erl_eval.3" --stringparam company "Ericsson AB" --stringparam docgen "/ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen" --stringparam gendate "$date" --stringparam appname "stdlib" --stringparam appver "1.18.3" --stringparam specs_file "$specs_file" --xinclude -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd  -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd_man_entities /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/xsl/db_man.xsl erl_eval.xml
>>>>> date=`date +"%B %e %Y"`; \
>>>>> 	specs_file=`pwd`/../specs/specs_erl_expand_records.xml; \
>>>>> 	xsltproc --output "../man3/erl_expand_records.3" --stringparam company "Ericsson AB" --stringparam docgen "/ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen" --stringparam gendate "$date" --stringparam appname "stdlib" --stringparam appver "1.18.3" --stringparam specs_file "$specs_file" --xinclude -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd  -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd_man_entities /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/xsl/db_man.xsl erl_expand_records.xml
>>>>> date=`date +"%B %e %Y"`; \
>>>>> 	specs_file=`pwd`/../specs/specs_erl_id_trans.xml; \
>>>>> 	xsltproc --output "../man3/erl_id_trans.3" --stringparam company "Ericsson AB" --stringparam docgen "/ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen" --stringparam gendate "$date" --stringparam appname "stdlib" --stringparam appver "1.18.3" --stringparam specs_file "$specs_file" --xinclude -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd  -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd_man_entities /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/xsl/db_man.xsl erl_id_trans.xml
>>>>> date=`date +"%B %e %Y"`; \
>>>>> 	specs_file=`pwd`/../specs/specs_erl_internal.xml; \
>>>>> 	xsltproc --output "../man3/erl_internal.3" --stringparam company "Ericsson AB" --stringparam docgen "/ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen" --stringparam gendate "$date" --stringparam appname "stdlib" --stringparam appver "1.18.3" --stringparam specs_file "$specs_file" --xinclude -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd  -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd_man_entities /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/xsl/db_man.xsl erl_internal.xml
>>>>> date=`date +"%B %e %Y"`; \
>>>>> 	specs_file=`pwd`/../specs/specs_erl_lint.xml; \
>>>>> 	xsltproc --output "../man3/erl_lint.3" --stringparam company "Ericsson AB" --stringparam docgen "/ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen" --stringparam gendate "$date" --stringparam appname "stdlib" --stringparam appver "1.18.3" --stringparam specs_file "$specs_file" --xinclude -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd  -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd_man_entities /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/xsl/db_man.xsl erl_lint.xml
>>>>> date=`date +"%B %e %Y"`; \
>>>>> 	specs_file=`pwd`/../specs/specs_erl_parse.xml; \
>>>>> 	xsltproc --output "../man3/erl_parse.3" --stringparam company "Ericsson AB" --stringparam docgen "/ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen" --stringparam gendate "$date" --stringparam appname "stdlib" --stringparam appver "1.18.3" --stringparam specs_file "$specs_file" --xinclude -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd  -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd_man_entities /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/xsl/db_man.xsl erl_parse.xml
>>>>> date=`date +"%B %e %Y"`; \
>>>>> 	specs_file=`pwd`/../specs/specs_erl_pp.xml; \
>>>>> 	xsltproc --output "../man3/erl_pp.3" --stringparam company "Ericsson AB" --stringparam docgen "/ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen" --stringparam gendate "$date" --stringparam appname "stdlib" --stringparam appver "1.18.3" --stringparam specs_file "$specs_file" --xinclude -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd  -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd_man_entities /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/xsl/db_man.xsl erl_pp.xml
>>>>> date=`date +"%B %e %Y"`; \
>>>>> 	specs_file=`pwd`/../specs/specs_erl_scan.xml; \
>>>>> 	xsltproc --output "../man3/erl_scan.3" --stringparam company "Ericsson AB" --stringparam docgen "/ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen" --stringparam gendate "$date" --stringparam appname "stdlib" --stringparam appver "1.18.3" --stringparam specs_file "$specs_file" --xinclude -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd  -path /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/dtd_man_entities /ldisk/jenkins/jobs/compile-pu/workspace/lib/erl_docgen/priv/xsl/db_man.xsl erl_scan.xml
>>>>> 
>>>>>  Error in erl_parse:error_description: unknown type
>>>>> make[4]: *** [../man3/erl_parse.3] Error 10
>>>>> make[4]: *** Waiting for unfinished jobs....
>>>>> make[4]: Leaving directory `/ldisk/jenkins/jobs/compile-pu/workspace/lib/stdlib/doc/src'
>>>>> make[3]: *** [release_docs] Error 2
>>>>> make[3]: Leaving directory `/ldisk/jenkins/jobs/compile-pu/workspace/lib/stdlib/doc/src'
>>>>> make[2]: *** [release_docs] Error 2
>>>>> make[2]: Leaving directory `/ldisk/jenkins/jobs/compile-pu/workspace/lib/stdlib'
>>>>> make[1]: *** [release_docs] Error 2
>>>>> make[1]: Leaving directory `/ldisk/jenkins/jobs/compile-pu/workspace/lib'
>>>>> make: *** [release_docs] Error 2
>>>>> 
>>>>> On 09/09/2012 12:52 PM, Anthony Ramine wrote:
>>>>>> Hi,
>>>>>> 
>>>>>> I've rebased it against the latest maint branch. Please refetch.
>>>>>> 
>>>>>> On Wed, Sep 5, 2012 at 10:50 AM, Henrik Nord <> wrote:
>>>>>>> I would like you to rebase this on R15B02 after the release.
>>>>>>> /Henrik
>>>>>>> 
>>>>>>> On 09/02/2012 08:26 PM, Anthony Ramine wrote:
>>>>>>>> Hi,
>>>>>>>> 
>>>>>>>> Again, see responses inlined; please refetch.
>>>>>>>> 
>>>>>>>> Regards.
>>>>>>>> 
>>>>>>>> --
>>>>>>>> Anthony Ramine
>>>>>>>> 
>>>>>>>> Le 28 août 2012 à 15:28, Lukas Larsson a écrit :
>>>>>>>> 
>>>>>>>>> Hello,
>>>>>>>>> 
>>>>>>>>> See responses inlined.
>>>>>>>>> 
>>>>>>>>> Lukas
>>>>>>>>> 
>>>>>>>>> On 24/08/12 12:22, Anthony Ramine wrote:
>>>>>>>>>> Most OTP (at least erl_lint, erl_parse and syntax_tools) already knows
>>>>>>>>>> that locations can be a line or a line and a column; furthermore it is said
>>>>>>>>>> in erl_parse itself that one should always use get_line/1 and set_line/3
>>>>>>>>>> instead of depending on having an integer there.
>>>>>>>>> It does indeed say so inside the code of erl_parse. But all of the
>>>>>>>>> visible documentation (here[1] and here[2]) say that it is an integer. So if
>>>>>>>>> you have only read the documentation (which I assume most people only have)
>>>>>>>>> you would assume that it is an integer. That documentation has to be updated
>>>>>>>>> so that LINE can be either an integer() or a tuple(integer(),integer()), and
>>>>>>>>> a reference to use erl_parse:set/get_attribute to manipulate it safely.
>>>>>>>>> 
>>>>>>>>> The compiler should also be updated to use these API's, this includes
>>>>>>>>> the convention that a line number of -1 is used to say that something is
>>>>>>>>> compiler generated. To make sure that all uses of the non-api is eliminated,
>>>>>>>>> it might be a good idea to declare erl_scan:line as -opaque and let dialyzer
>>>>>>>>> search through the otp code for errors.
>>>>>>>>> 
>>>>>>>>> [1]: http://www.erlang.org/doc/apps/erts/absform.html
>>>>>>>>> [2]: http://www.erlang.org/doc/man/erl_scan.html#type-line
>>>>>>>> I replaced LINE by LOC in the first documentation you point to and I've
>>>>>>>> patched various type specs in erl_scan and erl_parse so they both use
>>>>>>>> location().
>>>>>>>> 
>>>>>>>> With regard to negative line numbers, it should be noted that
>>>>>>>> user-supplied -file attributes have their line numbers negated whereas as
>>>>>>>> you said in other modules like erl_lint and v3_core, compile-generated nodes
>>>>>>>> are the ones which lines are negated. Shouldn't the opposite be done in
>>>>>>>> epp's -file attributes handling?
>>>>>>>> 
>>>>>>>>>> If it is really that heavy of a change, why do we have
>>>>>>>>>> erl_scan:set_attribute/3 and erl_scan:attributes_info/{1,2}? They obviously
>>>>>>>>>> were coded to mitigate these issues.
>>>>>>>>> We have indeed been working on getting this to work before, but the
>>>>>>>>> effort was left as you see it now because there were a number of issues
>>>>>>>>> which needed solving and more important things got in the way. The reason
>>>>>>>>> why I say it is a heavy change is that we want to feel that a good effort
>>>>>>>>> has been made to make sure that all error and warning column numbers point
>>>>>>>>> to the correct position.
>>>>>>>> I've already added a 'file' item to these functions to improve the code
>>>>>>>> populating every node with the file from the -file attributes of the module
>>>>>>>> declaration in erl_lint; maybe another 'generated' item should be added to
>>>>>>>> replace the multiple neg_line and abs_line functions there are in some
>>>>>>>> compile-related modules?
>>>>>>>> 
>>>>>>>>>> Any parse transform that break because of this change will break
>>>>>>>>>> because it does AST manipulation wrong and their users will just have to not
>>>>>>>>>> use the "column" option for it to continue to work.
>>>>>>>>> Strictly speaking parse transform is also an experimental/undocumented
>>>>>>>>> feature of Erlang/OTP. But unfortunately a lot of people seem to use them,
>>>>>>>>> so we have to take some backwards compatibility into consideration. The
>>>>>>>>> closest thing to a documentation is the example found here
>>>>>>>>> lib/stdlib/example/erl_id_trans.erl, and that does not deal with line
>>>>>>>>> numbers at all.
>>>>>>>>> 
>>>>>>>>> We really really have to be sure that the fun2ms and qlc parse
>>>>>>>>> transforms work.
>>>>>>>> I've read through the code of various parse transforms this week and they
>>>>>>>> don't seem to make anything related to the transformed nodes' locations.
>>>>>>>> Most OTP-provided parse transforms are covered in the test suites I patched.
>>>>>>>> 
>>>>>>>> _______________________________________________
>>>>>>>> erlang-patches mailing list
>>>>>>>> 
>>>>>>>> http://erlang.org/mailman/listinfo/erlang-patches
>>>>>>> --
>>>>>>> /Henrik Nord Erlang/OTP
>>>>>>> 
>>>>> -- 
>>>>> /Henrik Nord Erlang/OTP
>>>>> 
>>> -- 
>>> /Henrik Nord Erlang/OTP
>>> 
> 
> -- 
> /Henrik Nord Erlang/OTP
> 



More information about the erlang-patches mailing list