[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/phps-mode ad3b10e716 055/135: Added variable reference
From: |
Christian Johansson |
Subject: |
[elpa] externals/phps-mode ad3b10e716 055/135: Added variable reference to bookkeeping stack where it is referencing $this |
Date: |
Sun, 29 Jan 2023 03:11:03 -0500 (EST) |
branch: externals/phps-mode
commit ad3b10e71656d2e15f9d3a26071a30647df70ace
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
Added variable reference to bookkeeping stack where it is referencing $this
---
phps-mode-parser-sdt.el | 92 ++++++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 88 insertions(+), 4 deletions(-)
diff --git a/phps-mode-parser-sdt.el b/phps-mode-parser-sdt.el
index 87670c476d..e6c3be3d01 100644
--- a/phps-mode-parser-sdt.el
+++ b/phps-mode-parser-sdt.el
@@ -5640,8 +5640,83 @@
;; 513 ((variable) (array_object_dereferenceable T_OBJECT_OPERATOR
property_name))
(puthash
513
- (lambda(args _terminals)
- ;; TODO Add to stack variable reference here
+ (lambda(args terminals)
+ (let* ((array-object-dereferenceable (nth 0 args))
+ (array-object-dereferenceable-type
+ (plist-get
+ array-object-dereferenceable
+ 'ast-type)))
+ (when (equal
+ array-object-dereferenceable-type
+ 'array-object-dereferenceable-fully-dereferenceable)
+ (let* ((dereferenceable
+ (plist-get
+ array-object-dereferenceable
+ 'fully-dereferenceable))
+ (dereferencable-type
+ (plist-get
+ dereferenceable
+ 'ast-type)))
+ (when (equal
+ dereferencable-type
+ 'fully-dereferenceable-variable)
+ (let* ((fully-dereferenceable-variable
+ (plist-get
+ dereferenceable
+ 'variable))
+ (fully-dereferenceable-variable-type
+ (plist-get
+ fully-dereferenceable-variable
+ 'ast-type)))
+ (when (equal
+ fully-dereferenceable-variable-type
+ 'variable-callable-variable)
+ (let* ((callable-variable
+ (plist-get
+ fully-dereferenceable-variable
+ 'callable-variable))
+ (callable-variable-type
+ (plist-get
+ callable-variable
+ 'ast-type)))
+ (when (equal
+ callable-variable-type
+ 'callable-variable-simple-variable)
+ (let* ((simple-variable
+ (plist-get
+ (plist-get
+ callable-variable
+ 'simple-variable)
+ 'variable))
+ (simple-variable-lowercased
+ (downcase simple-variable)))
+ (let* ((property (nth 2 args))
+ (property-type (plist-get property 'ast-type)))
+ (when (equal
+ property-type
+ 'property-name-string)
+ (let ((property-string
+ (plist-get
+ property
+ 'string)))
+ (cond
+
+ ((string=
+ simple-variable-lowercased
+ "$this")
+ (let ((namespace
phps-mode-parser-sdt--bookkeeping-namespace))
+ (push (list 'object-operator) namespace)
+ (push
+ (list
+ property-string
+ namespace
+ (car (cdr (nth 0 terminals)))
+ (cdr (cdr (nth 2 terminals))))
+
phps-mode-parser-sdt--bookkeeping-symbol-stack)))
+
+ (t
+ ;; TODO Do something here?
+ ))))))))))))))
`(
ast-type
variable-array-object-dereferenceable-property-name
@@ -5685,6 +5760,10 @@
`(
ast-type
simple-variable-variable
+ ast-start
+ ,(car (cdr terminals))
+ ast-end
+ ,(cdr (cdr terminals))
variable
,args))
phps-mode-parser--table-translations)
@@ -5702,11 +5781,16 @@
;; 517 ((simple_variable) ("$" simple_variable))
(puthash
517
- (lambda(args _terminals)
+ (lambda(args terminals)
`(
ast-type
simple-variable-variable
- ,(nth 1 args)))
+ ,(nth 1 args)
+ ast-start
+ ,(car (cdr (nth 1 terminals)))
+ ast-end
+ ,(cdr (cdr (nth 1 terminals)))
+ ))
phps-mode-parser--table-translations)
;; 518 ((static_member) (class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable))
- [elpa] externals/phps-mode dbaf508512 052/135: Work on getting bookkeeping for class properties working, (continued)
- [elpa] externals/phps-mode dbaf508512 052/135: Work on getting bookkeeping for class properties working, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode 531c98cf2b 053/135: Improved bookkeeping of class properties, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode 5080effb1d 014/135: Added TODO item, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode cfcb795473 016/135: SDT for while_statement, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode 38ccb4e728 019/135: More SDT for argument and union_type and intersection_type, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode 7602348327 031/135: More SDT rules, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode 7dcaa1df9e 034/135: Added SDT rules for all productions, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode 258551c02a 035/135: More work on bookkeeping generation via SDT, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode e887dc91e3 043/135: Added TODO items, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode 002b27bfb7 054/135: Started on bookkeeping support via SDT for class properties via object operator, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode ad3b10e716 055/135: Added variable reference to bookkeeping stack where it is referencing $this,
Christian Johansson <=
- [elpa] externals/phps-mode 911abb044e 024/135: SDT method_body, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode 75743d0c25 022/135: Merge branch 'master' into feature/full-sdt, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode 610358e2ef 026/135: SDT for property, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode 4981a1eb45 032/135: SDT rules up to 520, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode b2454f1967 058/135: Bookkeeping of static class property, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode 962b905ca0 057/135: Bookkeeping working for class non-static properties, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode 7b9f8011f1 056/135: More testing, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode e2f2c86e18 059/135: Improved class properties bookkeeping test, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode eac10d63e6 063/135: Started on bookkeeping of variables inside anonymous functions, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode e924ac83b6 065/135: Improved bookkeeping test for anonymous function, Christian Johansson, 2023/01/29