~ chicken-core (chicken-5) 953a279a911268da5ce90de3d6f670282db9d190


commit 953a279a911268da5ce90de3d6f670282db9d190
Author:     megane <meganeka@gmail.com>
AuthorDate: Tue Nov 27 15:59:49 2018 +0200
Commit:     Evan Hanson <evhan@foldling.org>
CommitDate: Sat Mar 9 20:31:13 2019 +1300

    Factor `describe-expression' procedure out to scrutinizer toplevel
    
    Signed-off-by: Evan Hanson <evhan@foldling.org>

diff --git a/scrutinizer.scm b/scrutinizer.scm
index 5f102c24..340b2c83 100644
--- a/scrutinizer.scm
+++ b/scrutinizer.scm
@@ -2494,6 +2494,28 @@
 	(sprintf "`~a' from module `~a'" (second r) (first r))
 	(sprintf "`~a'" sym))))
 
+(define (describe-expression node)
+  (define (p-expr n)
+    (sprintf (string-append "This is the expression" "~%~%" "~a")
+	     (pp-fragment n)))
+  (define (p-node n)
+    (or (and (eq? '##core#call (node-class n))
+	     (let ((pnode (first (node-subexpressions n))))
+	       (and-let* (((eq? '##core#variable (node-class pnode)))
+			  (pname (car (node-parameters pnode)))
+			  (ptype (variable-mark pname '##compiler#type)))
+		 (sprintf (string-append
+			   "It is a call to ~a which has type"
+			   "~%~%"
+			   "~a"
+			   "~%~%"
+			   "~a")
+			  (variable-from-module pname)
+			  (type->pp-string ptype)
+			  (p-expr n)))))
+	(p-expr n)))
+  (p-node node))
+
 (define (call-node-procedure-name node)
   (fragment (first (node-subexpressions node))))
 
@@ -2596,28 +2618,6 @@
 
 (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
-		"This is the expression"
-		"~%~%"
-		"~a")
-	       (pp-fragment arg-node)))
-    (or (and (eq? '##core#call (node-class arg-node))
-	     (let ((pnode (first (node-subexpressions arg-node))))
-	       (and-let* (((eq? '##core#variable (node-class pnode)))
-			  (pname (car (node-parameters pnode)))
-			  (ptype (variable-mark pname '##compiler#type)))
-		 (sprintf (string-append
-			   "It is a call to ~a which has type"
-			   "~%~%"
-			   "~a"
-			   "~%~%"
-			   "~a")
-			  (variable-from-module pname)
-			  (type->pp-string ptype)
-			  (p-expr)))))
-	(p-expr)))
   (define (p short long)
     (report2
      short
@@ -2636,7 +2636,7 @@
      i
      (if (zero? i) "" (sprintf " `~a'" (strip-namespace pname)))
      long
-     (p-arg-expr)))
+     (describe-expression arg-node)))
   (if (zero? (length atype))
       (p "Not enough argument values"
 	 "does not return any values.")
Trap