branch: elpa/swift-mode
commit 107195e137b8541bd82d0c5f629234a23e8532b2
Author: ap4y <l...@pisem.net>
Commit: ap4y <l...@pisem.net>

    Improve lexer rule for generics with optional or implicit unwrapping
---
 swift-mode.el             |  3 ++-
 test/indentation-tests.el | 27 +++++++++++++++++++++++++++
 2 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/swift-mode.el b/swift-mode.el
index aa665ec..c5412fb 100644
--- a/swift-mode.el
+++ b/swift-mode.el
@@ -285,7 +285,8 @@
 
      ((eq (char-before) ?<) (backward-char 1)
       (if (looking-at "<[[:upper:]]") "<T" "OP"))
-     ((eq (char-before) ?>) (backward-char 1)
+     ((looking-back ">[?!]?" (- (point) 2) t)
+      (goto-char (match-beginning 0))
       (if (looking-back "[[:space:]]" 1 t) "OP" "T>"))
 
      ((looking-back swift-smie--operators-regexp (- (point) 3) t)
diff --git a/test/indentation-tests.el b/test/indentation-tests.el
index d522756..65897e9 100644
--- a/test/indentation-tests.el
+++ b/test/indentation-tests.el
@@ -1752,6 +1752,33 @@ var object: JsonObject?
 |var object: JsonObject
 ")
 
+(check-indentation indents-expression-with-optional-type/2
+                   "
+var object: JsonObject<Foo>?
+    |var object: JsonObject
+" "
+var object: JsonObject<Foo>?
+|var object: JsonObject
+")
+
+(check-indentation indents-expression-with-implicit-unwrapped-type/1
+                   "
+var object: JsonObject!
+    |var object: JsonObject
+" "
+var object: JsonObject!
+|var object: JsonObject
+")
+
+(check-indentation indents-expression-with-implicit-unwrapped-type/2
+                   "
+var object: JsonObject<Foo>!
+    |var object: JsonObject
+" "
+var object: JsonObject<Foo>!
+|var object: JsonObject
+")
+
 (provide 'indentation-tests)
 
 ;;; indentation-tests.el ends here

Reply via email to