~ chicken-core (chicken-5) c62d96c47f3a2d6352c23c33883ce0362a8e0ec1


commit c62d96c47f3a2d6352c23c33883ce0362a8e0ec1
Author:     Evan Hanson <evhan@foldling.org>
AuthorDate: Mon Jan 11 08:58:01 2016 +1300
Commit:     Evan Hanson <evhan@foldling.org>
CommitDate: Mon Jan 11 08:58:01 2016 +1300

    Use ##compiler#type-source property for type origin info (db local inference)

diff --git a/core.scm b/core.scm
index aeca37c4..76419b43 100644
--- a/core.scm
+++ b/core.scm
@@ -91,7 +91,7 @@
 ;   ##compiler#pure -> BOOL                                 referentially transparent
 ;   ##compiler#clean -> BOOL                                does not modify local state
 ;   ##compiler#type -> TYPE
-;   ##compiler#declared-type -> 'from-db | 'local | 'implicit
+;   ##compiler#type-source -> 'db | 'local | 'inference
 
 ; - Source language:
 ;
@@ -1659,7 +1659,7 @@
 					 (symbol? (cadr type)))
 				(set-car! (cdr type) name))
 			      (mark-variable name '##compiler#type type)
-			      (mark-variable name '##compiler#declared-type 'local)
+			      (mark-variable name '##compiler#type-source 'local)
 			      (when pure
 				(mark-variable name '##compiler#pure #t))
 			      (when pred
diff --git a/scrutinizer.scm b/scrutinizer.scm
index fed2a7ab..5d444cf4 100644
--- a/scrutinizer.scm
+++ b/scrutinizer.scm
@@ -88,7 +88,7 @@
 ; global symbol properties:
 ;
 ;   ##compiler#type            ->  TYPESPEC
-;   ##compiler#declared-type   ->  'from-db | 'local | 'implicit
+;   ##compiler#type-source     ->  'db | 'local | 'inference
 ;   ##compiler#predicate       ->  TYPESPEC
 ;   ##compiler#specializations ->  (SPECIALIZATION ...)
 ;   ##compiler#local-specializations ->  (SPECIALIZATION ...)
@@ -197,7 +197,7 @@
       (cond ((blist-type id flow) => list)
 	    ((and (not strict)
 		  (db-get db id 'assigned) 
-		  (not (variable-mark id '##compiler#declared-type)))
+		  (not (variable-mark id '##compiler#type-source)))
 	     '(*))
 	    ((assq id e) =>
 	     (lambda (a)
@@ -447,7 +447,7 @@
 
     (define (initial-argument-types dest vars argc)
       (if (and dest strict
-	       (variable-mark dest '##compiler#declared-type))
+	       (variable-mark dest '##compiler#type-source))
 	  (let* ((ptype (variable-mark dest '##compiler#type))
 		 (typeenv (type-typeenv ptype)))
 	    (if (procedure-type? ptype)
@@ -579,12 +579,12 @@
 					 #f #t (list initial-tag) #f)))
 			   #;(when (and specialize
 				      dest
-				      (variable-mark dest '##compiler#declared-type)
+				      (variable-mark dest '##compiler#type-source)
 				      (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 
+			     ;; But since the ##compiler#type-source mark is set AFTER
 			     ;; the lambda has been walked (see below, [2]), nothing is added.
 			     (generate-type-checks! n dest vars inits))
 			   (list
@@ -649,7 +649,7 @@
 			      ;; [2] sets property, but lambda has already been walked,
 			      ;; so no type-checks are generated (see also [1], above)
 			      ;; note that implicit declarations are not enforcing
-			      (mark-variable var '##compiler#declared-type 'implicit)
+			      (mark-variable var '##compiler#type-source 'inference)
 			      (mark-variable var '##compiler#type rt))))))
 		    (when b
 		      (cond ((eq? 'undefined (cdr b)) (set-cdr! b rt))
@@ -1803,7 +1803,7 @@
 		    "type-definition `~a' for toplevel binding `~a' conflicts with previously loaded type `~a'"
 		  name new old)))
 	     (mark-variable name '##compiler#type t)
-	     (mark-variable name '##compiler#declared-type 'from-db)
+	     (mark-variable name '##compiler#type-source 'db)
 	     (when specs
 	       (install-specializations name specs)))))
        (read-file dbfile))
@@ -1817,8 +1817,7 @@
       (##sys#hash-table-for-each
        (lambda (sym plist)
 	 (when (and (variable-visible? sym block-compilation)
-		    (memq (variable-mark sym '##compiler#declared-type)
-			  '(local implicit)))
+		    (memq (variable-mark sym '##compiler#type-source) '(local inference)))
 	   (let ((specs (or (variable-mark sym '##compiler#specializations) '()))
 		 (type (variable-mark sym '##compiler#type))
 		 (pred (variable-mark sym '##compiler#predicate))
Trap