diff options
| author | Wilfred Hughes <me@wilfred.me.uk> | 2015-12-30 11:24:35 +0000 |
|---|---|---|
| committer | Wilfred Hughes <me@wilfred.me.uk> | 2016-01-05 23:57:01 +0000 |
| commit | dd6d417c1404efcf2364a61fd7e855ec134a991f (patch) | |
| tree | b03e0b6d9fb33d7287c3867c6c77990e095705ca /rust-mode-tests.el | |
| parent | 061e6d8a3a9104570144f1eacb729e3211cb03cd (diff) | |
| download | rust-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.el | 21 |
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 |
