~ chicken-core (chicken-5) 8aee5a8c10f6b94d786f5d69989114221772465e
commit 8aee5a8c10f6b94d786f5d69989114221772465e Author: Evan Hanson <evhan@foldling.org> AuthorDate: Wed Aug 6 18:33:45 2014 +1200 Commit: Peter Bex <peter.bex@xs4all.nl> CommitDate: Fri Aug 8 23:48:58 2014 +0200 Fix scrutiny special case for list-tail when tail is null Due to an off-by-one, the special-cased scrutiny for `list-tail` fails when the index argument is equal to the length of the list, giving a (list-of ...) as the result type rather than null. While that isn't technically incorrect, it also isn't as accurate as possible; this patch fixes this case. Signed-off-by: Peter Bex <peter.bex@xs4all.nl> diff --git a/scrutinizer.scm b/scrutinizer.scm index a4edfb72..c4379331 100644 --- a/scrutinizer.scm +++ b/scrutinizer.scm @@ -2262,7 +2262,7 @@ (val (first (node-parameters index))) ((fixnum? val)) ((>= val 0)) - ((< val (length (cdr arg1))))) ;XXX could warn on failure (but needs location) + ((<= val (length (cdr arg1))))) ;XXX could warn on failure (but needs location) (let ((rest (list-tail (cdr arg1) val))) (list (if (null? rest) 'nullTrap