Fix indentation error in js.el
* lisp/progmodes/js.el (js--indent-in-array-comp): Wrap forward-sexp call in condition-case. * test/lisp/progmodes/js-tests.el (js-mode-indentation-error): New test.
This commit is contained in:
parent
7b49bd44b7
commit
e52287ca3e
2 changed files with 20 additions and 5 deletions
|
@ -1986,11 +1986,16 @@ In particular, return the buffer position of the first `for' kwd."
|
|||
(js--forward-syntactic-ws)
|
||||
(if (looking-at "[[{]")
|
||||
(let (forward-sexp-function) ; Use Lisp version.
|
||||
(forward-sexp) ; Skip destructuring form.
|
||||
(js--forward-syntactic-ws)
|
||||
(if (and (/= (char-after) ?,) ; Regular array.
|
||||
(looking-at "for"))
|
||||
(match-beginning 0)))
|
||||
(condition-case nil
|
||||
(progn
|
||||
(forward-sexp) ; Skip destructuring form.
|
||||
(js--forward-syntactic-ws)
|
||||
(if (and (/= (char-after) ?,) ; Regular array.
|
||||
(looking-at "for"))
|
||||
(match-beginning 0)))
|
||||
(scan-error
|
||||
;; Nothing to do here.
|
||||
nil)))
|
||||
;; To skip arbitrary expressions we need the parser,
|
||||
;; so we'll just guess at it.
|
||||
(if (and (> end (point)) ; Not empty literal.
|
||||
|
|
|
@ -118,6 +118,16 @@ if (!/[ (:,='\"]/.test(value)) {
|
|||
;; implementation not recognizing the comment example.
|
||||
(should-not (syntax-ppss-context (syntax-ppss))))))
|
||||
|
||||
(ert-deftest js-mode-indentation-error ()
|
||||
(with-temp-buffer
|
||||
(js-mode)
|
||||
;; The bug previously was that requesting re-indentation on the
|
||||
;; "{" line here threw an exception.
|
||||
(insert "const TESTS = [\n{")
|
||||
(js-indent-line)
|
||||
;; Any success is ok here.
|
||||
(should t)))
|
||||
|
||||
(provide 'js-tests)
|
||||
|
||||
;;; js-tests.el ends here
|
||||
|
|
Loading…
Add table
Reference in a new issue