Validate number of args to prims

This commit is contained in:
Justin Ethier 2016-07-11 21:53:28 -04:00
parent 8d8c6fcd06
commit a72a7e1718
2 changed files with 17 additions and 15 deletions

View file

@ -305,17 +305,19 @@
(string-append
prefix
(number->string expected)
" args but received "
" arguments to "
(symbol->string sym)
" but received "
(number->string actual)
))))
(cond
((not expected) #t)
((and (car expected)
(> num-args (car expected)))
(error (build-error-str "Expected " (car expected) num-args) sym))
((and (not (null? (cdr expected)))
(cadr expected)
(< num-args (cadr expected)))
(> num-args (cadr expected)))
(error (build-error-str "Expected " (car expected) num-args) sym))
((and (car expected)
(< num-args (car expected)))
(error (build-error-str "Expected at least " (car expected) num-args) sym))
(else #t))))

View file

@ -22,7 +22,7 @@
(scheme cyclone primitives)
(scheme cyclone pretty-print)
(scheme cyclone util)
; (srfi 69)
(srfi 69)
)
(export
*defined-macros*
@ -1297,8 +1297,8 @@
;;
;; Helpers to syntax check primitive calls
;;
;(define *prim-args-table*
; (alist->hash-table *primitives-num-args*))
(define *prim-args-table*
(alist->hash-table *primitives-num-args*))
;; CPS conversion
;;
@ -1347,13 +1347,13 @@
cont-ast)))))
((prim-call? ast)
;(prim:check-arg-count
; (car ast)
; (- (length ast) 1)
; (hash-table-ref/default
; *prim-args-table*
; (car ast)
; #f))
(prim:check-arg-count
(car ast)
(- (length ast) 1)
(hash-table-ref/default
*prim-args-table*
(car ast)
#f))
(cps-list (cdr ast) ; args to primitive function
(lambda (args)
(list cont-ast