~ chicken-core (chicken-5) c67725039f61ef1f08c767837194fe7d5f8cb3ce
commit c67725039f61ef1f08c767837194fe7d5f8cb3ce Author: LemonBoy <thatlemon@gmail.com> AuthorDate: Sun May 21 15:56:59 2017 +0200 Commit: Peter Bex <peter@more-magic.net> CommitDate: Sun May 21 17:25:33 2017 +0200 Infer types for inline foreign references The inline{_loc}_ref nodes already carry their type, let's use this piece of information during the scrutiny phase instead of typing them as '*. Signed-off-by: Peter Bex <peter@more-magic.net> diff --git a/scrutinizer.scm b/scrutinizer.scm index 385a17c5..cf7c6ad4 100644 --- a/scrutinizer.scm +++ b/scrutinizer.scm @@ -515,6 +515,10 @@ ((##core#undefined) '(*)) ((##core#proc) '(procedure)) ((##core#variable) (variable-result (first params) e loc flow)) + ((##core#inline_ref) + (list (foreign-type->scrutiny-type (second params) 'result))) + ((##core#inline_loc_ref) + (list (foreign-type->scrutiny-type (first params) 'result))) ((if) (let ((tags (cons (tag) (tag))) (tst (first subs)) @@ -716,7 +720,7 @@ (set-cdr! params '(#t))) '(undefined))) - ((##core#primitive ##core#inline_ref) '*) + ((##core#primitive) '*) ((##core#call) (let* ((f (fragment n)) (len (length subs))Trap