]> git.eshelyaron.com Git - emacs.git/commitdiff
ruby-add-log-current-method: Reduce the use of 'nreverse'
authorDmitry Gutov <dgutov@yandex.ru>
Wed, 12 Apr 2023 21:45:54 +0000 (00:45 +0300)
committerDmitry Gutov <dgutov@yandex.ru>
Wed, 12 Apr 2023 21:46:11 +0000 (00:46 +0300)
* lisp/progmodes/ruby-mode.el (ruby-add-log-current-method):
Reduce the use of 'nreverse' (bug#62761).

* test/lisp/progmodes/ruby-mode-tests.el
(ruby-add-log-current-method-singleton-referencing-outer):
New test.

lisp/progmodes/ruby-mode.el
test/lisp/progmodes/ruby-mode-tests.el

index beccb8182a75b1c4e514959a42d09056deb86bf4..b252826680cfd429268351cfcb4cb3dd8db6cefc 100644 (file)
@@ -1905,13 +1905,13 @@ See `add-log-current-defun-function'."
                   (progn
                     (unless (string-equal "self" (car mn)) ; def self.foo
                       ;; def C.foo
-                      (let ((ml (nreverse mlist)))
+                      (let ((ml (reverse mlist)))
                         ;; If the method name references one of the
                         ;; containing modules, drop the more nested ones.
                         (while ml
                           (if (string-equal (car ml) (car mn))
                               (setq mlist (nreverse (cdr ml)) ml nil))
-                          (or (setq ml (cdr ml)) (nreverse mlist))))
+                          (setq ml (cdr ml))))
                       (if mlist
                           (setcdr (last mlist) (butlast mn))
                         (setq mlist (butlast mn))))
index 8a75c83d2c38cd25f9fad1c778db256ebf85494d..117385ea3e828a8dad75b5aee6e76942b0610be9 100644 (file)
@@ -567,6 +567,22 @@ VALUES-PLIST is a list with alternating index and value elements."
     (search-backward "_")
     (should (string= (ruby-add-log-current-method) "C::D#foo"))))
 
+(ert-deftest ruby-add-log-current-method-singleton-referencing-outer ()
+  (ruby-with-temp-buffer (ruby-test-string
+                          "module M
+                          |  module N
+                          |    module C
+                          |      class D
+                          |        def C.foo
+                          |          _
+                          |        end
+                          |      end
+                          |    end
+                          |  end
+                          |end")
+    (search-backward "_")
+    (should (string= (ruby-add-log-current-method) "M::N::C.foo"))))
+
 (ert-deftest ruby-add-log-current-method-after-inner-class ()
   (ruby-with-temp-buffer (ruby-test-string
                           "module M