]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix previous commit on tree-sitter
authorYuan Fu <casouri@gmail.com>
Fri, 14 Apr 2023 01:45:07 +0000 (18:45 -0700)
committerYuan Fu <casouri@gmail.com>
Fri, 14 Apr 2023 01:47:41 +0000 (18:47 -0700)
* src/treesit.c:
(treesit_traverse_validate_predicate): Don't accept symbols.
(treesit_traverse_match_predicate): Don't accept symbols, and use
correct variable for the regexp and pred check.

* test/src/treesit-tests.el:
(treesit-search-forward-predicate): Fix the test.

src/treesit.c
test/src/treesit-tests.el

index 45b5ab1539016e4997a9d5f490a8606f5a3959bb..d0d9c50c14f7f944ca1b6a2280375b9213ef6195 100644 (file)
@@ -3148,9 +3148,7 @@ treesit_traverse_validate_predicate (Lisp_Object pred,
 {
   if (STRINGP (pred))
     return true;
-  /* We want to allow cl-labels-defined functions, so we allow
-     symbols.  */
-  else if (FUNCTIONP (pred) || SYMBOLP (pred))
+  else if (FUNCTIONP (pred))
     return true;
   else if (CONSP (pred))
     {
@@ -3194,8 +3192,7 @@ treesit_traverse_validate_predicate (Lisp_Object pred,
            }
          return true;
        }
-      /* We allow the function to be a symbol to support cl-label. */
-      else if (STRINGP (car) && (FUNCTIONP (cdr) || SYMBOLP (cdr)))
+      else if (STRINGP (car) && FUNCTIONP (cdr))
        return true;
     }
   *signal_data = list2 (build_string ("Invalid predicate, see TODO for "
@@ -3230,9 +3227,7 @@ treesit_traverse_match_predicate (TSTreeCursor *cursor, Lisp_Object pred,
       const char *type = ts_node_type (node);
       return fast_c_string_match (pred, type, strlen (type)) >= 0;
     }
-  /* We want to allow cl-labels-defined functions, so we allow
-     symbols.  */
-  else if (FUNCTIONP (pred) || SYMBOLP (pred))
+  else if (FUNCTIONP (pred))
     {
       Lisp_Object lisp_node = make_treesit_node (parser, node);
       return !NILP (CALLN (Ffuncall, pred, lisp_node));
@@ -3255,17 +3250,15 @@ treesit_traverse_match_predicate (TSTreeCursor *cursor, Lisp_Object pred,
            }
          return false;
        }
-      /* We want to allow cl-labels-defined functions, so we allow
-        symbols.  */
-      else if (STRINGP (car) && (FUNCTIONP (cdr) || SYMBOLP (cdr)))
+      else if (STRINGP (car) && FUNCTIONP (cdr))
        {
          /* A bit of code duplication here, but should be fine.  */
          const char *type = ts_node_type (node);
-         if (!(fast_c_string_match (pred, type, strlen (type)) >= 0))
+         if (!(fast_c_string_match (car, type, strlen (type)) >= 0))
            return false;
 
          Lisp_Object lisp_node = make_treesit_node (parser, node);
-         if (NILP (CALLN (Ffuncall, pred, lisp_node)))
+         if (NILP (CALLN (Ffuncall, cdr, lisp_node)))
            return false;
 
          return true;
index 26a21c341527b1d9d7a59b7e2892df4adf85d2ad..34f9f15beaac0c1bf9653d34fb0684cb31123ec6 100644 (file)
@@ -363,11 +363,12 @@ BODY is the test body."
             while cursor
             do (should (equal (treesit-node-text cursor) text)))
    ;; Test (regexp . function)
-   (cl-labels ((is-odd (string)
-                 (and (eq 1 (length string))
-                      (cl-oddp (string-to-number string)))))
+   (let ((is-odd (lambda (node)
+                   (let ((string (treesit-node-text node)))
+                     (and (eq 1 (length string))
+                          (cl-oddp (string-to-number string)))))))
      (cl-loop for cursor = (treesit-node-child array 0)
-              then (treesit-search-forward cursor '("number" . is-odd)
+              then (treesit-search-forward cursor `("number" . ,is-odd)
                                            nil t)
               for text in '("[" "1" "3" "5" "7" "9")
               while cursor