~ chicken-core (chicken-5) b3b6f91483deeb2e666348e9c70365e4158bbeea
commit b3b6f91483deeb2e666348e9c70365e4158bbeea
Author: megane <meganeka@gmail.com>
AuthorDate: Tue Nov 27 15:40:17 2018 +0200
Commit: Evan Hanson <evhan@foldling.org>
CommitDate: Sat Mar 9 20:31:03 2019 +1300
Refactor `pname' procedure to toplevel as `call-node-procedure-name'
The `pname' procedure is used purely for printing messages, so move it
out of scrutinize and call it locally in the various report procedures.
Signed-off-by: Evan Hanson <evhan@foldling.org>
diff --git a/scrutinizer.scm b/scrutinizer.scm
index b3378582..5f102c24 100644
--- a/scrutinizer.scm
+++ b/scrutinizer.scm
@@ -315,8 +315,6 @@
(and (pair? c) c)))
(define (call-result node args e loc params typeenv)
- (define (pname)
- (fragment (first (node-subexpressions node))))
(let* ((actualtypes (map walked-result args))
(ptype (car actualtypes))
(pptype? (procedure-type? ptype))
@@ -333,7 +331,7 @@
(let-values (((atypes values-rest ok alen)
(procedure-argument-types ptype nargs typeenv)))
(unless ok
- (r-proc-call-argument-count-mismatch loc node (pname) alen nargs ptype))
+ (r-proc-call-argument-count-mismatch loc node alen nargs ptype))
(do ((actualtypes (cdr actualtypes) (cdr actualtypes))
(atypes atypes (cdr atypes))
(i 1 (add1 i)))
@@ -343,7 +341,7 @@
(car actualtypes)
typeenv)
(r-proc-call-argument-type-mismatch
- loc node (pname) i
+ loc node i
(resolve (car atypes) typeenv)
(resolve (car actualtypes) typeenv)
ptype)))
@@ -358,7 +356,7 @@
(lambda (pt)
(cond ((match-argument-types (list pt) (cdr actualtypes) typeenv)
(r-pred-call-always-true
- loc node (pname) pt (cadr actualtypes))
+ loc node pt (cadr actualtypes))
(when specialize
(specialize-node!
node (cdr args)
@@ -369,7 +367,7 @@
(trail-restore trail0 typeenv)
(match-argument-types (list `(not ,pt)) (cdr actualtypes) typeenv))
(r-pred-call-always-false
- loc node (pname) pt (cadr actualtypes))
+ loc node pt (cadr actualtypes))
(when specialize
(specialize-node!
node (cdr args)
@@ -2496,6 +2494,9 @@
(sprintf "`~a' from module `~a'" (second r) (first r))
(sprintf "`~a'" sym))))
+(define (call-node-procedure-name node)
+ (fragment (first (node-subexpressions node))))
+
(define (report2 short report-f location-node-candidates loc msg . args)
(define (file-location)
(any (lambda (n) (and (not (string=? "" (node-source-prefix n)))
@@ -2537,7 +2538,8 @@
(type->pp-string ptype)
(type->pp-string xptype)))
-(define (r-proc-call-argument-count-mismatch loc node pname exp-count argc ptype)
+(define (r-proc-call-argument-count-mismatch loc node exp-count argc ptype)
+ (define pname (call-node-procedure-name node))
(report2
"Wrong number of arguments"
warning
@@ -2561,7 +2563,8 @@
(variable-from-module pname)
(type->pp-string ptype)))
-(define (r-proc-call-argument-type-mismatch loc node pname i xptype atype ptype)
+(define (r-proc-call-argument-type-mismatch loc node i xptype atype ptype)
+ (define pname (call-node-procedure-name node))
(report2
"Invalid argument"
warning
@@ -2592,6 +2595,7 @@
(type->pp-string ptype)))
(define (r-proc-call-argument-value-count loc call-node i arg-node atype)
+ (define pname (call-node-procedure-name call-node))
(define (p-arg-expr)
(define (p-expr)
(sprintf (string-append
@@ -2630,10 +2634,7 @@
"~a")
(pp-fragment call-node)
i
- (if (zero? i)
- ""
- (sprintf " `~a'"
- (strip-namespace (fragment (first (node-subexpressions call-node))))))
+ (if (zero? i) "" (sprintf " `~a'" (strip-namespace pname)))
long
(p-arg-expr)))
(if (zero? (length atype))
@@ -2642,8 +2643,8 @@
(p "Too many argument values"
(sprintf "returns ~a values but 1 is expected." (length atype)))))
-(define (r-pred-call-always-true loc node pname pred-type atype)
- ;; pname is "... proc call to predicate `foo' "
+(define (r-pred-call-always-true loc node pred-type atype)
+ (define pname (call-node-procedure-name node))
(report-notice
"Predicate is always true"
(list node)
@@ -2667,7 +2668,8 @@
(type->pp-string pred-type)
(type->pp-string atype)))
-(define (r-pred-call-always-false loc node pname pred-type atype)
+(define (r-pred-call-always-false loc node pred-type atype)
+ (define pname (call-node-procedure-name node))
(report-notice
"Predicate is always false"
(list node)
Trap