]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix (rx-to-string (and (literal STR) (regexp STR)) regression
authorNoam Postavsky <npostavs@gmail.com>
Wed, 26 Jun 2019 12:47:56 +0000 (08:47 -0400)
committerNoam Postavsky <npostavs@gmail.com>
Wed, 26 Jun 2019 12:50:27 +0000 (08:50 -0400)
* lisp/emacs-lisp/rx.el (rx-regexp, rx-literal): Check the cadr of the
form for stringness, not the form itself.
* test/lisp/emacs-lisp/rx-tests.el (rx-to-string-lisp-forms): New test.

lisp/emacs-lisp/rx.el
test/lisp/emacs-lisp/rx-tests.el

index 1b5afe73b4508241b89c3e65550972d1db5bb611..24dd6cbf1d6c2bf7cdb4ead764795f98634e7620 100644 (file)
@@ -874,7 +874,7 @@ If FORM is `(minimal-match FORM1)', non-greedy versions of `*',
 
 (defun rx-regexp (form)
   "Parse and produce code from FORM, which is `(regexp STRING)'."
-  (cond ((stringp form)
+  (cond ((stringp (cadr form))
          (rx-group-if (cadr form) rx-parent))
         (rx--compile-to-lisp
          ;; Always group non-string forms, since we can't be sure they
@@ -884,7 +884,7 @@ If FORM is `(minimal-match FORM1)', non-greedy versions of `*',
 
 (defun rx-literal (form)
   "Parse and produce code from FORM, which is `(literal STRING-EXP)'."
-  (cond ((stringp form)
+  (cond ((stringp (cadr form))
          ;; This is allowed, but makes little sense, you could just
          ;; use STRING directly.
          (rx-group-if (regexp-quote (cadr form)) rx-parent))
index bab71b522bbe72102d2b53f41f2f46115c07a4ab..8845ebf46d1661e9292577ee03d3b1b8235bf6c2 100644 (file)
     (rx-tests--match (rx "c" (minimal-match (0+ (regexp ad))) "a") "cdaaada" "cda")
     (rx-tests--match (rx "c" (maximal-match (0+ (regexp ad))) "a") "cdaaada" "cdaaada")))
 
+(ert-deftest rx-to-string-lisp-forms ()
+  (rx-tests--match (rx-to-string '(seq "a" (literal "b") "c")) "abc")
+  (rx-tests--match (rx-to-string '(seq "a" (regexp "b") "c")) "abc"))
+
 (provide 'rx-tests)
 ;; rx-tests.el ends here.