aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorMattias EngdegÄrd2019-12-03 15:17:37 +0100
committerMattias EngdegÄrd2019-12-03 15:17:37 +0100
commita6b598518c4bf6dfc587cfb2b61fa5fb04b99494 (patch)
tree53a5dd14398ff04282ff98f7e97f4560b3f84b58 /lisp
parenta05bafffdcb88df74408a8402cafc9829407c1e5 (diff)
downloademacs-a6b598518c4bf6dfc587cfb2b61fa5fb04b99494.tar.gz
emacs-a6b598518c4bf6dfc587cfb2b61fa5fb04b99494.zip
Avoid duplicated character classes in rx
For example, (any digit digit) should produce "[[:digit:]]", not "[[:digit:][:digit:]]". * lisp/emacs-lisp/rx.el (rx--translate-any): Deduplicate character classes. * test/lisp/emacs-lisp/rx-tests.el (rx-any): Add test case.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/emacs-lisp/rx.el4
1 files changed, 3 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/rx.el b/lisp/emacs-lisp/rx.el
index 52a35ffa2a7..6fde27831a0 100644
--- a/lisp/emacs-lisp/rx.el
+++ b/lisp/emacs-lisp/rx.el
@@ -376,7 +376,9 @@ If NEGATED, negate the sense."
376 (push (cons arg arg) conses)) 376 (push (cons arg arg) conses))
377 ((and (symbolp arg) 377 ((and (symbolp arg)
378 (let ((class (cdr (assq arg rx--char-classes)))) 378 (let ((class (cdr (assq arg rx--char-classes))))
379 (and class (push class classes))))) 379 (and class
380 (or (memq class classes)
381 (push class classes))))))
380 (t (error "Invalid rx `any' argument: %s" arg)))) 382 (t (error "Invalid rx `any' argument: %s" arg))))
381 (let ((items 383 (let ((items
382 ;; Translate strings and conses into nonoverlapping intervals, 384 ;; Translate strings and conses into nonoverlapping intervals,