summaryrefslogtreecommitdiff
path: root/test/lisp/emacs-lisp/cl-generic-tests.el
diff options
context:
space:
mode:
Diffstat (limited to 'test/lisp/emacs-lisp/cl-generic-tests.el')
-rw-r--r--test/lisp/emacs-lisp/cl-generic-tests.el33
1 files changed, 30 insertions, 3 deletions
diff --git a/test/lisp/emacs-lisp/cl-generic-tests.el b/test/lisp/emacs-lisp/cl-generic-tests.el
index b906e8485cd..8e807b15915 100644
--- a/test/lisp/emacs-lisp/cl-generic-tests.el
+++ b/test/lisp/emacs-lisp/cl-generic-tests.el
@@ -27,7 +27,7 @@
(require 'edebug)
;; Don't indirectly require `cl-lib' at run-time.
-(eval-when-compile (require 'ert))
+(require 'ert)
(declare-function ert--should-signal-hook "ert")
(declare-function ert--signal-should-execution "ert")
(declare-function ert-fail "ert")
@@ -200,9 +200,14 @@
(fmakunbound 'cl--generic-1)
(cl-defgeneric cl--generic-1 (x y))
(cl-defmethod cl--generic-1 ((x t) y)
- (list x y (cl-next-method-p)))
+ (list x y
+ (with-suppressed-warnings ((obsolete cl-next-method-p))
+ (cl-next-method-p))))
(cl-defmethod cl--generic-1 ((_x (eql 4)) _y)
- (cl-list* "quatre" (cl-next-method-p) (cl-call-next-method)))
+ (cl-list* "quatre"
+ (with-suppressed-warnings ((obsolete cl-next-method-p))
+ (cl-next-method-p))
+ (cl-call-next-method)))
(should (equal (cl--generic-1 4 5) '("quatre" t 4 5 nil))))
(ert-deftest cl-generic-test-12-context ()
@@ -292,5 +297,27 @@ Edebug symbols (Bug#42672)."
(intern "cl-defgeneric/edebug/method/2 (number)")
'cl-defgeneric/edebug/method/2))))))
+(cl-defgeneric cl-generic-tests--acc (x &optional y)
+ (declare (advertised-calling-convention (x) "671.2")))
+
+(cl-defmethod cl-generic-tests--acc ((x float)) (+ x 5.0))
+
+(ert-deftest cl-generic-tests--advertised-calling-convention-bug58563 ()
+ (should (equal (get-advertised-calling-convention
+ (indirect-function 'cl-generic-tests--acc))
+ '(x)))
+ (should
+ (condition-case err
+ (let ((lexical-binding t)
+ (byte-compile-debug t)
+ (byte-compile-error-on-warn t))
+ (byte-compile '(cl-defmethod cl-generic-tests--acc ((x list))
+ (declare (advertised-calling-convention (y) "1.1"))
+ (cons x '(5 5 5 5 5))))
+ nil)
+ (error
+ (and (eq 'error (car err))
+ (string-match "Stray.*declare" (cadr err)))))))
+
(provide 'cl-generic-tests)
;;; cl-generic-tests.el ends here