diff options
| author | Stefan Monnier | 2015-05-12 00:10:38 -0400 |
|---|---|---|
| committer | Stefan Monnier | 2015-05-12 00:10:38 -0400 |
| commit | d1b74200dad00cea845037064dc8b5d50db35dd2 (patch) | |
| tree | 51102ad11a51f14177fa58dc601a536cac40d0ca /test | |
| parent | f0352ebdf088bea19b44ddb31e94888bc2345a24 (diff) | |
| download | emacs-d1b74200dad00cea845037064dc8b5d50db35dd2.tar.gz emacs-d1b74200dad00cea845037064dc8b5d50db35dd2.zip | |
* lisp/emacs-lisp/cl-generic.el: Add dispatch on &context arguments
(cl--generic-mandatory-args): Remove.
(cl--generic-split-args): New function.
(cl-generic-define, cl--generic-lambda): Use it.
(cl-generic-define-method): Use it as well, and add support for
context args.
(cl--generic-get-dispatcher): Handle &context dispatch.
(cl--generic-cache-miss): `dispatch-arg' can now be a context expression.
(cl--generic-dispatchers): Pre-fill.
* test/automated/cl-generic-tests.el (sm-generic-test-12-context): New test.
Diffstat (limited to 'test')
| -rw-r--r-- | test/automated/cl-generic-tests.el | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/test/automated/cl-generic-tests.el b/test/automated/cl-generic-tests.el index 5194802fa00..a6035d1cba2 100644 --- a/test/automated/cl-generic-tests.el +++ b/test/automated/cl-generic-tests.el | |||
| @@ -179,5 +179,15 @@ | |||
| 179 | (cl-list* "quatre" (cl-next-method-p) (cl-call-next-method))) | 179 | (cl-list* "quatre" (cl-next-method-p) (cl-call-next-method))) |
| 180 | (should (equal (cl--generic-1 4 5) '("quatre" t 4 5 nil)))) | 180 | (should (equal (cl--generic-1 4 5) '("quatre" t 4 5 nil)))) |
| 181 | 181 | ||
| 182 | (ert-deftest sm-generic-test-12-context () | ||
| 183 | (cl-defgeneric cl--generic-1 ()) | ||
| 184 | (cl-defmethod cl--generic-1 (&context (overwrite-mode (eql t))) 'is-t) | ||
| 185 | (cl-defmethod cl--generic-1 (&context (overwrite-mode (eql nil))) 'is-nil) | ||
| 186 | (cl-defmethod cl--generic-1 () 'other) | ||
| 187 | (should (equal (list (let ((overwrite-mode t)) (cl--generic-1)) | ||
| 188 | (let ((overwrite-mode nil)) (cl--generic-1)) | ||
| 189 | (let ((overwrite-mode 1)) (cl--generic-1))) | ||
| 190 | '(is-t is-nil other)))) | ||
| 191 | |||
| 182 | (provide 'cl-generic-tests) | 192 | (provide 'cl-generic-tests) |
| 183 | ;;; cl-generic-tests.el ends here | 193 | ;;; cl-generic-tests.el ends here |