Test a very long #@ comment

Download this file here. Byte-compile it, then run it with xemacs-21.5-b34 -batch -l very-long-comment.elc .


(unless (or (> most-positive-fixnum #x3fffffff) (featurep 'bignum))
  (error 'unimplemented))

(defvar very-long-comment-readchar-index 0)

(defvar very-long-comment-readchar-unread-char nil)

(defun very-long-comment-readchar (&optional unread)
  (symbol-macrolet
      ((very-long-comment-length 1073741824)
       (very-long-comment-readchar-prologue "(hello #@1073741824")
       (very-long-comment-readchar-epilogue "there)"))
    (if unread
        (if very-long-comment-readchar-unread-char
            (error 'unimplemented)
          (setq very-long-comment-readchar-unread-char unread))
      (cond
       ((prog1
            very-long-comment-readchar-unread-char
          (setq very-long-comment-readchar-unread-char nil)))
       ((< very-long-comment-readchar-index
           (length very-long-comment-readchar-prologue))
        (aref very-long-comment-readchar-prologue
              (prog1 very-long-comment-readchar-index
                (incf very-long-comment-readchar-index))))
       ((if (<= (+ very-long-comment-length
                   (length very-long-comment-readchar-prologue))
                #x3fffffff)
            (< very-long-comment-readchar-index
               (+ very-long-comment-length
                  (length very-long-comment-readchar-prologue)))
          (or (< very-long-comment-readchar-index #x3fffffff)
              (< very-long-comment-readchar-index
                 (+ very-long-comment-length
                    (length very-long-comment-readchar-prologue)))))
        (if (eql 0 (% very-long-comment-readchar-index #x1000000))
            (debug-print "index now %x\n" very-long-comment-readchar-index))
        (incf very-long-comment-readchar-index)
        ?a)
       ((< very-long-comment-readchar-index
           (+ very-long-comment-length
              (length very-long-comment-readchar-prologue)
              (length very-long-comment-readchar-epilogue)))
        (aref very-long-comment-readchar-epilogue
              (prog1 (- very-long-comment-readchar-index
                        very-long-comment-length
                        (length very-long-comment-readchar-prologue))
                (incf very-long-comment-readchar-index))))))))

(debug-print "just read %S\n" (read #'very-long-comment-readchar))