~ 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