emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/phps-mode e340279 082/405: Added unit tests for moving


From: Stefan Monnier
Subject: [elpa] externals/phps-mode e340279 082/405: Added unit tests for moving lexer-state positions
Date: Sat, 13 Jul 2019 09:59:48 -0400 (EDT)

branch: externals/phps-mode
commit e340279f93bf060ed76568e15d00bd306cf411c3
Author: Christian Johansson <address@hidden>
Commit: Christian Johansson <address@hidden>

    Added unit tests for moving lexer-state positions
---
 phps-lexer.el      | 41 +++++++++++++++++++++++++++--------------
 phps-test-lexer.el | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 80 insertions(+), 14 deletions(-)

diff --git a/phps-lexer.el b/phps-lexer.el
index 18ee244..0478323 100644
--- a/phps-lexer.el
+++ b/phps-lexer.el
@@ -1284,8 +1284,23 @@ ANY_CHAR'
 
 (defun phps-mode/get-moved-lexer-states (states start diff)
   "Return moved lexer STATES after (or equal to) START with modification DIFF."
-  ;; TODO Implement this
-  )
+  (let ((old-states states)
+        (new-states '()))
+    (when old-states
+
+      ;; Iterate through states add states before start start unchanged and 
the others modified with diff
+      (dolist (state-object (nreverse old-states))
+        (let ((state-start (nth 0 state-object))
+              (state-end (nth 1 state-object))
+              (state-symbol (nth 2 state-object))
+              (state-stack (nth 3 state-object)))
+          (if (>= state-start start)
+            (let ((new-state-start (+ state-start diff))
+                  (new-state-end (+ state-end diff)))
+              (push (list new-state-start new-state-end state-symbol 
state-stack) new-states))
+            (push state-object new-states)))))
+
+    new-states))
 
 (defun phps-mode/lexer-move-lexer-tokens (start diff)
   "Update tokens with moved lexer tokens after or equal to START with 
modification DIFF."
@@ -1296,18 +1311,16 @@ ANY_CHAR'
   (let ((new-tokens '()))
     (when old-tokens
 
-      ;; Iterate over all tokens, add those that are to be left unchanged and
-      ;; add modified ones that are to be changed.
-      (catch 'stop-iteration
-        (dolist (token (nreverse old-tokens))
-          (let ((token-symbol (car token))
-                (token-start (car (cdr token)))
-                (token-end (cdr (cdr token))))
-            (if (>= token-start start)
-                (let ((new-token-start (+ token-start diff))
-                      (new-token-end (+ token-end diff)))
-                  (push `(,token-symbol ,new-token-start . ,new-token-end) 
new-tokens))
-              (push token new-tokens))))))
+      ;; Iterate over all tokens, add those that are to be left unchanged and 
add modified ones that should be changed.
+      (dolist (token (nreverse old-tokens))
+        (let ((token-symbol (car token))
+              (token-start (car (cdr token)))
+              (token-end (cdr (cdr token))))
+          (if (>= token-start start)
+              (let ((new-token-start (+ token-start diff))
+                    (new-token-end (+ token-end diff)))
+                (push `(,token-symbol ,new-token-start . ,new-token-end) 
new-tokens))
+            (push token new-tokens)))))
 
     new-tokens))
 
diff --git a/phps-test-lexer.el b/phps-test-lexer.el
index e2401d5..629b17d 100644
--- a/phps-test-lexer.el
+++ b/phps-test-lexer.el
@@ -294,6 +294,58 @@
 
   )
 
+(defun phps-mode/test-get-moved-lexer-states ()
+  "Run test for get moved lexer states."
+
+  (should (equal
+           '((68 76 1 '(1))
+             (10 67 1 '(1))
+             (1 7 1 '(1)))
+           
+           (phps-mode/get-moved-lexer-states
+            '((66 74 1 '(1))
+              (8 65 1 '(1))
+              (1 7 1 '(1)))
+            7
+            2)))
+
+  (should (equal
+           '((67 75 1 '(1))
+             (9 66 1 '(1))
+             (2 8 1 '(1)))
+           
+           (phps-mode/get-moved-lexer-states
+            '((66 74 1 '(1))
+              (8 65 1 '(1))
+              (1 7 1 '(1)))
+            0
+            1)))
+
+  (should (equal
+           '((66 74 1 '(1))
+             (8 65 1 '(1))
+             (1 7 1 '(1)))
+           
+           (phps-mode/get-moved-lexer-states
+            '((66 74 1 '(1))
+              (8 65 1 '(1))
+              (1 7 1 '(1)))
+            100
+            1)))
+
+  (should (equal
+           '((64 72 1 '(1))
+             (6 63 1 '(1))
+             (1 7 1 '(1)))
+           
+           (phps-mode/get-moved-lexer-states
+            '((66 74 1 '(1))
+              (8 65 1 '(1))
+              (3 9 1 '(1)))
+            3
+            -2)))
+  )
+
 (defun phps-mode/test-lexer ()
   "Run test for lexer."
   ;; (message "-- Running all tests for lexer... --\n")
@@ -304,6 +356,7 @@
   (phps-mode/test-lexer--namespaces)
   (phps-mode/test-lexer--errors)
   (phps-mode/test-get-moved-lexer-tokens)
+  (phps-mode/test-get-moved-lexer-states)
   ;; (message "\n-- Ran all tests for lexer. --")
   )
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]