~ chicken-core (chicken-5) 00d3ee7c58af409de131c3132ba9d77c2e3a106e
commit 00d3ee7c58af409de131c3132ba9d77c2e3a106e Author: felix <felix@call-with-current-continuation.org> AuthorDate: Fri Jun 10 14:43:08 2011 +0200 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Fri Jun 10 14:43:08 2011 +0200 added some notes to scrutinizer source code regarding type-check generation diff --git a/scrutinizer.scm b/scrutinizer.scm index eb685c23..8e247cb1 100755 --- a/scrutinizer.scm +++ b/scrutinizer.scm @@ -700,6 +700,10 @@ escaping-procedures (not unsafe)) (debugging 'x "checks argument-types" dest) ;XXX + ;; [1] this is subtle: we don't want argtype-checks to be + ;; generated for toplevel defs other than user-declared ones. + ;; But since the ##compiler#declared-type mark is set AFTER + ;; the lambda has been walked (see below, [2]), nothing is added. (generate-type-checks! n dest vars inits)) (list (append @@ -750,6 +754,8 @@ (get db var 'local-value)))) (when (eq? val (first subs)) (debugging '|I| (sprintf "(: ~s ~s)" var rt)) + ;; [2] sets property, but lambda has already been walked, + ;; so no type-checks are generated (see also [1], above) (mark-variable var '##compiler#declared-type) (mark-variable var '##compiler#type rt)))) (when bTrap