Changeset 4797


Ignore:
Timestamp:
11/17/03 01:44:50 (18 years ago)
Author:
piso
Message:

PRECOMPILE-IF

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/j/src/org/armedbear/lisp/precompiler.lisp

    r4765 r4797  
    22;;;
    33;;; Copyright (C) 2003 Peter Graves
    4 ;;; $Id: precompiler.lisp,v 1.7 2003-11-15 15:26:12 piso Exp $
     4;;; $Id: precompiler.lisp,v 1.8 2003-11-17 01:44:50 piso Exp $
    55;;;
    66;;; This program is free software; you can redistribute it and/or
     
    238238    (case (length args)
    239239      (2
    240        (list 'IF
    241              (precompile1 (car args))
    242              (precompile1 (cadr args))))
     240       (let ((test (precompile1 (car args))))
     241         (cond ((null test)
     242                nil)
     243               ((constantp test)
     244                (precompile1 (cadr args)))
     245               (t
     246                (list 'IF
     247                      test
     248                      (precompile1 (cadr args)))))))
    243249      (3
    244        (list 'IF
    245              (precompile1 (car args))
    246              (precompile1 (cadr args))
    247              (precompile1 (caddr args))))
     250       (let ((test (precompile1 (car args))))
     251         (cond ((null test)
     252                (precompile1 (caddr args)))
     253               ((constantp test)
     254                (precompile1 (cadr args)))
     255               (t
     256                (list 'IF
     257                      test
     258                      (precompile1 (cadr args))
     259                      (precompile1 (caddr args)))))))
    248260      (t
    249261       (error "wrong number of arguments for IF")))))
Note: See TracChangeset for help on using the changeset viewer.