diff options
| author | Michael Heerdegen <michael_heerdegen@web.de> | 2018-06-13 04:37:38 +0200 |
|---|---|---|
| committer | Michael Heerdegen <michael_heerdegen@web.de> | 2018-06-17 15:22:30 +0200 |
| commit | 45ee24efed57093b421159ca1028097952f2d564 (patch) | |
| tree | f6172378d6be486b5ec339d3363a632877970108 | |
| parent | fa9679ca488a17b2b6b9f31299d69c190aa86642 (diff) | |
| download | emacs-45ee24efed57093b421159ca1028097952f2d564.tar.gz | |
Allow floats as 'pcase' QPATS
* lisp/emacs-lisp/pcase.el (\`): Extend semantics of QPATS to all
numbers. Add a comment explaining why we disallow some atoms as
QPATS.
* doc/lispref/control.texi (Backquote Patterns): Update the paragraph
explaining QPATS. Remove a sentence suggesting an analogy between
QPATS to self-quoting objects.
| -rw-r--r-- | doc/lispref/control.texi | 4 | ||||
| -rw-r--r-- | lisp/emacs-lisp/pcase.el | 7 |
2 files changed, 6 insertions, 5 deletions
diff --git a/doc/lispref/control.texi b/doc/lispref/control.texi index 34f5f570440..975ab3d0759 100644 --- a/doc/lispref/control.texi +++ b/doc/lispref/control.texi @@ -1090,12 +1090,10 @@ Matches if @var{expval} is a vector of length @var{m} whose @item @var{symbol} @itemx @var{keyword} -@itemx @var{integer} +@itemx @var{number} @itemx @var{string} Matches if the corresponding element of @var{expval} is @code{equal} to the specified literal object. -Note that, aside from @var{symbol}, this is the same set of -self-quoting literal objects that are acceptable as a core pattern. @item ,@var{pattern} Matches if the corresponding element of @var{expval} diff --git a/lisp/emacs-lisp/pcase.el b/lisp/emacs-lisp/pcase.el index fa7b1de8b4d..4a69244d265 100644 --- a/lisp/emacs-lisp/pcase.el +++ b/lisp/emacs-lisp/pcase.el @@ -919,7 +919,7 @@ QPAT can take the following forms: ,PAT matches if the `pcase' pattern PAT matches. SYMBOL matches if EXPVAL is `equal' to SYMBOL. KEYWORD likewise for KEYWORD. - INTEGER likewise for INTEGER. + NUMBER likewise for NUMBER. STRING likewise for STRING. The list or vector QPAT is a template. The predicate formed @@ -949,7 +949,10 @@ The predicate is the logical-AND of: `(and (pred consp) (app car ,(list '\` (car qpat))) (app cdr ,(list '\` (cdr qpat))))) - ((or (stringp qpat) (integerp qpat) (symbolp qpat)) `',qpat) + ((or (stringp qpat) (numberp qpat) (symbolp qpat)) `',qpat) + ;; In all other cases just raise an error so we can't break + ;; backward compatibility when adding \` support for other + ;; compounded values that are not `consp' (t (error "Unknown QPAT: %S" qpat)))) (provide 'pcase) |
