From: "João Távora" <joaotavora@gmail.com>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: emacs-devel@gnu.org
Subject: Re: Attaching context info to an error
Date: Fri, 29 Dec 2023 03:43:54 +0000 [thread overview]
Message-ID: <CALDnm51KOSf5jxSK2kTyXXZd6oFJedeW=xqzdgWALfjzZ0kpTA@mail.gmail.com> (raw)
In-Reply-To: <jwvbka9en4b.fsf-monnier+emacs@gnu.org>
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?
>
> 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.
João
next prev parent reply other threads:[~2023-12-29 3:43 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 [this message]
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
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='CALDnm51KOSf5jxSK2kTyXXZd6oFJedeW=xqzdgWALfjzZ0kpTA@mail.gmail.com' \
--to=joaotavora@gmail.com \
--cc=emacs-devel@gnu.org \
--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).