log-message: make data argument optional
The intent was never for the data argument to be optional, but a mistake in traditional Racket's argument dispatch for `log-message` made it optional in some cases, so the simplest way forward is to make it consistently optional. Repair traditional Racket to use `#f` instead of a random value when the data argument is not provided.
This commit is contained in:
parent
d71d68e72a
commit
29ad80905e
|
@ -12,7 +12,7 @@
|
|||
|
||||
(define collection 'multi)
|
||||
|
||||
(define version "7.2.0.6")
|
||||
(define version "7.2.0.7")
|
||||
|
||||
(define deps `("racket-lib"
|
||||
["racket" #:version ,version]))
|
||||
|
|
|
@ -160,7 +160,7 @@ is evaluated.
|
|||
[level log-level/c]
|
||||
[topic (or/c symbol? #f) (logger-name logger)]
|
||||
[message string?]
|
||||
[data any/c]
|
||||
[data any/c #f]
|
||||
[prefix-message? any/c #t])
|
||||
void?]{
|
||||
|
||||
|
@ -174,7 +174,8 @@ addition, if @racket[topic] and @racket[prefix-message?] are not
|
|||
@racket[#f], then @racket[message] is prefixed with the topic followed
|
||||
by @racket[": "] before it is sent to receivers.
|
||||
|
||||
@history[#:changed "6.0.1.10" @elem{Added the @racket[prefix-message?] argument.}]}
|
||||
@history[#:changed "6.0.1.10" @elem{Added the @racket[prefix-message?] argument.}
|
||||
#:changed "7.2.0.7" @elem{Made the @racket[data] argument optional.}]}
|
||||
|
||||
|
||||
@defproc[(log-level? [logger logger?]
|
||||
|
|
|
@ -319,6 +319,21 @@
|
|||
exn:fail:contract?
|
||||
#rx"define-logger: contract violation.+expected: \\(or/c logger\\? #f\\).+given: 'not-a-logger")
|
||||
|
||||
; --------------------
|
||||
;; optional data for `log-message`
|
||||
|
||||
(let ()
|
||||
(define logger (make-logger))
|
||||
(define m (make-log-receiver logger 'error))
|
||||
(log-message logger 'error 'whatever "hi")
|
||||
(test '#(error "whatever: hi" #f whatever) sync m))
|
||||
|
||||
(let ()
|
||||
(define logger (make-logger))
|
||||
(define m (make-log-receiver logger 'error))
|
||||
(log-message logger 'error "hi")
|
||||
(test '#(error "hi" #f #f) sync m))
|
||||
|
||||
; --------------------
|
||||
|
||||
(report-errs)
|
||||
|
|
|
@ -93,15 +93,26 @@
|
|||
(define/who log-message
|
||||
;; Complex dispatch based on number and whether third is a string:
|
||||
(case-lambda
|
||||
[(logger level message data)
|
||||
[(logger level message)
|
||||
(define topic (and (logger? logger) (logger-name logger)))
|
||||
(do-log-message who logger level topic message data #t)]
|
||||
(do-log-message who logger level topic message #f #t)]
|
||||
[(logger level topic/message message/data)
|
||||
(cond
|
||||
[(string? topic/message)
|
||||
(define topic (and (logger? logger) (logger-name logger)))
|
||||
(do-log-message who logger level topic topic/message message/data #t)]
|
||||
[(or (not topic/message) (symbol? topic/message))
|
||||
(do-log-message who logger level topic/message message/data #f #t)]
|
||||
[else
|
||||
(check who logger? logger)
|
||||
(check-level who level)
|
||||
(raise-argument-error who "(or/c string? symbol?)" topic/message)])]
|
||||
[(logger level topic/message message/data data/prefix?)
|
||||
(cond
|
||||
[(string? topic/message)
|
||||
(define topic (and (logger? logger) (logger-name logger)))
|
||||
(do-log-message who logger level topic topic/message message/data data/prefix?)]
|
||||
[(symbol? topic/message)
|
||||
[(or (not topic/message) (symbol? topic/message))
|
||||
(do-log-message who logger level topic/message message/data data/prefix? #t)]
|
||||
[else
|
||||
(check who logger? logger)
|
||||
|
|
|
@ -815,7 +815,7 @@ void scheme_init_error(Scheme_Startup_Env *env)
|
|||
ADD_NONCM_PRIM("make-logger", make_logger, 0, -1, env);
|
||||
ADD_NONCM_PRIM("make-log-receiver", make_log_reader, 2, -1, env);
|
||||
|
||||
ADD_PRIM_W_ARITY("log-message", log_message, 4, 6, env);
|
||||
ADD_PRIM_W_ARITY("log-message", log_message, 3, 6, env);
|
||||
ADD_FOLDING_PRIM("logger?", logger_p, 1, 1, 1, env);
|
||||
ADD_FOLDING_PRIM("logger-name", logger_name, 1, 1, 1, env);
|
||||
ADD_FOLDING_PRIM("log-receiver?", log_reader_p, 1, 1, 1, env);
|
||||
|
@ -4062,6 +4062,7 @@ log_message(int argc, Scheme_Object *argv[])
|
|||
Scheme_Logger *logger;
|
||||
Scheme_Object *bytes;
|
||||
Scheme_Object *name;
|
||||
Scheme_Object *data;
|
||||
int level, pos, pfx;
|
||||
|
||||
if (!SAME_TYPE(SCHEME_TYPE(argv[0]), scheme_logger_type))
|
||||
|
@ -4086,9 +4087,14 @@ log_message(int argc, Scheme_Object *argv[])
|
|||
pfx = SCHEME_TRUEP(argv[pos+1]);
|
||||
else
|
||||
pfx = 1;
|
||||
|
||||
if (pos >= argc)
|
||||
data = scheme_false;
|
||||
else
|
||||
data = argv[pos];
|
||||
|
||||
scheme_log_name_pfx_message(logger, level, name,
|
||||
SCHEME_BYTE_STR_VAL(bytes), SCHEME_BYTE_STRLEN_VAL(bytes), argv[pos],
|
||||
SCHEME_BYTE_STR_VAL(bytes), SCHEME_BYTE_STRLEN_VAL(bytes), data,
|
||||
pfx);
|
||||
|
||||
return scheme_void;
|
||||
|
|
|
@ -13,12 +13,12 @@
|
|||
consistently.)
|
||||
*/
|
||||
|
||||
#define MZSCHEME_VERSION "7.2.0.6"
|
||||
#define MZSCHEME_VERSION "7.2.0.7"
|
||||
|
||||
#define MZSCHEME_VERSION_X 7
|
||||
#define MZSCHEME_VERSION_Y 2
|
||||
#define MZSCHEME_VERSION_Z 0
|
||||
#define MZSCHEME_VERSION_W 6
|
||||
#define MZSCHEME_VERSION_W 7
|
||||
|
||||
#define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y)
|
||||
#define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)
|
||||
|
|
Loading…
Reference in New Issue
Block a user