summaryrefslogtreecommitdiff
path: root/rust-mode-tests.el
diff options
context:
space:
mode:
authorWilfred Hughes <me@wilfred.me.uk>2015-12-30 11:24:35 +0000
committerWilfred Hughes <me@wilfred.me.uk>2016-01-05 23:57:01 +0000
commitdd6d417c1404efcf2364a61fd7e855ec134a991f (patch)
treeb03e0b6d9fb33d7287c3867c6c77990e095705ca /rust-mode-tests.el
parent061e6d8a3a9104570144f1eacb729e3211cb03cd (diff)
downloadrust-mode-dd6d417c1404efcf2364a61fd7e855ec134a991f.tar.gz
Fix type annotations incorrectly highlighted as modules.
Previously, we were always treating :: as a module, but Rust allows type annotations using :: e.g. parse::<i32>(); This also changes module highlighting so that only the module name is highlighted, excluding the ::. This makes rust-mode consistent with other Emacs modes, such as c++-mode and ruby-mode.
Diffstat (limited to 'rust-mode-tests.el')
-rw-r--r--rust-mode-tests.el21
1 files changed, 21 insertions, 0 deletions
diff --git a/rust-mode-tests.el b/rust-mode-tests.el
index e7a0429..e41245f 100644
--- a/rust-mode-tests.el
+++ b/rust-mode-tests.el
@@ -1403,6 +1403,27 @@ this_is_not_a_string();)"
"\"/*! doc */\""
'("\"/*! doc */\"" font-lock-string-face)))
+(ert-deftest font-lock-module ()
+ (rust-test-font-lock
+ "foo::bar"
+ '("foo" font-lock-type-face)))
+
+(ert-deftest font-lock-submodule ()
+ (rust-test-font-lock
+ "foo::bar::baz"
+ '("foo" font-lock-type-face
+ "bar" font-lock-type-face)))
+
+(ert-deftest font-lock-type-annotation ()
+ "Ensure type annotations are not confused with modules."
+ (rust-test-font-lock
+ "parse::<i32>();"
+ ;; Only the i32 should have been highlighted.
+ '("i32" font-lock-type-face))
+ (rust-test-font-lock
+ "foo:: <i32>"
+ ;; Only the i32 should have been highlighted.
+ '("i32" font-lock-type-face)))
(ert-deftest indent-method-chains-no-align ()
(let ((rust-indent-method-chain nil)) (test-indent