summaryrefslogtreecommitdiff
path: root/libguile/programs.c
diff options
context:
space:
mode:
Diffstat (limited to 'libguile/programs.c')
-rw-r--r--libguile/programs.c12
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;