From: Alan Mackenzie <acm@muc.de>
To: Michael Heerdegen <michael_heerdegen@web.de>
Cc: emacs-devel@gnu.org
Subject: Re: Thoughts on getting correct line numbers in the byte compiler's warning messages
Date: Thu, 8 Nov 2018 11:07:23 +0000 [thread overview]
Message-ID: <20181108110723.GA5041@ACM> (raw)
In-Reply-To: <87efbwuqek.fsf@web.de>
Hello, Michael.
On Thu, Nov 08, 2018 at 05:47:15 +0100, Michael Heerdegen wrote:
> Alan Mackenzie <acm@muc.de> writes:
> > The third idea is to amend the reader so that whereas it now produces a
> > form, in a byte compiler special mode, it would produce the cons (form .
> > offset). So, for example, the text "(not a)" currently gets read into
> > the form (not . (a . nil)). The amended reader would produce (((not . 1)
> > . ((a . 5) . (nil . 6))) . 0) (where 0, 1, 5, and 6 are the textual
> > offsets of the elements coded).
> BTW, an amended version of `read' might be beneficial for other stuff,
> too. When I designed el-search, I wanted something like that.
As it turned out, the above scheme would not be useful, because a macro
could not manipulate such a form.
The ideas are currently in flux, in a discussion between Stefan and me,
and we've come up with several ideas, all bad. ;-) We're currently
trying to select the least bad idea.
> I'm not sure which kind of position info data I would like to have. I
> think it would be good to have additionally starting positions of
> conses, for example.
I came up with a way of doing this, using the spare value of Lisp_Type
in a Lisp_Object to indicate an indirection to a structure of two
Lisp_Objects. The first would be the actual object, the second would be
position information.
The trouble with this is it would slow down Emacs performance
significantly (possibly as much as ~10%). It would also be difficult to
implement, since at each transformation of the form being compiled,
position information would need to be copied to the new version of form.
Stefan's latest suggestion is to use the above approach just on symbol
occurrences. (Sorry!). These are preserved through transformations
much more than cons cells are. Also, the existing approach in the
compiler only tracks symbol occurrences, so we will not lose anything by
tracking only symbols, but more accurately.
Even so, this will be a lot of work.
If some code wants to get the starting position of a cons, the source
code will surely be in a buffer somewhere. As long as there is a symbol
in the cons (i.e., we don't have ()), surely the cons position can be
found from the contained symbol, together with backward-up-list in the
source buffer. Or something like that.
> Michael.
--
Alan Mackenzie (Nuremberg, Germany).
next prev parent reply other threads:[~2018-11-08 11:07 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-01 17:59 Thoughts on getting correct line numbers in the byte compiler's warning messages Alan Mackenzie
2018-11-01 22:45 ` Stefan Monnier
2018-11-05 10:53 ` Alan Mackenzie
2018-11-05 15:57 ` Eli Zaretskii
2018-11-05 16:51 ` Alan Mackenzie
2018-11-06 4:34 ` Herring, Davis
2018-11-06 8:53 ` Alan Mackenzie
2018-11-06 13:56 ` Stefan Monnier
2018-11-06 15:11 ` Alan Mackenzie
2018-11-06 16:29 ` Stefan Monnier
2018-11-06 19:15 ` Alan Mackenzie
2018-11-06 20:04 ` Stefan Monnier
2018-11-07 12:35 ` Alan Mackenzie
2018-11-07 17:11 ` Stefan Monnier
2018-11-07 17:00 ` Alan Mackenzie
2018-11-07 17:25 ` Stefan Monnier
2018-11-07 18:47 ` Alan Mackenzie
2018-11-07 19:12 ` Stefan Monnier
2018-11-08 14:08 ` Alan Mackenzie
2018-11-08 17:02 ` Stefan Monnier
2018-11-08 22:13 ` Alan Mackenzie
2018-11-11 12:59 ` Alan Mackenzie
2018-11-11 15:53 ` Eli Zaretskii
2018-11-11 20:12 ` Alan Mackenzie
2018-11-11 20:47 ` Stefan Monnier
2018-11-12 3:30 ` Eli Zaretskii
2018-11-12 16:19 ` Eli Zaretskii
2018-11-12 14:16 ` Alan Mackenzie
2018-11-12 15:44 ` Alan Mackenzie
2018-11-12 20:36 ` Stefan Monnier
2018-11-12 21:35 ` Alan Mackenzie
2018-11-14 13:34 ` Stefan Monnier
2018-11-15 16:32 ` Alan Mackenzie
2018-11-15 18:01 ` Stefan Monnier
2018-11-16 14:14 ` Alan Mackenzie
2018-11-08 4:47 ` Michael Heerdegen
2018-11-08 11:07 ` Alan Mackenzie [this message]
2018-11-09 2:06 ` Michael Heerdegen
2018-11-10 10:59 ` Alan Mackenzie
2018-11-10 13:20 ` Stefan Monnier
2018-11-11 7:56 ` Michael Heerdegen
2018-11-08 13:45 ` Stefan Monnier
2018-11-09 3:06 ` Michael Heerdegen
2018-11-09 16:15 ` Stefan Monnier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181108110723.GA5041@ACM \
--to=acm@muc.de \
--cc=emacs-devel@gnu.org \
--cc=michael_heerdegen@web.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).