diff options
Diffstat (limited to 'src/boot/strap/translator.clisp')
-rw-r--r-- | src/boot/strap/translator.clisp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/boot/strap/translator.clisp b/src/boot/strap/translator.clisp index 0b849cfc..2d480526 100644 --- a/src/boot/strap/translator.clisp +++ b/src/boot/strap/translator.clisp @@ -469,10 +469,39 @@ ((NULL |$stack|) (|bpGeneralErrorHere|) NIL) ('T (CAR |$stack|))))))) +(DEFUN |genDeclaration| (|n| |t|) + (PROG (|argTypes| |ISTMP#2| |valType| |ISTMP#1|) + (RETURN + (COND + ((AND (CONSP |t|) (EQ (CAR |t|) '|Mapping|) + (PROGN + (SETQ |ISTMP#1| (CDR |t|)) + (AND (CONSP |ISTMP#1|) + (PROGN + (SETQ |valType| (CAR |ISTMP#1|)) + (SETQ |ISTMP#2| (CDR |ISTMP#1|)) + (AND (CONSP |ISTMP#2|) (EQ (CDR |ISTMP#2|) NIL) + (PROGN + (SETQ |argTypes| (CAR |ISTMP#2|)) + 'T)))))) + (PROGN + (COND + ((|bfTupleP| |argTypes|) + (SETQ |argTypes| (CDR |argTypes|)))) + (COND + ((AND (NULL (NULL |argTypes|)) (SYMBOLP |argTypes|)) + (SETQ |argTypes| (LIST |argTypes|)))) + (LIST 'DECLAIM + (LIST 'FTYPE (LIST 'FUNCTION |argTypes| |valType|) + |n|)))) + ('T (LIST 'DECLAIM (LIST 'TYPE |t| |n|))))))) + (DEFUN |bpOutItem| () (PROG (|bfVar#6| |bfVar#5| |r| |ISTMP#2| |l| |ISTMP#1| |b|) + (DECLARE (SPECIAL |$op|)) (RETURN (PROGN + (SETQ |$op| NIL) (OR (|bpComma|) (|bpTrap|)) (SETQ |b| (|bpPop1|)) (COND @@ -495,6 +524,9 @@ (SETQ |bfVar#5| |b|) (SETQ |bfVar#6| (CDR |bfVar#5|)) (CASE (CAR |bfVar#5|) + (|Signature| + (LET ((|op| (CAR |bfVar#6|)) (|t| (CADR |bfVar#6|))) + (|bpPush| (LIST (|genDeclaration| |op| |t|))))) (|Module| (LET ((|m| (CAR |bfVar#6|))) (|bpPush| |