diff options
Diffstat (limited to 'libguile/programs.c')
-rw-r--r-- | libguile/programs.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/libguile/programs.c b/libguile/programs.c index 675035727..81495a5b1 100644 --- a/libguile/programs.c +++ b/libguile/programs.c @@ -295,6 +295,12 @@ try_parse_arity (SCM program, int *req, int *opt, int *rest) *opt = slots - 1; *rest = 0; return 1; + case scm_op_bind_optionals: + slots = code[0] >> 8; + *req = 0; + *opt = slots - 1; + *rest = ((code[1] & 0xff) == scm_op_bind_rest); + return 1; case scm_op_bind_rest: slots = code[0] >> 8; *req = 0; @@ -310,6 +316,12 @@ try_parse_arity (SCM program, int *req, int *opt, int *rest) *opt = slots - 1 - *req; *rest = 0; return 1; + case scm_op_bind_optionals: + slots = code[1] >> 8; + *req = min - 1; + *opt = slots - 1 - *req; + *rest = ((code[2] & 0xff) == scm_op_bind_rest); + return 1; case scm_op_bind_rest: slots = code[1] >> 8; *req = min - 1; |