emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/phps-mode c7e308a13f 024/212: Added SDT foreach($x as $


From: Christian Johansson
Subject: [elpa] externals/phps-mode c7e308a13f 024/212: Added SDT foreach($x as $key => $value)
Date: Wed, 26 Jan 2022 01:50:17 -0500 (EST)

branch: externals/phps-mode
commit c7e308a13f39edaa0f45094aedc947fc1c45b31b
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>

    Added SDT foreach($x as $key => $value)
---
 phps-mode-ast.el | 65 +++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 file changed, 57 insertions(+), 8 deletions(-)

diff --git a/phps-mode-ast.el b/phps-mode-ast.el
index 883c4d18b6..2110d3aa36 100644
--- a/phps-mode-ast.el
+++ b/phps-mode-ast.el
@@ -171,13 +171,32 @@
            'foreach
            'expression
            (nth 2 args)
-           'as
+           'value
            (nth 4 args)
            'children
            (nth 6 args))))
      ast-object))
  phps-mode-parser--table-translations)
 
+;; 157: statement -> (T_FOREACH "(" expr T_AS foreach_variable T_DOUBLE_ARROW 
foreach_variable ")" foreach_statement)
+(puthash
+ 157
+ (lambda(args _terminals)
+   (let ((ast-object
+          (list
+           'ast-type
+           'foreach
+           'expression
+           (nth 2 args)
+           'key
+           (nth 4 args)
+           'value
+           (nth 6 args)
+           'children
+           (nth 8 args))))
+     ast-object))
+ phps-mode-parser--table-translations)
+
 ;; function_declaration_statement -> (function returns_ref T_STRING 
backup_doc_comment "(" parameter_list ")" return_type backup_fn_flags "{" 
inner_statement_list "}" backup_fn_flags)
 (puthash
  174
@@ -781,16 +800,45 @@
                      function
                      namespace)
                     condition)
+                   bookkeeping-stack)))
+              (let ((children (reverse (plist-get item 'children))))
+                (dolist (child children)
+                  (push
+                   (list
+                    (list
+                     class
+                     function
+                     namespace)
+                    child)
                    bookkeeping-stack))))
 
              ((equal type 'foreach)
-              (let ((id (format
-                         "%s id %s"
-                         variable-namespace
-                         (plist-get (plist-get item 'as) 'name)))
-                    (object (list
-                             (plist-get (plist-get item 'as) 'start)
-                             (plist-get (plist-get item 'as) 'end))))
+              ;; Optional key
+              (when-let ((key (plist-get item 'key)))
+                (let ((id (format
+                           "%s id %s"
+                           variable-namespace
+                           (plist-get key 'name)))
+                      (object (list
+                               (plist-get key 'start)
+                               (plist-get key 'end))))
+                  (puthash
+                   id
+                   1
+                   bookkeeping)
+                  (puthash
+                   object
+                   1
+                   bookkeeping)))
+
+              (let* ((value (plist-get item 'value))
+                     (id (format
+                          "%s id %s"
+                          variable-namespace
+                          (plist-get value 'name)))
+                     (object (list
+                              (plist-get value 'start)
+                              (plist-get value 'end))))
                 (puthash
                  id
                  1
@@ -799,6 +847,7 @@
                  object
                  1
                  bookkeeping))
+
               (let ((children (reverse (plist-get item 'children))))
                 (dolist (child children)
                   (push



reply via email to

[Prev in Thread] Current Thread [Next in Thread]