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

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

[nongnu] elpa/typescript-mode 09bdb97c32 065/222: Fix an indentation bug


From: ELPA Syncer
Subject: [nongnu] elpa/typescript-mode 09bdb97c32 065/222: Fix an indentation bug.
Date: Sun, 6 Feb 2022 16:59:16 -0500 (EST)

branch: elpa/typescript-mode
commit 09bdb97c32b52e33a229d7b7d06633ccda8701e8
Author: Louis-Dominique Dubeau <ldd@lddubeau.com>
Commit: Louis-Dominique Dubeau <ldd@lddubeau.com>

    Fix an indentation bug.
    
    In a return value annotation, a generic in a position other than the
    last in a union of types (e.g. Array<number> | number) was causing the
    algorithm to go off-track.
---
 test-files/indentation-reference-document.ts |  7 +++++++
 typescript-mode.el                           | 25 +++++++++++++++----------
 2 files changed, 22 insertions(+), 10 deletions(-)

diff --git a/test-files/indentation-reference-document.ts 
b/test-files/indentation-reference-document.ts
index d6e3124f0f..2fdf6ef337 100644
--- a/test-files/indentation-reference-document.ts
+++ b/test-files/indentation-reference-document.ts
@@ -282,6 +282,13 @@ function bif(a: number,
     return "abc):d";
 }
 
+// Generic and union in return type. This case was constructed from
+// a specific bug in the indentation code.
+function bif2(a: number,
+              b: number): Array<number> | number {
+    return 1;
+}
+
 // Comment where the return type would appear.
 function gogo(a: number,
               b: number) /* foo */ {
diff --git a/typescript-mode.el b/typescript-mode.el
index 4b091fa64d..448a31e519 100644
--- a/typescript-mode.el
+++ b/typescript-mode.el
@@ -1808,18 +1808,23 @@ moved on success."
           (save-excursion
             (loop named search-loop
                   do (progn
-                       (if (eq (char-before) ?>)
-                           (if (looking-back "=>" (- (point) 2))
-                               ;; Move back over the arrow of an arrow 
function.
-                               (backward-char 2)
-                             ;; Otherwise, we are looking at the end of the 
parameters
-                             ;; list of a generic. We need to move back over 
the list.
-                             (backward-char)
-                             
(typescript--backward-over-generic-parameter-list))
-                         ;; General case: we just move back over the current 
sexp.
+                       (cond
+                        ((eq (char-before) ?>)
+                         (if (looking-back "=>" (- (point) 2))
+                             ;; Move back over the arrow of an arrow function.
+                             (backward-char 2)
+                           ;; Otherwise, we are looking at the end of the 
parameters
+                           ;; list of a generic. We need to move back over the 
list.
+                           (backward-char)
+                           (typescript--backward-over-generic-parameter-list)))
+                        ;; Looking at a union: skip over the character.
+                        ((eq (char-before) ?|)
+                         (backward-char))
+                        ;; General case: we just move back over the current 
sexp.
+                        (t
                          (condition-case nil
                              (backward-sexp)
-                           (scan-error nil)))
+                           (scan-error nil))))
                        (typescript--backward-syntactic-ws)
                        (let ((before (char-before)))
                          ;; Check whether we are at "):".



reply via email to

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