* 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.
(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))))
(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