[erlang-patches] Print column numbers when compiling

Anthony Ramine n.oxyde@REDACTED
Wed Oct 24 08:07:55 CEST 2012


Hi,

It is mentioned in the OTP roadmap that column numbers won't be an option, should I rewrite my patch to take care of this or have you already done it? Is the line-only code path to be removed from erl_scan too?

I continued this patch to make erlc able to issue error diagnostics like how clang does (parse-ranges branch on my repos), would you be interested by this? This branch handles end locations in erl_scan and parse ranges in erl_parse and epp; the two things that remain are macro expansions tracking and obviously the use of these informations in the compiler output.

Regards,

-- 
Anthony Ramine

Le 19 sept. 2012 à 19:28, Anthony Ramine <n.oxyde@REDACTED> a écrit :

> 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 <henrik@REDACTED> 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
>>>>>>>>> erlang-patches@REDACTED
>>>>>>>>> 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