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

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

[nongnu] elpa/swift-mode 2cb54c9 222/496: Make grammar for if statement


From: ELPA Syncer
Subject: [nongnu] elpa/swift-mode 2cb54c9 222/496: Make grammar for if statement a bit more precise
Date: Sun, 29 Aug 2021 11:33:40 -0400 (EDT)

branch: elpa/swift-mode
commit 2cb54c90fa4b629dec56882a0f811db897372ec6
Author: ap4y <lod@pisem.net>
Commit: ap4y <lod@pisem.net>

    Make grammar for if statement a bit more precise
    
    It still a bit hard to express actual grammar for this statements
---
 swift-mode.el             | 18 +++++++++--------
 test/indentation-tests.el | 50 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 60 insertions(+), 8 deletions(-)

diff --git a/swift-mode.el b/swift-mode.el
index 7fa4452..786763c 100644
--- a/swift-mode.el
+++ b/swift-mode.el
@@ -161,9 +161,11 @@
 
        (if-conditional (exp) (let-decl))
        (if-body ("if" if-conditional "{" insts "}"))
-       (if-clause (if-body) (if-body "else" if-body))
+       (if-clause (if-body)
+                  (if-body "elseif" if-conditional "{" insts "}")
+                  (if-body "else" "{" insts "}"))
 
-       (closure (insts) (id "in" insts) (id "->" id "in" insts)))
+       (closure (insts) (exp "in" insts) (exp "->" id "in" insts)))
      ;; Conflicts
      '((nonassoc "{") (assoc "in") (assoc ",") (assoc ";") (assoc ":") (right 
"="))
      '((assoc "in") (assoc "where") (assoc "OP"))
@@ -259,6 +261,9 @@
    ((looking-at "\\<default\\>")
     (goto-char (match-end 0)) "case")
 
+   ((looking-at "else if")
+    (goto-char (match-end 0)) "elseif")
+
    (t (let ((tok (smie-default-forward-token)))
         (cond
          ((equal tok "case")
@@ -303,6 +308,9 @@
      ((looking-back "\\<default\\>" (- (point) 9) t)
       (goto-char (match-beginning 0)) "case")
 
+     ((looking-back "else if" (- (point) 7) t)
+      (goto-char (match-beginning 0)) "elseif")
+
      (t (let ((tok (smie-default-backward-token)))
           (cond
            ((equal tok "case")
@@ -358,12 +366,6 @@
      (if (smie-rule-parent-p "class")
        (smie-rule-parent swift-indent-offset)))
 
-    (`(:before . "if")
-     (if (smie-rule-prev-p "else")
-         (if (smie-rule-parent-p "{")
-             (smie-rule-parent swift-indent-offset)
-           (smie-rule-parent))))
-
     ;; Disable unnecessary default indentation for
     ;; "func" and "class" keywords
     (`(:after . ,(or `"func" `"class")) (smie-rule-parent))
diff --git a/test/indentation-tests.el b/test/indentation-tests.el
index f3a2bc2..b5fa50e 100644
--- a/test/indentation-tests.el
+++ b/test/indentation-tests.el
@@ -1869,6 +1869,56 @@ foo.bar(10,
 )
 ")
 
+(check-indentation anonymous-function-as-a-argument/9
+                   "
+foo.bar(10,
+        completionHandler: { complete in
+
+            if foo {
+                bar
+            } else {
+            |bar
+            }
+        }
+)
+" "
+foo.bar(10,
+        completionHandler: { complete in
+
+            if foo {
+                bar
+            } else {
+                |bar
+            }
+        }
+)
+")
+
+(check-indentation anonymous-function-as-a-argument/10
+                   "
+foo.bar(10,
+        completionHandler: { complete in
+
+            if foo {
+                bar
+            } else {
+                bar
+        |}
+        }
+)
+" "
+foo.bar(10,
+        completionHandler: { complete in
+
+            if foo {
+                bar
+            } else {
+                bar
+            |}
+        }
+)
+")
+
 (check-indentation indents-expression-with-optional-type/1
                    "
 var object: JsonObject?



reply via email to

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