From 6bf6419203fd33b1e75a731925f9e203876d2935 Mon Sep 17 00:00:00 2001 From: Chris Hanson Date: Wed, 22 Jul 1987 21:01:37 +0000 Subject: [PATCH] In `generate-operands', handle case where number of operands is less than number or required plus number of optional parameters. --- v7/src/compiler/rtlgen/rgcomb.scm | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/v7/src/compiler/rtlgen/rgcomb.scm b/v7/src/compiler/rtlgen/rgcomb.scm index b7dec6ba0..bd030e216 100644 --- a/v7/src/compiler/rtlgen/rgcomb.scm +++ b/v7/src/compiler/rtlgen/rgcomb.scm @@ -1,6 +1,6 @@ #| -*-Scheme-*- -$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlgen/rgcomb.scm,v 1.30 1987/07/09 23:20:52 mhwu Exp $ +$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlgen/rgcomb.scm,v 1.31 1987/07/22 21:01:37 cph Exp $ Copyright (c) 1987 Massachusetts Institute of Technology @@ -97,18 +97,20 @@ MIT in each case. |# (required-loop (cdr required) (cdr operands))))) (define (optional-loop optional operands) - (if (null? optional) - (if (not rest) - '() - (map (if (integrated-vnode? rest) - generate/operand-no-value - generate/operand) - operands)) - (cons ((if (integrated-vnode? (car optional)) - generate/operand-no-value - generate/operand) - (car operands)) - (optional-loop (cdr optional) (cdr operands))))) + (cond ((null? operands) '()) + ((null? optional) + (if (not rest) + '() + (map (if (integrated-vnode? rest) + generate/operand-no-value + generate/operand) + operands))) + (else + (cons ((if (integrated-vnode? (car optional)) + generate/operand-no-value + generate/operand) + (car operands)) + (optional-loop (cdr optional) (cdr operands)))))) (required-loop required operands)) -- 2.25.1