branch: externals/phps-mode
commit 69341c9709039cd730a39995543f73c7adc1be7b
Author: Christian Johansson <[email protected]>
Commit: Christian Johansson <[email protected]>
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)