From 69962ab7a8e07af77a2eb466be39615d139d5cf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 3 Jun 2019 23:00:42 +0200 Subject: deprecation: Use the 'warning' procedure for diagnostics. Until now, (guix deprecation) had its own warning mechanism, which was inconsistent (it did not use colors, etc.) * guix/deprecation.scm (deprecation-warning-port): Remove (source-properties->location-string): Remove. (warn-about-deprecation): Use 'warning' instead of 'format'. (define-deprecated, define-deprecated/alias): Adjust docstring. * guix/channels.scm (build-from-source): Refer to 'guix-warning-port' instead of 'deprecation-warning-port'. --- guix/deprecation.scm | 36 +++++++++++------------------------- 1 file changed, 11 insertions(+), 25 deletions(-) (limited to 'guix/deprecation.scm') diff --git a/guix/deprecation.scm b/guix/deprecation.scm index d704e7ec61..468b2e9b7b 100644 --- a/guix/deprecation.scm +++ b/guix/deprecation.scm @@ -18,40 +18,26 @@ (define-module (guix deprecation) #:use-module (guix i18n) - #:use-module (ice-9 format) + #:use-module (guix diagnostics) + #:autoload (guix utils) (source-properties->location) #:export (define-deprecated define-deprecated/alias - warn-about-deprecation - deprecation-warning-port)) + warn-about-deprecation)) ;;; Commentary: ;;; ;;; Provide a mechanism to mark bindings as deprecated. ;;; -;;; We don't reuse (guix ui) mostly to avoid pulling in too many things. -;;; ;;; Code: -(define deprecation-warning-port - ;; Port where deprecation warnings go. - (make-parameter (current-error-port))) - -(define (source-properties->location-string properties) - "Return a human-friendly, GNU-standard representation of PROPERTIES, a -source property alist." - (let ((file (assq-ref properties 'filename)) - (line (assq-ref properties 'line)) - (column (assq-ref properties 'column))) - (if (and file line column) - (format #f "~a:~a:~a" file (+ 1 line) column) - (G_ "")))) - (define* (warn-about-deprecation variable properties #:key replacement) - (format (deprecation-warning-port) - (G_ "~a: warning: '~a' is deprecated~@[, use '~a' instead~]~%") - (source-properties->location-string properties) - variable replacement)) + (let ((location (and properties (source-properties->location properties)))) + (if replacement + (warning location (G_ "'~a' is deprecated, use '~a' instead~%") + variable replacement) + (warning location (G_ "'~a' is deprecated~%") + variable)))) (define-syntax define-deprecated (lambda (s) @@ -60,7 +46,7 @@ source property alist." (define-deprecated foo bar 42) (define-deprecated (baz x y) qux (qux y x)) -This will write a deprecation warning to DEPRECATION-WARNING-PORT." +This will write a deprecation warning to GUIX-WARNING-PORT." (syntax-case s () ((_ (proc formals ...) replacement body ...) #'(define-deprecated proc replacement @@ -97,7 +83,7 @@ these lines: where 'nix-server?' is the deprecated name for 'store-connection?'. -This will write a deprecation warning to DEPRECATION-WARNING-PORT." +This will write a deprecation warning to GUIX-WARNING-PORT." (define-syntax deprecated (lambda (s) (warn-about-deprecation 'deprecated (syntax-source s) -- cgit v1.2.3