[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/phps-mode e82483e 6/7: More testing of generating imenu
From: |
Christian Johansson |
Subject: |
[elpa] externals/phps-mode e82483e 6/7: More testing of generating imenu-index via parser SDT |
Date: |
Sun, 7 Nov 2021 14:21:38 -0500 (EST) |
branch: externals/phps-mode
commit e82483ee7fb40fe29638b701a7a4f2fee68deb20
Author: Christian Johansson <christian@cvj.se>
Commit: Christian Johansson <christian@cvj.se>
More testing of generating imenu-index via parser SDT
---
test/phps-mode-test-parser.el | 100 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 100 insertions(+)
diff --git a/test/phps-mode-test-parser.el b/test/phps-mode-test-parser.el
index 87ec3f1..607682a 100644
--- a/test/phps-mode-test-parser.el
+++ b/test/phps-mode-test-parser.el
@@ -348,6 +348,106 @@
;; TODO Test bookkeeping here
)))
+ (let ((imenu-index)
+ (imenu-functions)
+ (imenu-namespaces)
+ (imenu-classes)
+ (imenu-methods))
+
+ ;; function_declaration_statement -> (function returns_ref T_STRING
backup_doc_comment "(" parameter_list ")" return_type backup_fn_flags "{"
inner_statement_list "}" backup_fn_flags)
+ (puthash
+ 174
+ (lambda(args terminals)
+ (let ((ast-object
+ (list
+ (nth 2 args)
+ (car (cdr (nth 2 terminals)))
+ (car (cdr (nth 9 terminals)))
+ (car (cdr (nth 11 terminals))))))
+ (message "Function: %S" ast-object)
+ ;; (message "terminals: %S" terminals)
+ (push
+ ast-object
+ imenu-functions)))
+ phps-mode-parser--table-translations)
+
+ ;; attributed_class_statement -> (method_modifiers function returns_ref
identifier backup_doc_comment "(" parameter_list ")" return_type
backup_fn_flags method_body backup_fn_flags)
+ (puthash
+ 280
+ (lambda(args terminals)
+ (let ((ast-object
+ (list
+ (nth 3 args)
+ (car (cdr (nth 3 terminals)))
+ (car (cdr (car (nth 10 terminals))))
+ (cdr (cdr (car (cdr (cdr (nth 10 terminals)))))))))
+ (message "Method: %S" ast-object)
+ ;; (message "terminals: %S" terminals)
+ (push
+ ast-object
+ imenu-methods)))
+ phps-mode-parser--table-translations)
+
+ ;; top_statement -> (T_NAMESPACE namespace_declaration_name ";")
+ (puthash
+ 106
+ (lambda(args terminals)
+ (let ((ast-object
+ (list
+ (nth 1 args)
+ (car (cdr (nth 1 terminals)))
+ (car (cdr (nth 2 terminals)))
+ 'max)))
+ (message "Namespace %S" ast-object)
+ ;; (message "terminals: %S" terminals)
+ (push
+ ast-object
+ imenu-namespaces)))
+ phps-mode-parser--table-translations)
+
+ ;; class_declaration_statement -> (T_CLASS T_STRING extends_from
implements_list backup_doc_comment "{" class_statement_list "}")
+ (puthash
+ 180
+ (lambda(args terminals)
+ (let ((ast-object
+ (list
+ (nth 1 args)
+ (car (cdr (nth 1 terminals)))
+ (car (cdr (nth 5 terminals)))
+ (car (cdr (nth 7 terminals))))))
+ (message "Class %S" ast-object)
+ ;; (message "terminals: %S" terminals)
+ (push
+ ast-object
+ imenu-classes)))
+ phps-mode-parser--table-translations)
+
+ (phps-mode-test-parser--buffer-contents
+ "<?php\n\nnamespace MyNamespace;\n\nfunction aFunction() {\n /**\n
* With some contents\n */\n}\n\nclass MyClass\n{\n\n /**\n *\n
*/\n public function __construct()\n {\n if ($test) {\n }\n
}\n\n /**\n *\n */\n public function myFunction1()\n {\n
$this->addMessage(\"My random {$message} here\" . ($random > 1 ? \"A\" :
\"\") . \" was here.\");\n }\n \n /**\n *\n */\n public
function myFunction2() [...]
+ "Imenu with double quoted string with variable inside it and concatenated
string"
+ (lambda()
+ (let ((parse (phps-mode-parser-parse)))
+ (message "Left-to-right with left-most derivation:\n%S\n" parse)
+ (dolist (production-number (reverse parse))
+ (let ((production
+ (phps-mode-parser--get-grammar-production-by-number
+ production-number)))
+ (message
+ "%d: %S -> %S"
+ production-number
+ (car (car production))
+ (car (cdr production))))))
+ (phps-mode-parser-translate)
+ (setq
+ imenu-index
+ (nreverse imenu-index))
+ (should
+ (equal
+ imenu-index
+ '(("MyNamespace" ("MyClass" ("__construct" . 92) ("myFunction1" .
193) ("myFunction2" . 365) ("myFunction3" . 445) ("myFunction4" . 515))))))
+ ;; TODO Test bookkeeping here
+ )))
+
(message "\n-- Ran tests for parser translation. --"))
(defun phps-mode-test-parser ()
- [elpa] externals/phps-mode updated (38e99b2 -> 3734d56), Christian Johansson, 2021/11/07
- [elpa] externals/phps-mode 19dd2c7 2/7: Improved incremental test and fixed bug with inconsistent parse variable after incremental parse, Christian Johansson, 2021/11/07
- [elpa] externals/phps-mode 1c75371 1/7: Added FSF header to generated parser script, Christian Johansson, 2021/11/07
- [elpa] externals/phps-mode 004f60d 3/7: Started on test for SDT, Christian Johansson, 2021/11/07
- [elpa] externals/phps-mode 8ec76e8 5/7: Improved parser to pass more meta-data about tokens for SDT, Christian Johansson, 2021/11/07
- [elpa] externals/phps-mode 3734d56 7/7: More testing with generating AST, Christian Johansson, 2021/11/07
- [elpa] externals/phps-mode 5994746 4/7: Started on generating imenu-index via parser translation, Christian Johansson, 2021/11/07
- [elpa] externals/phps-mode e82483e 6/7: More testing of generating imenu-index via parser SDT,
Christian Johansson <=