summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2017-08-14 00:41:03 -0600
committerGitHub <noreply@github.com>2017-08-14 00:41:03 -0600
commit6e9db4665036ca6f0fe8eecf55cd243eaebccc62 (patch)
tree3d70674852b81ecf156ce0e081335ef06c4d59dc
parente48a650c44c06c1dd4e4ed0672c50c5446124203 (diff)
parent38f7d891e62ce8bb8ff60a8126fb4ce06af5b6b5 (diff)
downloadrust-mode-6e9db4665036ca6f0fe8eecf55cd243eaebccc62.tar.gz
Merge pull request #230 from tromey/fix-indentation-bug
Fix recognition of "<" as operator in some context
-rw-r--r--rust-mode-tests.el11
-rw-r--r--rust-mode.el3
2 files changed, 14 insertions, 0 deletions
diff --git a/rust-mode-tests.el b/rust-mode-tests.el
index 7335334..aab82df 100644
--- a/rust-mode-tests.el
+++ b/rust-mode-tests.el
@@ -2034,6 +2034,17 @@ fn main() {
baz();
}"))
+;; Regression test for #212.
+(ert-deftest indent-left-shift ()
+ (test-indent "
+fn main() {
+ let a = [[0u32, 0u32]; 1];
+ let i = 0;
+ let x = a[i][(1 < i)];
+ let x = a[i][(1 << i)];
+}
+"))
+
(defun rust-test-matching-parens (content pairs &optional nonparen-positions)
"Assert that in rust-mode, given a buffer with the given `content',
emacs's paren matching will find all of the pairs of positions
diff --git a/rust-mode.el b/rust-mode.el
index 1c0921b..ed5b5ed 100644
--- a/rust-mode.el
+++ b/rust-mode.el
@@ -812,6 +812,9 @@ match data if found. Returns nil if not within a Rust string."
;; it to be an expression.
((and (equal token 'open-brace) (rust-looking-back-macro)) t)
+ ;; In a brace context a "]" introduces an expression.
+ ((and (eq token 'open-brace) (rust-looking-back-str "]")))
+
;; An identifier is right after an ending paren, bracket, angle bracket
;; or curly brace. It's a type if the last sexp was a type.
((and (equal token 'ident) (equal 5 (rust-syntax-class-before-point)))