From: Alan Mackenzie <acm@muc.de>
To: "João Távora" <joaotavora@gmail.com>
Cc: Stefan Monnier <monnier@iro.umontreal.ca>, emacs-devel@gnu.org
Subject: Re: Attaching context info to an error
Date: Fri, 29 Dec 2023 17:19:37 +0000 [thread overview]
Message-ID: <ZY7_qRdmwPdyMXlY@ACM> (raw)
In-Reply-To: <CALDnm51KOSf5jxSK2kTyXXZd6oFJedeW=xqzdgWALfjzZ0kpTA@mail.gmail.com>
Hello, João.
I'll admit I've not been following this thread closely, but, ...
On Fri, Dec 29, 2023 at 03:43:54 +0000, João Távora wrote:
> On Fri, Dec 29, 2023 at 2:55 AM Stefan Monnier <monnier@iro.umontreal.ca> wrote:
> > > What object exactly goes into the handler bind handlers?
> > The same (even `eq`) as the one passed to the `condition-case` handler.
> Would it matter if it weren't?
> > > Is it the funny cons?
> > Yup. That's ELisp's current notion of an "error object".
> > > Can we at least get some generic functions to hide that representation
> > > so that we can change it later on?
No, no, no. Please. (See below.)
> > Patch very welcome, yes (and this is orthogonal to `handler-bind`).
> What operations are typically requested from it?
> - Printing? a cl-print-object would be sufficient, I think,
> along with a (orthogonal) directive to 'format' for using
> cl-prin1 (why doesn't cl-princ exist?)
> - Getting the type for resignalling purposes? Unfortunately,
> this returns 'cons'
> (condition-case err (error "bla") (error (type-of err)))
> Can it be made to return error?
> - Can we import a typep (similar to cl-typep) that understands
> basic types EIEIO and also error hierarchy?
> - simple-condition-format-control and
> simple-condition-format-arguments?
> - change manual to explain that resignalling is discouraged now
> that handler-bind exists, but if resignalling _is_ done, then
> definitely avoid car and cdr and some form of
> (signal (error-symbol err) (error-data err)
> introducing these new functions?
> - go through the hierarchy and add <error-name>-<data-slot>
> accessors? Or do we already consider these details of "data" to
> to be hidden? If so, I think surely some violations exist,
> hopefully not many.
> They shouldn't be terribly hard to find. From some greps I
> estimate there less than 700 condition-case that actually use
> the variable and the majority seems to be resignalling or
> printing. The former will probably be fixed by
> handler-bind anyway, and printing is a generic operation
> already. I checked about 20 occurances randomly, and they
> all fell into this basket. This also tells me that switching
> to proper objects isn't that hard.
Talk about "generic functions" and "proper objects" makes me worried
indeed. The Emacs error handling must work fully right from early
bootstrap, i.e. when no Lisp has yet been loaded. The "proper object"
for this is a list, of defined structure. This is approximately what we
have at the moment. It would be useful to tighten up this definition.
> João
--
Alan Mackenzie (Nuremberg, Germany).
next prev parent reply other threads:[~2023-12-29 17:19 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-21 22:30 Attaching context info to an error Stefan Monnier
2023-12-22 6:50 ` Gerd Möllmann
2023-12-22 8:37 ` Gerd Möllmann
2023-12-22 15:58 ` Stefan Monnier
2023-12-28 6:57 ` Gerd Möllmann
2023-12-22 20:56 ` Jens Schmidt
2023-12-22 22:37 ` Stefan Monnier
2023-12-23 3:02 ` João Távora
2023-12-23 3:28 ` João Távora
2023-12-26 20:12 ` Stefan Monnier
2023-12-26 20:47 ` Stefan Monnier
2023-12-26 22:43 ` João Távora
2023-12-27 6:50 ` Gerd Möllmann
2023-12-27 10:29 ` João Távora
2023-12-27 10:35 ` Gerd Möllmann
2023-12-27 17:50 ` Stefan Monnier
2023-12-27 18:08 ` João Távora
2023-12-27 18:28 ` João Távora
2023-12-27 19:08 ` Stefan Monnier
2023-12-27 19:27 ` João Távora
2023-12-27 20:27 ` Stefan Monnier
2023-12-27 23:08 ` João Távora
2023-12-28 7:05 ` Stefan Monnier
2023-12-28 14:12 ` João Távora
2023-12-28 16:03 ` Stefan Monnier
2023-12-28 17:15 ` João Távora
2023-12-28 19:22 ` Stefan Monnier
2023-12-28 23:53 ` João Távora
2023-12-29 2:54 ` Stefan Monnier
2023-12-29 3:43 ` João Távora
2023-12-29 16:54 ` Stefan Monnier
2023-12-29 17:29 ` João Távora
2023-12-29 17:39 ` João Távora
2023-12-30 4:29 ` Stefan Monnier
2023-12-30 16:45 ` João Távora
2023-12-29 17:19 ` Alan Mackenzie [this message]
2023-12-29 17:24 ` João Távora
2023-12-29 17:43 ` Alan Mackenzie
2023-12-29 17:54 ` João Távora
2023-12-29 18:08 ` Alan Mackenzie
2023-12-29 18:45 ` João Távora
2023-12-29 18:35 ` Stefan Monnier
2023-12-29 18:48 ` João Távora
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=ZY7_qRdmwPdyMXlY@ACM \
--to=acm@muc.de \
--cc=emacs-devel@gnu.org \
--cc=joaotavora@gmail.com \
--cc=monnier@iro.umontreal.ca \
/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).