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

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

[elpa] externals/phps-mode 69341c9709 039/212: More working on bookkeepi


From: Christian Johansson
Subject: [elpa] externals/phps-mode 69341c9709 039/212: More working on bookkeeping of class properties via parser SDT
Date: Wed, 26 Jan 2022 01:50:21 -0500 (EST)

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

    More working on bookkeeping of class properties via parser SDT
---
 phps-mode-ast-bookkeeping.el | 51 ++++++++++++++++++++++++++++++++------------
 phps-mode-parser-sdt.el      |  8 +++++--
 2 files changed, 43 insertions(+), 16 deletions(-)

diff --git a/phps-mode-ast-bookkeeping.el b/phps-mode-ast-bookkeeping.el
index 72437dcef3..b695406d00 100644
--- a/phps-mode-ast-bookkeeping.el
+++ b/phps-mode-ast-bookkeeping.el
@@ -557,24 +557,47 @@
            ((equal type 'array-object-dereferencable)
             (let* ((subject (plist-get item 'subject))
                    (property-name (plist-get item 'property))
-                   (downcase-subject-name (downcase (plist-get subject 
'name))))
+                   (downcase-subject-name (downcase (plist-get subject 'name)))
+                   (property-name (plist-get item 'property-name)))
 
               (cond
 
                ((string= downcase-subject-name "$this")
-                (let ((sub-variable-namespace
-                       (phps-mode-ast-bookkeeping--generate-variable-namespace
-                        namespace
-                        nil
-                        function))
-                      (sub-symbol-namespace
-                       (phps-mode-ast-bookkeeping--generate-variable-namespace
-                        namespace
-                        nil
-                        function)))
-                  ;; TODO Check bookkeeping here
-                  ;; (gethash id bookkeeping)
-                  ))
+                (let* ((sub-variable-namespace
+                        (phps-mode-ast-bookkeeping--generate-variable-namespace
+                         namespace
+                         nil
+                         function))
+                       (variable-id
+                        (format
+                         "%s id $%s"
+                         sub-variable-namespace
+                         property-name))
+                       (sub-symbol-namespace
+                        (phps-mode-ast-bookkeeping--generate-variable-namespace
+                         namespace
+                         nil
+                         function))
+                       (symbol-id
+                        (format
+                         "%s id %s"
+                         sub-variable-namespace
+                         property-name))
+                       (bookkeeping-object
+                        (list
+                         (plist-get item 'property-start)
+                         (plist-get item 'property-end))))
+                  (if (or
+                       (gethash variable-id bookkeeping)
+                       (gethash symbol-id bookkeeping))
+                      (puthash
+                       bookkeeping-object
+                       t
+                       bookkeeping)
+                    (puthash
+                     bookkeeping-object
+                     nil
+                     bookkeeping))))
 
                )))
 
diff --git a/phps-mode-parser-sdt.el b/phps-mode-parser-sdt.el
index 08ec076dc4..060e337288 100644
--- a/phps-mode-parser-sdt.el
+++ b/phps-mode-parser-sdt.el
@@ -600,7 +600,7 @@
 ;; 490: variable -> (array_object_dereferencable T_OBJECT_OPERATOR 
property_name)
 (puthash
  490
- (lambda(args _terminals)
+ (lambda(args terminals)
    (let ((ast-object
           (list
            'ast-type
@@ -608,7 +608,11 @@
            'subject
            (nth 0 args)
            'property-name
-           (nth 2 args))))
+           (nth 2 args)
+           'property-start
+           (car (cdr (nth 2 terminals)))
+           'property-end
+           (cdr (cdr (nth 2 terminals))))))
      ast-object))
  phps-mode-parser--table-translations)
 



reply via email to

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