~ chicken-core (chicken-5) a152154e8291bd9b7597bae20022162eb8293a02
commit a152154e8291bd9b7597bae20022162eb8293a02
Author: felix <felix@call-with-current-continuation.org>
AuthorDate: Sat Jul 17 15:38:42 2010 +0200
Commit: felix <felix@call-with-current-continuation.org>
CommitDate: Tue Jul 27 13:09:33 2010 +0200
alternative deprecated type for scrutiny; bugfix in symbol-aliasing in declarations
diff --git a/compiler.scm b/compiler.scm
index 435909b0..5d064d2f 100644
--- a/compiler.scm
+++ b/compiler.scm
@@ -1251,10 +1251,12 @@
(##sys#strip-syntax x se))
(define stripu ##sys#strip-syntax)
(define (globalize sym)
- (let loop ((se se)) ; ignores syntax bindings
- (cond ((null? se) (##sys#alias-global-hook sym #f))
- ((and (eq? sym (caar se)) (symbol? (cdar se))) (cdar se))
- (else (loop (cdr se))))))
+ (if (symbol? sym)
+ (let loop ((se se)) ; ignores syntax bindings
+ (cond ((null? se) (##sys#alias-global-hook sym #f))
+ ((and (eq? sym (caar se)) (symbol? (cdar se))) (cdar se))
+ (else (loop (cdr se)))))
+ sym))
(define (globalize-all syms) (map globalize syms))
(call-with-current-continuation
(lambda (return)
diff --git a/scrutinizer.scm b/scrutinizer.scm
index 06ba52a3..549c5987 100644
--- a/scrutinizer.scm
+++ b/scrutinizer.scm
@@ -48,6 +48,7 @@
; | (procedure (VAL1 ... [#!optional VALOPT1 ...] [#!rest [VAL | values]]) . RESULTS)
; | BASIC
; | deprecated
+; | (deprecated NAME)
; BASIC = * | string | symbol | char | number | boolean | list | pair |
; procedure | vector | null | eof | undefined | port |
; blob | noreturn | pointer | locative | fixnum | float
@@ -89,8 +90,14 @@
((eq? a 'deprecated)
(report
loc
- (sprintf "use of deprecated toplevel identifier `~a'" id) )
+ (sprintf "use of deprecated library procedure `~a'" id) )
'*)
+ ((and (pair? a) (eq? (car a) 'deprecated))
+ (report
+ loc
+ (sprintf "use of deprecated library procedure `~a' - consider using `~a' instead"
+ id (cadr a)))
+ '*)
(else (list a)))))
(else '*)))
(define (variable-result id e loc)
@@ -469,7 +476,8 @@
(every procedure-type? (cdr t)))))))
(define (procedure-argument-types t n)
(cond ((or (memq t '(* procedure))
- (not-pair? t) )
+ (not-pair? t)
+ (eq? 'deprecated (car t)))
(values (make-list n '*) #f))
((eq? 'procedure (car t))
(let* ((vf #f)
@@ -573,8 +581,10 @@
(walk (first subs) e loc var)
loc))
(b (assq var e)) )
- (when (and type (not b)
- (not (eq? type 'deprecated))
+ (when (and type
+ (not b)
+ (not (or (eq? type 'deprecated)
+ (and (pair? type) (eq? 'deprecated (car type)))))
(not (match type rt)))
(report
loc
Trap