- `(%no-primary-method ',generic-function .args.))
- ((and (null (before)) (null (after)) (null (around)))
- ;; By returning a single call-method `form' here we enable
- ;; an important implementation-specific optimization; that
- ;; is, we can use the fast method function directly as the
- ;; effective method function.
- ;;
- ;; However, the requirement by ANSI (CLHS 7.6.5) on generic
- ;; function argument checking inhibits this, as we don't
- ;; perform this checking in fast-method-functions given
- ;; that they are not solely used for effective method
- ;; functions, but also in combination, when they should not
- ;; perform argument checks.
- (let ((call-method
- `(call-method ,(first (primary)) ,(rest (primary)))))
- (if (gf-requires-emf-keyword-checks generic-function)
- ;; the PROGN inhibits the above optimization
- `(progn ,call-method)
- call-method)))
- (t
- (let ((main-effective-method
- (if (or (before) (after))
- `(multiple-value-prog1
- (progn
- ,(make-call-methods (before))
- (call-method ,(first (primary))
- ,(rest (primary))))
- ,(make-call-methods (reverse (after))))
- `(call-method ,(first (primary)) ,(rest (primary))))))
- (if (around)
- `(call-method ,(first (around))
- (,@(rest (around))
- (make-method ,main-effective-method)))
- main-effective-method))))))
+ `(%no-primary-method ',generic-function .args.))
+ ((and (null (before)) (null (after)) (null (around)))
+ ;; By returning a single call-method `form' here we enable
+ ;; an important implementation-specific optimization; that
+ ;; is, we can use the fast method function directly as the
+ ;; effective method function.
+ ;;
+ ;; However, the requirement by ANSI (CLHS 7.6.5) on generic
+ ;; function argument checking inhibits this, as we don't
+ ;; perform this checking in fast-method-functions given
+ ;; that they are not solely used for effective method
+ ;; functions, but also in combination, when they should not
+ ;; perform argument checks.
+ (let ((call-method
+ `(call-method ,(first (primary)) ,(rest (primary)))))
+ (if (gf-requires-emf-keyword-checks generic-function)
+ ;; the PROGN inhibits the above optimization
+ `(progn ,call-method)
+ call-method)))
+ (t
+ (let ((main-effective-method
+ (if (or (before) (after))
+ `(multiple-value-prog1
+ (progn
+ ,(make-call-methods (before))
+ (call-method ,(first (primary))
+ ,(rest (primary))))
+ ,(make-call-methods (reverse (after))))
+ `(call-method ,(first (primary)) ,(rest (primary))))))
+ (if (around)
+ `(call-method ,(first (around))
+ (,@(rest (around))
+ (make-method ,main-effective-method)))
+ main-effective-method))))))