[erlang-patches] Print column numbers when compiling

Siri Hansen <>
Tue Oct 30 10:01:40 CET 2012


Hello Anthony - sorry for the delay! We are currently changing some
responsibilities inside the OTP team and have not yet decided who is to
follow up on this. We will get back to you as soon as the responsibilities
are settled. Thank you for your contribution, and now also for your
patience!!
Regards Siri

2012/10/29 Anthony Ramine <>

> Ping?
> --
> Anthony Ramine
>
>
> Le 24 oct. 2012 à 08:07, Anthony Ramine a écrit :
>
> > 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 <> 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 <>
> 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
> >>>
> >>
>
> _______________________________________________
> erlang-patches mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-patches
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-patches/attachments/20121030/2b382f3c/attachment-0001.html>


More information about the erlang-patches mailing list