branch: externals/phps-mode
commit 395a4ed0454bdc256fb87c0351dd4f77465b3c1f
Author: Christian Johansson <[email protected]>
Commit: Christian Johansson <[email protected]>

    Started on bookkeeping via parser SDT for properties
---
 phps-mode-ast.el | 134 ++++++++++++++++++++++++++++++++++++++-----------------
 1 file changed, 93 insertions(+), 41 deletions(-)

diff --git a/phps-mode-ast.el b/phps-mode-ast.el
index 50576bc242..ccb378f909 100644
--- a/phps-mode-ast.el
+++ b/phps-mode-ast.el
@@ -662,6 +662,60 @@
 ;; Functions:
 
 
+(defun phps-mode-bookkeeping-generate-symbol-namespace
+    (&optional namespace class function)
+  "Generate symbol namespace for NAMESPACE, CLASS and FUNCTION."
+  (let ((symbol-namespace ""))
+    (when namespace
+      (setq
+       symbol-namespace
+       (format
+        "%s namespace %s"
+        symbol-namespace
+        namespace)))
+    (when class
+      (setq
+       symbol-namespace
+       (format
+        "%s class %s"
+        symbol-namespace
+        class)))
+    (when function
+      (setq
+       symbol-namespace
+       (format
+        "%s function %s"
+        symbol-namespace
+        function)))
+    symbol-namespace))
+
+(defun phps-mode-bookkeeping-generate-variable-namespace
+    (&optional namespace class function)
+  "Generate variable namespace for NAMESPACE, CLASS and FUNCTION."
+  (let ((variable-namespace ""))
+    (when class
+      (when namespace
+        (setq
+         variable-namespace
+         (format
+          "%s namespace %s"
+          variable-namespace
+          namespace)))
+      (setq
+       variable-namespace
+       (format
+        "%s class %s"
+        variable-namespace
+        class)))
+    (when function
+      (setq
+       variable-namespace
+       (format
+        "%s function %s"
+        variable-namespace
+        function)))
+    variable-namespace))
+
 (defun phps-mode-ast-generate ()
   "Generate AST for current buffer."
   (let ((translation (phps-mode-parser-translate))
@@ -812,46 +866,18 @@
                 (setq
                  item
                  (car (cdr item-raw)))
-                (when namespace
-                  (setq
-                   symbol-namespace
-                   (format
-                    "%s namespace %s"
-                    symbol-namespace
-                    namespace)))
-                (when class
-                  (setq
-                   symbol-namespace
-                   (format
-                    "%s class %s"
-                    symbol-namespace
-                    class))
-                  (when namespace
-                    (setq
-                     variable-namespace
-                     (format
-                      "%s namespace %s"
-                      variable-namespace
-                      namespace)))
-                  (setq
-                   variable-namespace
-                   (format
-                    "%s class %s"
-                    variable-namespace
-                    class)))
-                (when function
-                  (setq
-                   symbol-namespace
-                   (format
-                    "%s function %s"
-                    symbol-namespace
-                    function))
-                  (setq
-                   variable-namespace
-                   (format
-                    "%s function %s"
-                    variable-namespace
-                    function))))
+                (setq
+                 symbol-namespace
+                 (phps-mode-bookkeeping-generate-symbol-namespace
+                  namespace
+                  class
+                  function))
+                (setq
+                 variable-namespace
+                 (phps-mode-bookkeeping-generate-variable-namespace
+                  namespace
+                  class
+                  function)))
             (setq
              item
              item-raw))
@@ -1251,7 +1277,9 @@
                     (when static-p
                       (setq
                        class-namespace
-                       (format "%s static")))
+                       (format
+                        "%s static"
+                        class-namespace)))
                     (push
                      (list
                       (list
@@ -1283,6 +1311,30 @@
                 (plist-get item 'variable))
                bookkeeping-stack))
 
+             ((equal type 'array-object-dereferencable)
+              (let* ((subject (plist-get item 'subject))
+                     (property-name (plist-get item 'property))
+                     (downcase-subject (downcase subject)))
+
+                (cond
+
+                 ((string= downcase-subject "$this")
+                  (let ((sub-variable-namespace
+                         (phps-mode-bookkeeping-generate-variable-namespace
+                          namespace
+                          nil
+                          function))
+                        (sub-symbol-namespace
+                         (phps-mode-bookkeeping-generate-variable-namespace
+                          namespace
+                          nil
+                          function)))
+                    ;; TODO Check bookkeeping here
+                    ;; (gethash id bookkeeping)
+                    ))
+
+                 )))
+
              )))))
     (setq
      phps-mode-ast--bookkeeping

Reply via email to