[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/phps-mode f26c45586d 046/135: More work on bookkeeping
From: |
Christian Johansson |
Subject: |
[elpa] externals/phps-mode f26c45586d 046/135: More work on bookkeeping |
Date: |
Sun, 29 Jan 2023 03:11:02 -0500 (EST) |
branch: externals/phps-mode
commit f26c45586d80af2986e5abe446976956b007167c
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
More work on bookkeeping
---
phps-mode-parser-sdt.el | 135 +++++++++++++++++++++++++++++-------------------
1 file changed, 81 insertions(+), 54 deletions(-)
diff --git a/phps-mode-parser-sdt.el b/phps-mode-parser-sdt.el
index 668ac6e88a..22422ec05f 100644
--- a/phps-mode-parser-sdt.el
+++ b/phps-mode-parser-sdt.el
@@ -611,15 +611,15 @@
#s(hash-table size 12 test equal rehash-size 1.5 rehash-threshold 0.8125
data ("$_GET" 1 "$_POST" 1 "$_COOKIE" 1 "$_SESSION" 1 "$_REQUEST" 1 "$GLOBALS"
1 "$_SERVER" 1 "$_FILES" 1 "$_ENV" 1 "$argc" 1 "$argv" 1
"$http_​response_​header" 1))
"Hash-table of super-global variables.")
-(defun phps-mode-parser-sdt--get-namespaced-symbol-name (symbol-name)
- "Get namespaced SYMBOL-NAME."
+(defun phps-mode-parser-sdt--get-namespaced-symbol-name (symbol-name scope)
+ "Get namespaced SYMBOL-NAME in SCOPE."
(let ((namespace)
(class)
(interface)
(trait)
(function))
- (when phps-mode-parser-sdt--bookkeeping-namespace
- (dolist (item phps-mode-parser-sdt--bookkeeping-namespace)
+ (when scope
+ (dolist (item scope)
(let ((space-type (car item))
(space-name (car (cdr item))))
(cond
@@ -689,18 +689,27 @@
(dolist (
symbol-list
phps-mode-parser-sdt--bookkeeping-symbol-assignment-stack)
- (let ((symbol-name (car symbol-list))
- (symbol-start (car (cdr symbol-list)))
- (symbol-end (car (cdr (cdr symbol-list)))))
- (if (gethash symbol-name phps-mode-parser-sdt-bookkeeping)
+ (let* ((symbol-name (car symbol-list))
+ (symbol-scope (car (cdr symbol-list)))
+ (symbol-start (car (cdr (cdr symbol-list))))
+ (symbol-end (car (cdr (cdr (cdr symbol-list)))))
+ (symbol-id
+ (phps-mode-parser-sdt--get-namespaced-symbol-name
+ symbol-name
+ symbol-scope)))
+ (message "assign id: %S from %S + %S"
+ symbol-id
+ symbol-name
+ symbol-scope)
+ (if (gethash symbol-id phps-mode-parser-sdt-bookkeeping)
(puthash
- symbol-name
+ symbol-id
(append
- (gethash symbol-name phps-mode-parser-sdt-bookkeeping)
+ (gethash symbol-id phps-mode-parser-sdt-bookkeeping)
(list symbol-start symbol-end))
phps-mode-parser-sdt-bookkeeping)
(puthash
- symbol-name
+ symbol-id
(list
(list
symbol-start
@@ -711,14 +720,19 @@
nil))
(when phps-mode-parser-sdt--bookkeeping-symbol-stack
- ;; Bookkeeping hit / misses of symbols here
+ ;; Bookkeeping hit / misses of symbol references here
;; TODO Should consider declaration position as well?
(dolist (
symbol-list
phps-mode-parser-sdt--bookkeeping-symbol-stack)
- (let ((symbol-name (car symbol-list))
- (symbol-start (car (cdr symbol-list)))
- (symbol-end (car (cdr (cdr symbol-list)))))
+ (let* ((symbol-name (car symbol-list))
+ (symbol-scope (car (cdr symbol-list)))
+ (symbol-start (car (cdr (cdr symbol-list))))
+ (symbol-end (car (cdr (cdr (cdr symbol-list)))))
+ (symbol-id
+ (phps-mode-parser-sdt--get-namespaced-symbol-name
+ symbol-name
+ symbol-scope)))
(cond
;; Super-global variable
@@ -734,7 +748,7 @@
;; Declared variable
((gethash
- symbol-name
+ symbol-id
phps-mode-parser-sdt-bookkeeping)
(puthash
(list
@@ -1889,8 +1903,9 @@
(attributed-parameter-name
(plist-get attributed-parameter 'ast-name))
(symbol-name
- (phps-mode-parser-sdt--get-namespaced-symbol-name
- attributed-parameter-name))
+ attributed-parameter-name)
+ (symbol-scope
+ phps-mode-parser-sdt--bookkeeping-namespace)
(symbol-start
(plist-get attributed-parameter 'ast-start))
(symbol-end
@@ -1898,19 +1913,21 @@
(push
(list
symbol-name
+ symbol-scope
symbol-start
symbol-end)
phps-mode-parser-sdt--bookkeeping-symbol-assignment-stack)))))))
- ;; (message
- ;; "phps-mode-parser-sdt--bookkeeping-symbol-assignment-stack: %S"
- ;; phps-mode-parser-sdt--bookkeeping-symbol-assignment-stack)
- ;; (message
- ;; "phps-mode-parser-sdt--bookkeeping-symbol-stack: %S"
- ;; phps-mode-parser-sdt--bookkeeping-symbol-stack)
+ (message "before:")
+ (message
+ "phps-mode-parser-sdt--bookkeeping-symbol-assignment-stack: %S"
+ phps-mode-parser-sdt--bookkeeping-symbol-assignment-stack)
+ (message
+ "phps-mode-parser-sdt--bookkeeping-symbol-stack: %S"
+ phps-mode-parser-sdt--bookkeeping-symbol-stack)
;; Go through stacks and modify symbol namespaces
- ;; but only for non-super-global variables
+ ;; - add function scope but only for non-super-global variables
(let ((function-name (nth 2 args)))
(when phps-mode-parser-sdt--bookkeeping-symbol-assignment-stack
(dolist (
@@ -1920,12 +1937,13 @@
(unless (gethash
symbol-name
phps-mode-parser-sdt--bookkeeping--superglobal-variable-p)
- (setcar
- symbol-list
- (format
- " function %s%s"
- function-name
- symbol-name))))))
+ (let ((symbol-scope (car (cdr symbol-list))))
+ (push
+ (list 'function function-name)
+ symbol-scope)
+ (setcar
+ (cdr symbol-list)
+ symbol-scope))))))
(when phps-mode-parser-sdt--bookkeeping-symbol-stack
(dolist (
symbol-list
@@ -1934,12 +1952,23 @@
(unless (gethash
symbol-name
phps-mode-parser-sdt--bookkeeping--superglobal-variable-p)
- (setcar
- symbol-list
- (format
- " function %s%s"
- function-name
- symbol-name)))))))
+ (let ((symbol-scope (car (cdr symbol-list))))
+ (push
+ (list 'function function-name)
+ symbol-scope)
+ (setcar
+ (cdr symbol-list)
+ symbol-scope)))))))
+
+
+ (message "after:")
+ (message
+ "phps-mode-parser-sdt--bookkeeping-symbol-assignment-stack: %S"
+ phps-mode-parser-sdt--bookkeeping-symbol-assignment-stack)
+ (message
+ "phps-mode-parser-sdt--bookkeeping-symbol-stack: %S"
+ phps-mode-parser-sdt--bookkeeping-symbol-stack)
+
`(
ast-type
@@ -2019,12 +2048,10 @@
(unless (gethash
symbol-name
phps-mode-parser-sdt--bookkeeping--superglobal-variable-p)
- (setcar
- symbol-list
- (format
- " class %s%s"
- class-name
- symbol-name))))))
+ (let ((symbol-scope (car (cdr symbol-list))))
+ (push
+ (list 'class class-name)
+ symbol-scope))))))
(when phps-mode-parser-sdt--bookkeeping-symbol-stack
(dolist (
symbol-list
@@ -2033,12 +2060,10 @@
(unless (gethash
symbol-name
phps-mode-parser-sdt--bookkeeping--superglobal-variable-p)
- (setcar
- symbol-list
- (format
- " class %s%s"
- class-name
- symbol-name)))))))
+ (let ((symbol-scope (car (cdr symbol-list))))
+ (push
+ (list 'class class-name)
+ symbol-scope)))))))
`(
ast-type
@@ -3493,17 +3518,19 @@
callable-variable-simple-variable
'variable))
(symbol-name
- (phps-mode-parser-sdt--get-namespaced-symbol-name
- variable-name))
+ variable-name)
(symbol-start
(car (cdr (car terminals))))
(symbol-end
- (cdr (cdr (car terminals)))))
+ (cdr (cdr (car terminals))))
+ (symbol-scope
+ phps-mode-parser-sdt--bookkeeping-namespace))
;; (message "declared variable from terminals: %S"
terminals)
(push
(list
symbol-name
+ symbol-scope
symbol-start
symbol-end)
phps-mode-parser-sdt--bookkeeping-symbol-assignment-stack))))))))))))
@@ -5406,8 +5433,7 @@
515
(lambda(args terminals)
(let ((symbol-name
- (phps-mode-parser-sdt--get-namespaced-symbol-name
- args))
+ args)
(symbol-start
(car (cdr terminals)))
(symbol-end
@@ -5415,6 +5441,7 @@
(push
(list
symbol-name
+ phps-mode-parser-sdt--bookkeeping-namespace
symbol-start
symbol-end)
phps-mode-parser-sdt--bookkeeping-symbol-stack))
- [elpa] externals/phps-mode 393edecde0 009/135: Started with bookkeeping index of objects, (continued)
- [elpa] externals/phps-mode 393edecde0 009/135: Started with bookkeeping index of objects, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode fd28fcbed3 012/135: Added SDT for unset_variables and more, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode 8c71d3838e 018/135: Added SDT for type, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode c782b18dc0 027/135: Merge branch 'master' into feature/full-sdt, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode a07fd20026 008/135: Keeping track of global namespace directly from SDT, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode 67635aa9ee 015/135: Added SDT for for-statement and foreach-statements, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode f28ea09743 020/135: SDT is not using get-list-of-object function anymore, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode dd672cd243 021/135: More SDT, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode c4d9f8d909 038/135: More work on SDT, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode 442b5202d4 040/135: Bookkeeping via SDT passing second test, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode f26c45586d 046/135: More work on bookkeeping,
Christian Johansson <=
- [elpa] externals/phps-mode ddc1213d83 002/135: Typo in production number, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode 7a3b86b11d 011/135: Added SDT for all statements, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode b68d94ee08 030/135: More SDT rules, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode eb07936ea8 036/135: added todo notes, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode 0ca63fe2b6 041/135: Passing another bookkeeping test via SDT, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode e74d0fd634 010/135: SDT for inner_statement, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode 8dc2235f17 017/135: Added SDT for if_stmt, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode d73af7968e 033/135: SDT to 538, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode 0e8923c0bd 042/135: Passed super-globals bookkeeping test via SDT, Christian Johansson, 2023/01/29
- [elpa] externals/phps-mode cc584ff4d6 061/135: Bookkeping of static class properties test passing, Christian Johansson, 2023/01/29