1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-29 19:30:36 +02:00
guile/module/system/base
Michael Käppler 80d4055e42
Fix error messages containing format strings
The builtin primitive procedure `error` takes an optional message and
a list of arguments to include into the error message.
These args are formatted with `~S` and appended to the error message, so
that an example call of

`(error "Wrong argument: " 42)`

results in the output

"Wrong argument: 42"

If format strings occur in the message itself, however, they are
escaped. Thus a call like

`(error "Wrong argument: ~a" 42)`

is rendered as

"Wrong argument: ~a 42"

Some callers did not take this behavior into account, leading to
confusing error messages.
Changing the behavior of `error` to be
both backwards-compatible and accept also format strings inside messages
is not straightforward, because it would have to handle escaped `~`
characters as well. Therefore, fix `error` call sites using format
strings to use `format` before calling out to `error`.

The following files are affected:

* module/ice-9/format.scm (format)
* module/ice-9/r6rs-libraries.scm (resolve-r6rs-interface)
* module/oop/goops.scm (make)
* module/srfi/srfi-37.scm (Comment at the beginning of file)
* module/system/base/compile.scm (call-once)
* module/system/repl/command.scm (break, tracepoint)
* module/system/repl/common.scm (repl-default-options)
* module/system/vm/traps.scm (arg-check, trap-at-source-location)

There are a couple of further call sites that were left unchanged,
either because they are using their own `error` procedure:

* module/ice-9/read.scm
* module/ice-9/command-line.scm

or are not referenced from other modules:

* module/system/base/lalr.upstream.scm:
* module/sxml/upstream/assert.scm:
* module/sxml/sxml-match.ss:

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2024-05-06 11:51:53 +02:00
..
types Minor tweak to truncate-bits 2021-05-10 10:07:12 +02:00
ck.scm Improve error for set-fields paths leading to different types. 2012-11-10 01:37:20 -05:00
compile.scm Fix error messages containing format strings 2024-05-06 11:51:53 +02:00
lalr.scm add source-location->source-properties to lalr 2010-11-18 12:31:28 +01:00
lalr.upstream.scm Update (system base lalr) from upstream. 2014-12-02 21:25:56 +01:00
language.scm Add compiler chooser implementation; fix bugs with previous commit 2020-05-08 22:56:37 +02:00
message.scm Add -Wunused-module. 2023-02-24 16:49:00 +01:00
optimize.scm New optimization: demux-lambda 2024-03-13 13:11:14 +01:00
pmatch.scm pmatch: always wrap with let, even if the expression appears atomic 2012-03-01 16:16:27 -05:00
syntax.scm make-record-type does more validation on the fields 2019-10-23 14:42:29 +02:00
target.scm (system base target) doesn't load (system foreign) 2024-03-17 21:40:58 +01:00
types.scm Remove unnecessary module imports. 2023-02-24 16:49:00 +01:00