aboutsummaryrefslogtreecommitdiffstats
path: root/test/src
diff options
context:
space:
mode:
authorDenis Zubarev2023-11-12 01:42:42 +0300
committerYuan Fu2023-12-18 18:25:26 -0800
commit7b315e8a5c966f8d11a4f646db4e29b989b56ab1 (patch)
tree46c8b7361d03583a3865165dde5e03c55cc877e8 /test/src
parent03625c2fefa682f74775abc1e223e17557d58bc7 (diff)
downloademacs-7b315e8a5c966f8d11a4f646db4e29b989b56ab1.tar.gz
emacs-7b315e8a5c966f8d11a4f646db4e29b989b56ab1.zip
Fix an issue when searching subtree backward (bug#67117)
* src/treesit.c (treesit_traverse_child_helper): Do not call treesit_traverse_sibling_helper when the named node is required and the last child is the named node. Otherwise treesit_traverse_sibling_helper will move cursor to the previous sibling and last node will be skipped. * test/src/treesit-tests.el (treesit-search-subtree-forward-1): (treesit-search-subtree-backward-1): Add tests.
Diffstat (limited to 'test/src')
-rw-r--r--test/src/treesit-tests.el30
1 files changed, 30 insertions, 0 deletions
diff --git a/test/src/treesit-tests.el b/test/src/treesit-tests.el
index 69db37fc0b4..9ba3a9340c1 100644
--- a/test/src/treesit-tests.el
+++ b/test/src/treesit-tests.el
@@ -1083,6 +1083,36 @@ This tests bug#60355."
1083 treesit--ert-defun-navigation-python-program 1083 treesit--ert-defun-navigation-python-program
1084 treesit--ert-defun-navigation-top-level-master))) 1084 treesit--ert-defun-navigation-top-level-master)))
1085 1085
1086(ert-deftest treesit-search-subtree-forward-1 ()
1087 "Test search subtree forward."
1088 (skip-unless (treesit-language-available-p 'python))
1089 (require 'python)
1090 (python-ts-mode)
1091 (insert "Temp(1, 2)")
1092 (goto-char (point-min))
1093 (let ((node (treesit-search-subtree
1094 (treesit--thing-at (point) "call")
1095 (lambda (n) (equal (treesit-node-type n ) "integer")))))
1096
1097 (should node)
1098 (should (equal (treesit-node-text node) "1"))))
1099
1100(ert-deftest treesit-search-subtree-backward-1 ()
1101 "Test search subtree with backward=t."
1102 (skip-unless (treesit-language-available-p 'python))
1103 (require 'python)
1104 (python-ts-mode)
1105 (insert "Temp(1, 2)")
1106 (goto-char (point-min))
1107 (let ((node (treesit-search-subtree
1108 (treesit--thing-at (point) "call")
1109 (lambda (n) (equal (treesit-node-type n ) "integer"))
1110 t)))
1111
1112 (should node)
1113 (should (equal (treesit-node-text node) "2"))))
1114
1115
1086;; TODO 1116;; TODO
1087;; - Functions in treesit.el 1117;; - Functions in treesit.el
1088;; - treesit-load-name-override-list 1118;; - treesit-load-name-override-list