From 05d67a9a0efafb3dd5087aad17d75aa88aa85178 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov <aleksey.kladov@gmail.com> Date: Wed, 1 Jul 2020 11:25:22 +0200 Subject: Move test data to test_data directory --- crates/expect/src/lib.rs | 2 +- crates/ra_ide/src/snapshots/highlight_doctest.html | 101 ------------------ .../ra_ide/src/snapshots/highlight_injection.html | 47 --------- crates/ra_ide/src/snapshots/highlight_strings.html | 95 ----------------- crates/ra_ide/src/snapshots/highlight_unsafe.html | 53 ---------- crates/ra_ide/src/snapshots/highlighting.html | 117 --------------------- .../ra_ide/src/snapshots/rainbow_highlighting.html | 48 --------- crates/ra_ide/src/syntax_highlighting/tests.rs | 12 +-- crates/ra_ide/test_data/highlight_doctest.html | 101 ++++++++++++++++++ crates/ra_ide/test_data/highlight_injection.html | 47 +++++++++ crates/ra_ide/test_data/highlight_strings.html | 95 +++++++++++++++++ crates/ra_ide/test_data/highlight_unsafe.html | 53 ++++++++++ crates/ra_ide/test_data/highlighting.html | 117 +++++++++++++++++++++ crates/ra_ide/test_data/rainbow_highlighting.html | 48 +++++++++ 14 files changed, 468 insertions(+), 468 deletions(-) delete mode 100644 crates/ra_ide/src/snapshots/highlight_doctest.html delete mode 100644 crates/ra_ide/src/snapshots/highlight_injection.html delete mode 100644 crates/ra_ide/src/snapshots/highlight_strings.html delete mode 100644 crates/ra_ide/src/snapshots/highlight_unsafe.html delete mode 100644 crates/ra_ide/src/snapshots/highlighting.html delete mode 100644 crates/ra_ide/src/snapshots/rainbow_highlighting.html create mode 100644 crates/ra_ide/test_data/highlight_doctest.html create mode 100644 crates/ra_ide/test_data/highlight_injection.html create mode 100644 crates/ra_ide/test_data/highlight_strings.html create mode 100644 crates/ra_ide/test_data/highlight_unsafe.html create mode 100644 crates/ra_ide/test_data/highlighting.html create mode 100644 crates/ra_ide/test_data/rainbow_highlighting.html (limited to 'crates') diff --git a/crates/expect/src/lib.rs b/crates/expect/src/lib.rs index 3f293f5d5..a5e26fade 100644 --- a/crates/expect/src/lib.rs +++ b/crates/expect/src/lib.rs @@ -39,7 +39,7 @@ macro_rules! expect { [[]] => { $crate::expect![[""]] }; } -/// expect_file!["/crates/foo/test_data/foo.rs"] +/// expect_file!["/crates/foo/test_data/bar.html"] #[macro_export] macro_rules! expect_file { [$path:literal] => {$crate::ExpectFile { path: $path }}; diff --git a/crates/ra_ide/src/snapshots/highlight_doctest.html b/crates/ra_ide/src/snapshots/highlight_doctest.html deleted file mode 100644 index e8155def7..000000000 --- a/crates/ra_ide/src/snapshots/highlight_doctest.html +++ /dev/null @@ -1,101 +0,0 @@ - -<style> -body { margin: 0; } -pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padding: 0.4em; } - -.lifetime { color: #DFAF8F; font-style: italic; } -.comment { color: #7F9F7F; } -.documentation { color: #629755; } -.injected { opacity: 0.65 ; } -.struct, .enum { color: #7CB8BB; } -.enum_variant { color: #BDE0F3; } -.string_literal { color: #CC9393; } -.field { color: #94BFF3; } -.function { color: #93E0E3; } -.function.unsafe { color: #BC8383; } -.operator.unsafe { color: #BC8383; } -.parameter { color: #94BFF3; } -.text { color: #DCDCCC; } -.type { color: #7CB8BB; } -.builtin_type { color: #8CD0D3; } -.type_param { color: #DFAF8F; } -.attribute { color: #94BFF3; } -.numeric_literal { color: #BFEBBF; } -.bool_literal { color: #BFE6EB; } -.macro { color: #94BFF3; } -.module { color: #AFD8AF; } -.variable { color: #DCDCCC; } -.format_specifier { color: #CC696B; } -.mutable { text-decoration: underline; } -.unresolved_reference { color: #FC5555; } -.escape_sequence { color: #94BFF3; } - -.keyword { color: #F0DFAF; font-weight: bold; } -.keyword.unsafe { color: #BC8383; font-weight: bold; } -.control { font-style: italic; } -</style> -<pre><code><span class="comment documentation">/// ```</span> -<span class="comment documentation">/// </span><span class="keyword injected">let</span><span class="generic injected"> _ = </span><span class="string_literal injected">"early doctests should not go boom"</span><span class="generic injected">;</span> -<span class="comment documentation">/// ```</span> -<span class="keyword">struct</span> <span class="struct declaration">Foo</span> { - <span class="field declaration">bar</span>: <span class="builtin_type">bool</span>, -} - -<span class="keyword">impl</span> <span class="struct">Foo</span> { - <span class="keyword">pub</span> <span class="keyword">const</span> <span class="constant declaration">bar</span>: <span class="builtin_type">bool</span> = <span class="bool_literal">true</span>; - - <span class="comment documentation">/// Constructs a new `Foo`.</span> - <span class="comment documentation">///</span> - <span class="comment documentation">/// # Examples</span> - <span class="comment documentation">///</span> - <span class="comment documentation">/// ```</span> - <span class="comment documentation">/// #</span><span class="generic injected"> </span><span class="attribute injected">#![</span><span class="function attribute injected">allow</span><span class="attribute injected">(unused_mut)]</span> - <span class="comment documentation">/// </span><span class="keyword injected">let</span><span class="generic injected"> </span><span class="keyword injected">mut</span><span class="generic injected"> </span><span class="variable declaration injected mutable">foo</span><span class="generic injected">: </span><span class="struct injected">Foo</span><span class="generic injected"> = </span><span class="struct injected">Foo</span><span class="generic injected">::</span><span class="function injected">new</span><span class="generic injected">();</span> - <span class="comment documentation">/// ```</span> - <span class="keyword">pub</span> <span class="keyword">const</span> <span class="keyword">fn</span> <span class="function declaration">new</span>() -> <span class="struct">Foo</span> { - <span class="struct">Foo</span> { <span class="field">bar</span>: <span class="bool_literal">true</span> } - } - - <span class="comment documentation">/// `bar` method on `Foo`.</span> - <span class="comment documentation">///</span> - <span class="comment documentation">/// # Examples</span> - <span class="comment documentation">///</span> - <span class="comment documentation">/// ```</span> - <span class="comment documentation">/// </span><span class="keyword injected">use</span><span class="generic injected"> </span><span class="module injected">x</span><span class="generic injected">::</span><span class="module injected">y</span><span class="generic injected">;</span> - <span class="comment documentation">///</span> - <span class="comment documentation">/// </span><span class="keyword injected">let</span><span class="generic injected"> </span><span class="variable declaration injected">foo</span><span class="generic injected"> = </span><span class="struct injected">Foo</span><span class="generic injected">::</span><span class="function injected">new</span><span class="generic injected">();</span> - <span class="comment documentation">///</span> - <span class="comment documentation">/// </span><span class="comment injected">// calls bar on foo</span> - <span class="comment documentation">/// </span><span class="macro injected">assert!</span><span class="generic injected">(foo.bar());</span> - <span class="comment documentation">///</span> - <span class="comment documentation">/// </span><span class="keyword injected">let</span><span class="generic injected"> </span><span class="variable declaration injected">bar</span><span class="generic injected"> = </span><span class="variable injected">foo</span><span class="generic injected">.</span><span class="field injected">bar</span><span class="generic injected"> || </span><span class="struct injected">Foo</span><span class="generic injected">::</span><span class="constant injected">bar</span><span class="generic injected">;</span> - <span class="comment documentation">///</span> - <span class="comment documentation">/// </span><span class="comment injected">/* multi-line - </span><span class="comment documentation">/// </span><span class="comment injected"> comment */</span> - <span class="comment documentation">///</span> - <span class="comment documentation">/// </span><span class="keyword injected">let</span><span class="generic injected"> </span><span class="variable declaration injected">multi_line_string</span><span class="generic injected"> = </span><span class="string_literal injected">"Foo - </span><span class="comment documentation">/// </span><span class="string_literal injected"> bar - </span><span class="comment documentation">/// </span><span class="string_literal injected"> "</span><span class="generic injected">;</span> - <span class="comment documentation">///</span> - <span class="comment documentation">/// ```</span> - <span class="comment documentation">///</span> - <span class="comment documentation">/// ```rust,no_run</span> - <span class="comment documentation">/// </span><span class="keyword injected">let</span><span class="generic injected"> </span><span class="variable declaration injected">foobar</span><span class="generic injected"> = </span><span class="struct injected">Foo</span><span class="generic injected">::</span><span class="function injected">new</span><span class="generic injected">().</span><span class="function injected">bar</span><span class="generic injected">();</span> - <span class="comment documentation">/// ```</span> - <span class="comment documentation">///</span> - <span class="comment documentation">/// ```sh</span> - <span class="comment documentation">/// echo 1</span> - <span class="comment documentation">/// ```</span> - <span class="keyword">pub</span> <span class="keyword">fn</span> <span class="function declaration">foo</span>(&<span class="self_keyword">self</span>) -> <span class="builtin_type">bool</span> { - <span class="bool_literal">true</span> - } -} - -<span class="comment documentation">/// ```</span> -<span class="comment documentation">/// </span><span class="macro injected">noop!</span><span class="generic injected">(</span><span class="numeric_literal injected">1</span><span class="generic injected">);</span> -<span class="comment documentation">/// ```</span> -<span class="macro">macro_rules!</span> <span class="macro declaration">noop</span> { - ($expr:expr) => { - $expr - } -}</code></pre> \ No newline at end of file diff --git a/crates/ra_ide/src/snapshots/highlight_injection.html b/crates/ra_ide/src/snapshots/highlight_injection.html deleted file mode 100644 index 1b0349bae..000000000 --- a/crates/ra_ide/src/snapshots/highlight_injection.html +++ /dev/null @@ -1,47 +0,0 @@ - -<style> -body { margin: 0; } -pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padding: 0.4em; } - -.lifetime { color: #DFAF8F; font-style: italic; } -.comment { color: #7F9F7F; } -.documentation { color: #629755; } -.injected { opacity: 0.65 ; } -.struct, .enum { color: #7CB8BB; } -.enum_variant { color: #BDE0F3; } -.string_literal { color: #CC9393; } -.field { color: #94BFF3; } -.function { color: #93E0E3; } -.function.unsafe { color: #BC8383; } -.operator.unsafe { color: #BC8383; } -.parameter { color: #94BFF3; } -.text { color: #DCDCCC; } -.type { color: #7CB8BB; } -.builtin_type { color: #8CD0D3; } -.type_param { color: #DFAF8F; } -.attribute { color: #94BFF3; } -.numeric_literal { color: #BFEBBF; } -.bool_literal { color: #BFE6EB; } -.macro { color: #94BFF3; } -.module { color: #AFD8AF; } -.variable { color: #DCDCCC; } -.format_specifier { color: #CC696B; } -.mutable { text-decoration: underline; } -.unresolved_reference { color: #FC5555; } -.escape_sequence { color: #94BFF3; } - -.keyword { color: #F0DFAF; font-weight: bold; } -.keyword.unsafe { color: #BC8383; font-weight: bold; } -.control { font-style: italic; } -</style> -<pre><code><span class="keyword">fn</span> <span class="function declaration">fixture</span>(<span class="variable declaration">ra_fixture</span>: &<span class="builtin_type">str</span>) {} - -<span class="keyword">fn</span> <span class="function declaration">main</span>() { - <span class="function">fixture</span>(<span class="string_literal">r#"</span> - <span class="keyword">trait</span> <span class="trait declaration">Foo</span> { - <span class="keyword">fn</span> <span class="function declaration">foo</span>() { - <span class="macro">println!</span>(<span class="string_literal">"2 + 2 = {}"</span>, <span class="numeric_literal">4</span>); - } - }<span class="string_literal">"#</span> - ); -}</code></pre> \ No newline at end of file diff --git a/crates/ra_ide/src/snapshots/highlight_strings.html b/crates/ra_ide/src/snapshots/highlight_strings.html deleted file mode 100644 index d184b5691..000000000 --- a/crates/ra_ide/src/snapshots/highlight_strings.html +++ /dev/null @@ -1,95 +0,0 @@ - -<style> -body { margin: 0; } -pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padding: 0.4em; } - -.lifetime { color: #DFAF8F; font-style: italic; } -.comment { color: #7F9F7F; } -.documentation { color: #629755; } -.injected { opacity: 0.65 ; } -.struct, .enum { color: #7CB8BB; } -.enum_variant { color: #BDE0F3; } -.string_literal { color: #CC9393; } -.field { color: #94BFF3; } -.function { color: #93E0E3; } -.function.unsafe { color: #BC8383; } -.operator.unsafe { color: #BC8383; } -.parameter { color: #94BFF3; } -.text { color: #DCDCCC; } -.type { color: #7CB8BB; } -.builtin_type { color: #8CD0D3; } -.type_param { color: #DFAF8F; } -.attribute { color: #94BFF3; } -.numeric_literal { color: #BFEBBF; } -.bool_literal { color: #BFE6EB; } -.macro { color: #94BFF3; } -.module { color: #AFD8AF; } -.variable { color: #DCDCCC; } -.format_specifier { color: #CC696B; } -.mutable { text-decoration: underline; } -.unresolved_reference { color: #FC5555; } -.escape_sequence { color: #94BFF3; } - -.keyword { color: #F0DFAF; font-weight: bold; } -.keyword.unsafe { color: #BC8383; font-weight: bold; } -.control { font-style: italic; } -</style> -<pre><code><span class="macro">macro_rules!</span> <span class="macro declaration">println</span> { - ($($arg:tt)*) => ({ - $<span class="keyword">crate</span>::io::_print($<span class="keyword">crate</span>::format_args_nl!($($arg)*)); - }) -} -#[rustc_builtin_macro] -<span class="macro">macro_rules!</span> <span class="macro declaration">format_args_nl</span> { - ($fmt:expr) => {{ <span class="comment">/* compiler built-in */</span> }}; - ($fmt:expr, $($args:tt)*) => {{ <span class="comment">/* compiler built-in */</span> }}; -} - -<span class="keyword">fn</span> <span class="function declaration">main</span>() { - <span class="comment">// from https://doc.rust-lang.org/std/fmt/index.html</span> - <span class="macro">println!</span>(<span class="string_literal">"Hello"</span>); <span class="comment">// => "Hello"</span> - <span class="macro">println!</span>(<span class="string_literal">"Hello, </span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, <span class="string_literal">"world"</span>); <span class="comment">// => "Hello, world!"</span> - <span class="macro">println!</span>(<span class="string_literal">"The number is </span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal">"</span>, <span class="numeric_literal">1</span>); <span class="comment">// => "The number is 1"</span> - <span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="format_specifier">?</span><span class="format_specifier">}</span><span class="string_literal">"</span>, (<span class="numeric_literal">3</span>, <span class="numeric_literal">4</span>)); <span class="comment">// => "(3, 4)"</span> - <span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="variable">value</span><span class="format_specifier">}</span><span class="string_literal">"</span>, value=<span class="numeric_literal">4</span>); <span class="comment">// => "4"</span> - <span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal"> </span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal">"</span>, <span class="numeric_literal">1</span>, <span class="numeric_literal">2</span>); <span class="comment">// => "1 2"</span> - <span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="numeric_literal">0</span><span class="numeric_literal">4</span><span class="format_specifier">}</span><span class="string_literal">"</span>, <span class="numeric_literal">42</span>); <span class="comment">// => "0042" with leading zerosV</span> - <span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="numeric_literal">1</span><span class="format_specifier">}</span><span class="string_literal"> </span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal"> </span><span class="format_specifier">{</span><span class="numeric_literal">0</span><span class="format_specifier">}</span><span class="string_literal"> </span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal">"</span>, <span class="numeric_literal">1</span>, <span class="numeric_literal">2</span>); <span class="comment">// => "2 1 1 2"</span> - <span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="variable">argument</span><span class="format_specifier">}</span><span class="string_literal">"</span>, argument = <span class="string_literal">"test"</span>); <span class="comment">// => "test"</span> - <span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="variable">name</span><span class="format_specifier">}</span><span class="string_literal"> </span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal">"</span>, <span class="numeric_literal">1</span>, name = <span class="numeric_literal">2</span>); <span class="comment">// => "2 1"</span> - <span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="variable">a</span><span class="format_specifier">}</span><span class="string_literal"> </span><span class="format_specifier">{</span><span class="variable">c</span><span class="format_specifier">}</span><span class="string_literal"> </span><span class="format_specifier">{</span><span class="variable">b</span><span class="format_specifier">}</span><span class="string_literal">"</span>, a=<span class="string_literal">"a"</span>, b=<span class="char_literal">'b'</span>, c=<span class="numeric_literal">3</span>); <span class="comment">// => "a 3 b"</span> - <span class="macro">println!</span>(<span class="string_literal">"{{</span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal">}}"</span>, <span class="numeric_literal">2</span>); <span class="comment">// => "{2}"</span> - <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="numeric_literal">5</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, <span class="string_literal">"x"</span>); - <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="numeric_literal">1</span><span class="format_specifier">$</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, <span class="string_literal">"x"</span>, <span class="numeric_literal">5</span>); - <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="numeric_literal">1</span><span class="format_specifier">:</span><span class="numeric_literal">0</span><span class="format_specifier">$</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, <span class="numeric_literal">5</span>, <span class="string_literal">"x"</span>); - <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="variable">width</span><span class="format_specifier">$</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, <span class="string_literal">"x"</span>, width = <span class="numeric_literal">5</span>); - <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="format_specifier"><</span><span class="numeric_literal">5</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, <span class="string_literal">"x"</span>); - <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="format_specifier">-</span><span class="format_specifier"><</span><span class="numeric_literal">5</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, <span class="string_literal">"x"</span>); - <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="format_specifier">^</span><span class="numeric_literal">5</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, <span class="string_literal">"x"</span>); - <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="format_specifier">></span><span class="numeric_literal">5</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, <span class="string_literal">"x"</span>); - <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="format_specifier">+</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, <span class="numeric_literal">5</span>); - <span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="format_specifier">#</span><span class="variable">x</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, <span class="numeric_literal">27</span>); - <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="numeric_literal">0</span><span class="numeric_literal">5</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, <span class="numeric_literal">5</span>); - <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="numeric_literal">0</span><span class="numeric_literal">5</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, -<span class="numeric_literal">5</span>); - <span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="format_specifier">#</span><span class="numeric_literal">0</span><span class="numeric_literal">10</span><span class="variable">x</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, <span class="numeric_literal">27</span>); - <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="numeric_literal">0</span><span class="format_specifier">}</span><span class="string_literal"> is </span><span class="format_specifier">{</span><span class="numeric_literal">1</span><span class="format_specifier">:</span><span class="format_specifier">.</span><span class="numeric_literal">5</span><span class="format_specifier">}</span><span class="string_literal">"</span>, <span class="string_literal">"x"</span>, <span class="numeric_literal">0.01</span>); - <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="numeric_literal">1</span><span class="format_specifier">}</span><span class="string_literal"> is </span><span class="format_specifier">{</span><span class="numeric_literal">2</span><span class="format_specifier">:</span><span class="format_specifier">.</span><span class="numeric_literal">0</span><span class="format_specifier">$</span><span class="format_specifier">}</span><span class="string_literal">"</span>, <span class="numeric_literal">5</span>, <span class="string_literal">"x"</span>, <span class="numeric_literal">0.01</span>); - <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="numeric_literal">0</span><span class="format_specifier">}</span><span class="string_literal"> is </span><span class="format_specifier">{</span><span class="numeric_literal">2</span><span class="format_specifier">:</span><span class="format_specifier">.</span><span class="numeric_literal">1</span><span class="format_specifier">$</span><span class="format_specifier">}</span><span class="string_literal">"</span>, <span class="string_literal">"x"</span>, <span class="numeric_literal">5</span>, <span class="numeric_literal">0.01</span>); - <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal"> is </span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="format_specifier">.</span><span class="format_specifier">*</span><span class="format_specifier">}</span><span class="string_literal">"</span>, <span class="string_literal">"x"</span>, <span class="numeric_literal">5</span>, <span class="numeric_literal">0.01</span>); - <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal"> is </span><span class="format_specifier">{</span><span class="numeric_literal">2</span><span class="format_specifier">:</span><span class="format_specifier">.</span><span class="format_specifier">*</span><span class="format_specifier">}</span><span class="string_literal">"</span>, <span class="string_literal">"x"</span>, <span class="numeric_literal">5</span>, <span class="numeric_literal">0.01</span>); - <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal"> is </span><span class="format_specifier">{</span><span class="variable">number</span><span class="format_specifier">:</span><span class="format_specifier">.</span><span class="variable">prec</span><span class="format_specifier">$</span><span class="format_specifier">}</span><span class="string_literal">"</span>, <span class="string_literal">"x"</span>, prec = <span class="numeric_literal">5</span>, number = <span class="numeric_literal">0.01</span>); - <span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal">, `</span><span class="format_specifier">{</span><span class="variable">name</span><span class="format_specifier">:</span><span class="format_specifier">.</span><span class="format_specifier">*</span><span class="format_specifier">}</span><span class="string_literal">` has 3 fractional digits"</span>, <span class="string_literal">"Hello"</span>, <span class="numeric_literal">3</span>, name=<span class="numeric_literal">1234.56</span>); - <span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal">, `</span><span class="format_specifier">{</span><span class="variable">name</span><span class="format_specifier">:</span><span class="format_specifier">.</span><span class="format_specifier">*</span><span class="format_specifier">}</span><span class="string_literal">` has 3 characters"</span>, <span class="string_literal">"Hello"</span>, <span class="numeric_literal">3</span>, name=<span class="string_literal">"1234.56"</span>); - <span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal">, `</span><span class="format_specifier">{</span><span class="variable">name</span><span class="format_specifier">:</span><span class="format_specifier">></span><span class="numeric_literal">8</span><span class="format_specifier">.</span><span class="format_specifier">*</span><span class="format_specifier">}</span><span class="string_literal">` has 3 right-aligned characters"</span>, <span class="string_literal">"Hello"</span>, <span class="numeric_literal">3</span>, name=<span class="string_literal">"1234.56"</span>); - <span class="macro">println!</span>(<span class="string_literal">"Hello {{}}"</span>); - <span class="macro">println!</span>(<span class="string_literal">"{{ Hello"</span>); - - <span class="macro">println!</span>(<span class="string_literal">r"Hello, </span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, <span class="string_literal">"world"</span>); - - <span class="comment">// escape sequences</span> - <span class="macro">println!</span>(<span class="string_literal">"Hello</span><span class="escape_sequence">\n</span><span class="string_literal">World"</span>); - <span class="macro">println!</span>(<span class="string_literal">"</span><span class="escape_sequence">\u{48}</span><span class="escape_sequence">\x65</span><span class="escape_sequence">\x6C</span><span class="escape_sequence">\x6C</span><span class="escape_sequence">\x6F</span><span class="string_literal"> World"</span>); - - <span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="escape_sequence">\x41</span><span class="format_specifier">}</span><span class="string_literal">"</span>, A = <span class="numeric_literal">92</span>); - <span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="variable">ничоси</span><span class="format_specifier">}</span><span class="string_literal">"</span>, ничоси = <span class="numeric_literal">92</span>); -}</code></pre> \ No newline at end of file diff --git a/crates/ra_ide/src/snapshots/highlight_unsafe.html b/crates/ra_ide/src/snapshots/highlight_unsafe.html deleted file mode 100644 index 6936e949f..000000000 --- a/crates/ra_ide/src/snapshots/highlight_unsafe.html +++ /dev/null @@ -1,53 +0,0 @@ - -<style> -body { margin: 0; } -pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padding: 0.4em; } - -.lifetime { color: #DFAF8F; font-style: italic; } -.comment { color: #7F9F7F; } -.documentation { color: #629755; } -.injected { opacity: 0.65 ; } -.struct, .enum { color: #7CB8BB; } -.enum_variant { color: #BDE0F3; } -.string_literal { color: #CC9393; } -.field { color: #94BFF3; } -.function { color: #93E0E3; } -.function.unsafe { color: #BC8383; } -.operator.unsafe { color: #BC8383; } -.parameter { color: #94BFF3; } -.text { color: #DCDCCC; } -.type { color: #7CB8BB; } -.builtin_type { color: #8CD0D3; } -.type_param { color: #DFAF8F; } -.attribute { color: #94BFF3; } -.numeric_literal { color: #BFEBBF; } -.bool_literal { color: #BFE6EB; } -.macro { color: #94BFF3; } -.module { color: #AFD8AF; } -.variable { color: #DCDCCC; } -.format_specifier { color: #CC696B; } -.mutable { text-decoration: underline; } -.unresolved_reference { color: #FC5555; } -.escape_sequence { color: #94BFF3; } - -.keyword { color: #F0DFAF; font-weight: bold; } -.keyword.unsafe { color: #BC8383; font-weight: bold; } -.control { font-style: italic; } -</style> -<pre><code><span class="keyword unsafe">unsafe</span> <span class="keyword">fn</span> <span class="function declaration unsafe">unsafe_fn</span>() {} - -<span class="keyword">struct</span> <span class="struct declaration">HasUnsafeFn</span>; - -<span class="keyword">impl</span> <span class="struct">HasUnsafeFn</span> { - <span class="keyword unsafe">unsafe</span> <span class="keyword">fn</span> <span class="function declaration unsafe">unsafe_method</span>(&<span class="self_keyword">self</span>) {} -} - -<span class="keyword">fn</span> <span class="function declaration">main</span>() { - <span class="keyword">let</span> <span class="variable declaration">x</span> = &<span class="numeric_literal">5</span> <span class="keyword">as</span> *<span class="keyword">const</span> <span class="builtin_type">usize</span>; - <span class="keyword unsafe">unsafe</span> { - <span class="function unsafe">unsafe_fn</span>(); - <span class="struct">HasUnsafeFn</span>.<span class="function unsafe">unsafe_method</span>(); - <span class="keyword">let</span> <span class="variable declaration">y</span> = <span class="operator unsafe">*</span>(<span class="variable">x</span>); - <span class="keyword">let</span> <span class="variable declaration">z</span> = -<span class="variable">x</span>; - } -}</code></pre> \ No newline at end of file diff --git a/crates/ra_ide/src/snapshots/highlighting.html b/crates/ra_ide/src/snapshots/highlighting.html deleted file mode 100644 index 8d0b38f95..000000000 --- a/crates/ra_ide/src/snapshots/highlighting.html +++ /dev/null @@ -1,117 +0,0 @@ - -<style> -body { margin: 0; } -pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padding: 0.4em; } - -.lifetime { color: #DFAF8F; font-style: italic; } -.comment { color: #7F9F7F; } -.documentation { color: #629755; } -.injected { opacity: 0.65 ; } -.struct, .enum { color: #7CB8BB; } -.enum_variant { color: #BDE0F3; } -.string_literal { color: #CC9393; } -.field { color: #94BFF3; } -.function { color: #93E0E3; } -.function.unsafe { color: #BC8383; } -.operator.unsafe { color: #BC8383; } -.parameter { color: #94BFF3; } -.text { color: #DCDCCC; } -.type { color: #7CB8BB; } -.builtin_type { color: #8CD0D3; } -.type_param { color: #DFAF8F; } -.attribute { color: #94BFF3; } -.numeric_literal { color: #BFEBBF; } -.bool_literal { color: #BFE6EB; } -.macro { color: #94BFF3; } -.module { color: #AFD8AF; } -.variable { color: #DCDCCC; } -.format_specifier { color: #CC696B; } -.mutable { text-decoration: underline; } -.unresolved_reference { color: #FC5555; } -.escape_sequence { color: #94BFF3; } - -.keyword { color: #F0DFAF; font-weight: bold; } -.keyword.unsafe { color: #BC8383; font-weight: bold; } -.control { font-style: italic; } -</style> -<pre><code><span class="attribute">#[</span><span class="function attribute">derive</span><span class="attribute">(Clone, Debug)]</span> -<span class="keyword">struct</span> <span class="struct declaration">Foo</span> { - <span class="keyword">pub</span> <span class="field declaration">x</span>: <span class="builtin_type">i32</span>, - <span class="keyword">pub</span> <span class="field declaration">y</span>: <span class="builtin_type">i32</span>, -} - -<span class="keyword">trait</span> <span class="trait declaration">Bar</span> { - <span class="keyword">fn</span> <span class="function declaration">bar</span>(&<span class="self_keyword">self</span>) -> <span class="builtin_type">i32</span>; -} - -<span class="keyword">impl</span> <span class="trait">Bar</span> <span class="keyword">for</span> <span class="struct">Foo</span> { - <span class="keyword">fn</span> <span class="function declaration">bar</span>(&<span class="self_keyword">self</span>) -> <span class="builtin_type">i32</span> { - <span class="self_keyword">self</span>.<span class="field">x</span> - } -} - -<span class="keyword">static</span> <span class="keyword">mut</span> <span class="static declaration mutable">STATIC_MUT</span>: <span class="builtin_type">i32</span> = <span class="numeric_literal">0</span>; - -<span class="keyword">fn</span> <span class="function declaration">foo</span><<span class="lifetime declaration">'a</span>, <span class="type_param declaration">T</span>>() -> <span class="type_param">T</span> { - <span class="function">foo</span>::<<span class="lifetime">'a</span>, <span class="builtin_type">i32</span>>() -} - -<span class="macro">macro_rules!</span> <span class="macro declaration">def_fn</span> { - ($($tt:tt)*) => {$($tt)*} -} - -<span class="macro">def_fn!</span> { - <span class="keyword">fn</span> <span class="function declaration">bar</span>() -> <span class="builtin_type">u32</span> { - <span class="numeric_literal">100</span> - } -} - -<span class="macro">macro_rules!</span> <span class="macro declaration">noop</span> { - ($expr:expr) => { - $expr - } -} - -<span class="comment">// comment</span> -<span class="keyword">fn</span> <span class="function declaration">main</span>() { - <span class="macro">println!</span>(<span class="string_literal">"Hello, {}!"</span>, <span class="numeric_literal">92</span>); - - <span class="keyword">let</span> <span class="keyword">mut</span> <span class="variable declaration mutable">vec</span> = <span class="unresolved_reference">Vec</span>::<span class="unresolved_reference">new</span>(); - <span class="keyword control">if</span> <span class="bool_literal">true</span> { - <span class="keyword">let</span> <span class="variable declaration">x</span> = <span class="numeric_literal">92</span>; - <span class="variable mutable">vec</span>.<span class="unresolved_reference">push</span>(<span class="struct">Foo</span> { <span class="field">x</span>, <span class="field">y</span>: <span class="numeric_literal">1</span> }); - } - <span class="keyword unsafe">unsafe</span> { - <span class="variable mutable">vec</span>.<span class="unresolved_reference">set_len</span>(<span class="numeric_literal">0</span>); - <span class="static mutable">STATIC_MUT</span> = <span class="numeric_literal">1</span>; - } - - <span class="keyword control">for</span> <span class="variable declaration">e</span> <span class="keyword control">in</span> <span class="variable mutable">vec</span> { - <span class="comment">// Do nothing</span> - } - - <span class="macro">noop!</span>(<span class="macro">noop</span><span class="macro">!</span>(<span class="numeric_literal">1</span>)); - - <span class="keyword">let</span> <span class="keyword">mut</span> <span class="variable declaration mutable">x</span> = <span class="numeric_literal">42</span>; - <span class="keyword">let</span> <span class="variable declaration mutable">y</span> = &<span class="keyword">mut</span> <span class="variable mutable">x</span>; - <span class="keyword">let</span> <span class="variable declaration">z</span> = &<span class="variable mutable">y</span>; - - <span class="keyword">let</span> <span class="struct">Foo</span> { <span class="field">x</span>: <span class="variable declaration">z</span>, <span class="field">y</span> } = <span class="struct">Foo</span> { <span class="field">x</span>: <span class="variable">z</span>, <span class="field">y</span> }; - - <span class="variable">y</span>; -} - -<span class="keyword">enum</span> <span class="enum declaration">Option</span><<span class="type_param declaration">T</span>> { - <span class="enum_variant declaration">Some</span>(<span class="type_param">T</span>), - <span class="enum_variant declaration">None</span>, -} -<span class="keyword">use</span> <span class="enum">Option</span>::*; - -<span class="keyword">impl</span><<span class="type_param declaration">T</span>> <span class="enum">Option</span><<span class="type_param">T</span>> { - <span class="keyword">fn</span> <span class="function declaration">and</span><<span class="type_param declaration">U</span>>(<span class="self_keyword">self</span>, <span class="variable declaration">other</span>: <span class="enum">Option</span><<span class="type_param">U</span>>) -> <span class="enum">Option</span><(<span class="type_param">T</span>, <span class="type_param">U</span>)> { - <span class="keyword control">match</span> <span class="variable">other</span> { - <span class="enum_variant">None</span> => <span class="macro">unimplemented!</span>(), - <span class="variable declaration">Nope</span> => <span class="variable">Nope</span>, - } - } -}</code></pre> \ No newline at end of file diff --git a/crates/ra_ide/src/snapshots/rainbow_highlighting.html b/crates/ra_ide/src/snapshots/rainbow_highlighting.html deleted file mode 100644 index 9516c7441..000000000 --- a/crates/ra_ide/src/snapshots/rainbow_highlighting.html +++ /dev/null @@ -1,48 +0,0 @@ - -<style> -body { margin: 0; } -pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padding: 0.4em; } - -.lifetime { color: #DFAF8F; font-style: italic; } -.comment { color: #7F9F7F; } -.documentation { color: #629755; } -.injected { opacity: 0.65 ; } -.struct, .enum { color: #7CB8BB; } -.enum_variant { color: #BDE0F3; } -.string_literal { color: #CC9393; } -.field { color: #94BFF3; } -.function { color: #93E0E3; } -.function.unsafe { color: #BC8383; } -.operator.unsafe { color: #BC8383; } -.parameter { color: #94BFF3; } -.text { color: #DCDCCC; } -.type { color: #7CB8BB; } -.builtin_type { color: #8CD0D3; } -.type_param { color: #DFAF8F; } -.attribute { color: #94BFF3; } -.numeric_literal { color: #BFEBBF; } -.bool_literal { color: #BFE6EB; } -.macro { color: #94BFF3; } -.module { color: #AFD8AF; } -.variable { color: #DCDCCC; } -.format_specifier { color: #CC696B; } -.mutable { text-decoration: underline; } -.unresolved_reference { color: #FC5555; } -.escape_sequence { color: #94BFF3; } - -.keyword { color: #F0DFAF; font-weight: bold; } -.keyword.unsafe { color: #BC8383; font-weight: bold; } -.control { font-style: italic; } -</style> -<pre><code><span class="keyword">fn</span> <span class="function declaration">main</span>() { - <span class="keyword">let</span> <span class="variable declaration" data-binding-hash="8121853618659664005" style="color: hsl(261,57%,61%);">hello</span> = <span class="string_literal">"hello"</span>; - <span class="keyword">let</span> <span class="variable declaration" data-binding-hash="2705725358298919760" style="color: hsl(17,51%,74%);">x</span> = <span class="variable" data-binding-hash="8121853618659664005" style="color: hsl(261,57%,61%);">hello</span>.<span class="unresolved_reference">to_string</span>(); - <span class="keyword">let</span> <span class="variable declaration" data-binding-hash="3365759661443752373" style="color: hsl(127,76%,66%);">y</span> = <span class="variable" data-binding-hash="8121853618659664005" style="color: hsl(261,57%,61%);">hello</span>.<span class="unresolved_reference">to_string</span>(); - - <span class="keyword">let</span> <span class="variable declaration" data-binding-hash="794745962933817518" style="color: hsl(19,74%,76%);">x</span> = <span class="string_literal">"other color please!"</span>; - <span class="keyword">let</span> <span class="variable declaration" data-binding-hash="6717528807933952652" style="color: hsl(85,49%,84%);">y</span> = <span class="variable" data-binding-hash="794745962933817518" style="color: hsl(19,74%,76%);">x</span>.<span class="unresolved_reference">to_string</span>(); -} - -<span class="keyword">fn</span> <span class="function declaration">bar</span>() { - <span class="keyword">let</span> <span class="keyword">mut</span> <span class="variable declaration mutable" data-binding-hash="8121853618659664005" style="color: hsl(261,57%,61%);">hello</span> = <span class="string_literal">"hello"</span>; -}</code></pre> \ No newline at end of file diff --git a/crates/ra_ide/src/syntax_highlighting/tests.rs b/crates/ra_ide/src/syntax_highlighting/tests.rs index f19628485..aa7c887d6 100644 --- a/crates/ra_ide/src/syntax_highlighting/tests.rs +++ b/crates/ra_ide/src/syntax_highlighting/tests.rs @@ -92,7 +92,7 @@ impl<T> Option<T> { } "# .trim(), - expect_file!["crates/ra_ide/src/snapshots/highlighting.html"], + expect_file!["crates/ra_ide/test_data/highlighting.html"], false, ); } @@ -115,7 +115,7 @@ fn bar() { } "# .trim(), - expect_file!["crates/ra_ide/src/snapshots/rainbow_highlighting.html"], + expect_file!["crates/ra_ide/test_data/rainbow_highlighting.html"], true, ); } @@ -168,7 +168,7 @@ fn main() { ); }"## .trim(), - expect_file!["crates/ra_ide/src/snapshots/highlight_injection.html"], + expect_file!["crates/ra_ide/test_data/highlight_injection.html"], false, ); } @@ -251,7 +251,7 @@ fn main() { println!("{ничоси}", ничоси = 92); }"# .trim(), - expect_file!["crates/ra_ide/src/snapshots/highlight_strings.html"], + expect_file!["crates/ra_ide/test_data/highlight_strings.html"], false, ); } @@ -279,7 +279,7 @@ fn main() { } "# .trim(), - expect_file!["crates/ra_ide/src/snapshots/highlight_unsafe.html"], + expect_file!["crates/ra_ide/test_data/highlight_unsafe.html"], false, ); } @@ -355,7 +355,7 @@ macro_rules! noop { } "# .trim(), - expect_file!["crates/ra_ide/src/snapshots/highlight_doctest.html"], + expect_file!["crates/ra_ide/test_data/highlight_doctest.html"], false, ); } diff --git a/crates/ra_ide/test_data/highlight_doctest.html b/crates/ra_ide/test_data/highlight_doctest.html new file mode 100644 index 000000000..e8155def7 --- /dev/null +++ b/crates/ra_ide/test_data/highlight_doctest.html @@ -0,0 +1,101 @@ + +<style> +body { margin: 0; } +pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padding: 0.4em; } + +.lifetime { color: #DFAF8F; font-style: italic; } +.comment { color: #7F9F7F; } +.documentation { color: #629755; } +.injected { opacity: 0.65 ; } +.struct, .enum { color: #7CB8BB; } +.enum_variant { color: #BDE0F3; } +.string_literal { color: #CC9393; } +.field { color: #94BFF3; } +.function { color: #93E0E3; } +.function.unsafe { color: #BC8383; } +.operator.unsafe { color: #BC8383; } +.parameter { color: #94BFF3; } +.text { color: #DCDCCC; } +.type { color: #7CB8BB; } +.builtin_type { color: #8CD0D3; } +.type_param { color: #DFAF8F; } +.attribute { color: #94BFF3; } +.numeric_literal { color: #BFEBBF; } +.bool_literal { color: #BFE6EB; } +.macro { color: #94BFF3; } +.module { color: #AFD8AF; } +.variable { color: #DCDCCC; } +.format_specifier { color: #CC696B; } +.mutable { text-decoration: underline; } +.unresolved_reference { color: #FC5555; } +.escape_sequence { color: #94BFF3; } + +.keyword { color: #F0DFAF; font-weight: bold; } +.keyword.unsafe { color: #BC8383; font-weight: bold; } +.control { font-style: italic; } +</style> +<pre><code><span class="comment documentation">/// ```</span> +<span class="comment documentation">/// </span><span class="keyword injected">let</span><span class="generic injected"> _ = </span><span class="string_literal injected">"early doctests should not go boom"</span><span class="generic injected">;</span> +<span class="comment documentation">/// ```</span> +<span class="keyword">struct</span> <span class="struct declaration">Foo</span> { + <span class="field declaration">bar</span>: <span class="builtin_type">bool</span>, +} + +<span class="keyword">impl</span> <span class="struct">Foo</span> { + <span class="keyword">pub</span> <span class="keyword">const</span> <span class="constant declaration">bar</span>: <span class="builtin_type">bool</span> = <span class="bool_literal">true</span>; + + <span class="comment documentation">/// Constructs a new `Foo`.</span> + <span class="comment documentation">///</span> + <span class="comment documentation">/// # Examples</span> + <span class="comment documentation">///</span> + <span class="comment documentation">/// ```</span> + <span class="comment documentation">/// #</span><span class="generic injected"> </span><span class="attribute injected">#![</span><span class="function attribute injected">allow</span><span class="attribute injected">(unused_mut)]</span> + <span class="comment documentation">/// </span><span class="keyword injected">let</span><span class="generic injected"> </span><span class="keyword injected">mut</span><span class="generic injected"> </span><span class="variable declaration injected mutable">foo</span><span class="generic injected">: </span><span class="struct injected">Foo</span><span class="generic injected"> = </span><span class="struct injected">Foo</span><span class="generic injected">::</span><span class="function injected">new</span><span class="generic injected">();</span> + <span class="comment documentation">/// ```</span> + <span class="keyword">pub</span> <span class="keyword">const</span> <span class="keyword">fn</span> <span class="function declaration">new</span>() -> <span class="struct">Foo</span> { + <span class="struct">Foo</span> { <span class="field">bar</span>: <span class="bool_literal">true</span> } + } + + <span class="comment documentation">/// `bar` method on `Foo`.</span> + <span class="comment documentation">///</span> + <span class="comment documentation">/// # Examples</span> + <span class="comment documentation">///</span> + <span class="comment documentation">/// ```</span> + <span class="comment documentation">/// </span><span class="keyword injected">use</span><span class="generic injected"> </span><span class="module injected">x</span><span class="generic injected">::</span><span class="module injected">y</span><span class="generic injected">;</span> + <span class="comment documentation">///</span> + <span class="comment documentation">/// </span><span class="keyword injected">let</span><span class="generic injected"> </span><span class="variable declaration injected">foo</span><span class="generic injected"> = </span><span class="struct injected">Foo</span><span class="generic injected">::</span><span class="function injected">new</span><span class="generic injected">();</span> + <span class="comment documentation">///</span> + <span class="comment documentation">/// </span><span class="comment injected">// calls bar on foo</span> + <span class="comment documentation">/// </span><span class="macro injected">assert!</span><span class="generic injected">(foo.bar());</span> + <span class="comment documentation">///</span> + <span class="comment documentation">/// </span><span class="keyword injected">let</span><span class="generic injected"> </span><span class="variable declaration injected">bar</span><span class="generic injected"> = </span><span class="variable injected">foo</span><span class="generic injected">.</span><span class="field injected">bar</span><span class="generic injected"> || </span><span class="struct injected">Foo</span><span class="generic injected">::</span><span class="constant injected">bar</span><span class="generic injected">;</span> + <span class="comment documentation">///</span> + <span class="comment documentation">/// </span><span class="comment injected">/* multi-line + </span><span class="comment documentation">/// </span><span class="comment injected"> comment */</span> + <span class="comment documentation">///</span> + <span class="comment documentation">/// </span><span class="keyword injected">let</span><span class="generic injected"> </span><span class="variable declaration injected">multi_line_string</span><span class="generic injected"> = </span><span class="string_literal injected">"Foo + </span><span class="comment documentation">/// </span><span class="string_literal injected"> bar + </span><span class="comment documentation">/// </span><span class="string_literal injected"> "</span><span class="generic injected">;</span> + <span class="comment documentation">///</span> + <span class="comment documentation">/// ```</span> + <span class="comment documentation">///</span> + <span class="comment documentation">/// ```rust,no_run</span> + <span class="comment documentation">/// </span><span class="keyword injected">let</span><span class="generic injected"> </span><span class="variable declaration injected">foobar</span><span class="generic injected"> = </span><span class="struct injected">Foo</span><span class="generic injected">::</span><span class="function injected">new</span><span class="generic injected">().</span><span class="function injected">bar</span><span class="generic injected">();</span> + <span class="comment documentation">/// ```</span> + <span class="comment documentation">///</span> + <span class="comment documentation">/// ```sh</span> + <span class="comment documentation">/// echo 1</span> + <span class="comment documentation">/// ```</span> + <span class="keyword">pub</span> <span class="keyword">fn</span> <span class="function declaration">foo</span>(&<span class="self_keyword">self</span>) -> <span class="builtin_type">bool</span> { + <span class="bool_literal">true</span> + } +} + +<span class="comment documentation">/// ```</span> +<span class="comment documentation">/// </span><span class="macro injected">noop!</span><span class="generic injected">(</span><span class="numeric_literal injected">1</span><span class="generic injected">);</span> +<span class="comment documentation">/// ```</span> +<span class="macro">macro_rules!</span> <span class="macro declaration">noop</span> { + ($expr:expr) => { + $expr + } +}</code></pre> \ No newline at end of file diff --git a/crates/ra_ide/test_data/highlight_injection.html b/crates/ra_ide/test_data/highlight_injection.html new file mode 100644 index 000000000..1b0349bae --- /dev/null +++ b/crates/ra_ide/test_data/highlight_injection.html @@ -0,0 +1,47 @@ + +<style> +body { margin: 0; } +pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padding: 0.4em; } + +.lifetime { color: #DFAF8F; font-style: italic; } +.comment { color: #7F9F7F; } +.documentation { color: #629755; } +.injected { opacity: 0.65 ; } +.struct, .enum { color: #7CB8BB; } +.enum_variant { color: #BDE0F3; } +.string_literal { color: #CC9393; } +.field { color: #94BFF3; } +.function { color: #93E0E3; } +.function.unsafe { color: #BC8383; } +.operator.unsafe { color: #BC8383; } +.parameter { color: #94BFF3; } +.text { color: #DCDCCC; } +.type { color: #7CB8BB; } +.builtin_type { color: #8CD0D3; } +.type_param { color: #DFAF8F; } +.attribute { color: #94BFF3; } +.numeric_literal { color: #BFEBBF; } +.bool_literal { color: #BFE6EB; } +.macro { color: #94BFF3; } +.module { color: #AFD8AF; } +.variable { color: #DCDCCC; } +.format_specifier { color: #CC696B; } +.mutable { text-decoration: underline; } +.unresolved_reference { color: #FC5555; } +.escape_sequence { color: #94BFF3; } + +.keyword { color: #F0DFAF; font-weight: bold; } +.keyword.unsafe { color: #BC8383; font-weight: bold; } +.control { font-style: italic; } +</style> +<pre><code><span class="keyword">fn</span> <span class="function declaration">fixture</span>(<span class="variable declaration">ra_fixture</span>: &<span class="builtin_type">str</span>) {} + +<span class="keyword">fn</span> <span class="function declaration">main</span>() { + <span class="function">fixture</span>(<span class="string_literal">r#"</span> + <span class="keyword">trait</span> <span class="trait declaration">Foo</span> { + <span class="keyword">fn</span> <span class="function declaration">foo</span>() { + <span class="macro">println!</span>(<span class="string_literal">"2 + 2 = {}"</span>, <span class="numeric_literal">4</span>); + } + }<span class="string_literal">"#</span> + ); +}</code></pre> \ No newline at end of file diff --git a/crates/ra_ide/test_data/highlight_strings.html b/crates/ra_ide/test_data/highlight_strings.html new file mode 100644 index 000000000..d184b5691 --- /dev/null +++ b/crates/ra_ide/test_data/highlight_strings.html @@ -0,0 +1,95 @@ + +<style> +body { margin: 0; } +pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padding: 0.4em; } + +.lifetime { color: #DFAF8F; font-style: italic; } +.comment { color: #7F9F7F; } +.documentation { color: #629755; } +.injected { opacity: 0.65 ; } +.struct, .enum { color: #7CB8BB; } +.enum_variant { color: #BDE0F3; } +.string_literal { color: #CC9393; } +.field { color: #94BFF3; } +.function { color: #93E0E3; } +.function.unsafe { color: #BC8383; } +.operator.unsafe { color: #BC8383; } +.parameter { color: #94BFF3; } +.text { color: #DCDCCC; } +.type { color: #7CB8BB; } +.builtin_type { color: #8CD0D3; } +.type_param { color: #DFAF8F; } +.attribute { color: #94BFF3; } +.numeric_literal { color: #BFEBBF; } +.bool_literal { color: #BFE6EB; } +.macro { color: #94BFF3; } +.module { color: #AFD8AF; } +.variable { color: #DCDCCC; } +.format_specifier { color: #CC696B; } +.mutable { text-decoration: underline; } +.unresolved_reference { color: #FC5555; } +.escape_sequence { color: #94BFF3; } + +.keyword { color: #F0DFAF; font-weight: bold; } +.keyword.unsafe { color: #BC8383; font-weight: bold; } +.control { font-style: italic; } +</style> +<pre><code><span class="macro">macro_rules!</span> <span class="macro declaration">println</span> { + ($($arg:tt)*) => ({ + $<span class="keyword">crate</span>::io::_print($<span class="keyword">crate</span>::format_args_nl!($($arg)*)); + }) +} +#[rustc_builtin_macro] +<span class="macro">macro_rules!</span> <span class="macro declaration">format_args_nl</span> { + ($fmt:expr) => {{ <span class="comment">/* compiler built-in */</span> }}; + ($fmt:expr, $($args:tt)*) => {{ <span class="comment">/* compiler built-in */</span> }}; +} + +<span class="keyword">fn</span> <span class="function declaration">main</span>() { + <span class="comment">// from https://doc.rust-lang.org/std/fmt/index.html</span> + <span class="macro">println!</span>(<span class="string_literal">"Hello"</span>); <span class="comment">// => "Hello"</span> + <span class="macro">println!</span>(<span class="string_literal">"Hello, </span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, <span class="string_literal">"world"</span>); <span class="comment">// => "Hello, world!"</span> + <span class="macro">println!</span>(<span class="string_literal">"The number is </span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal">"</span>, <span class="numeric_literal">1</span>); <span class="comment">// => "The number is 1"</span> + <span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="format_specifier">?</span><span class="format_specifier">}</span><span class="string_literal">"</span>, (<span class="numeric_literal">3</span>, <span class="numeric_literal">4</span>)); <span class="comment">// => "(3, 4)"</span> + <span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="variable">value</span><span class="format_specifier">}</span><span class="string_literal">"</span>, value=<span class="numeric_literal">4</span>); <span class="comment">// => "4"</span> + <span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal"> </span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal">"</span>, <span class="numeric_literal">1</span>, <span class="numeric_literal">2</span>); <span class="comment">// => "1 2"</span> + <span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="numeric_literal">0</span><span class="numeric_literal">4</span><span class="format_specifier">}</span><span class="string_literal">"</span>, <span class="numeric_literal">42</span>); <span class="comment">// => "0042" with leading zerosV</span> + <span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="numeric_literal">1</span><span class="format_specifier">}</span><span class="string_literal"> </span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal"> </span><span class="format_specifier">{</span><span class="numeric_literal">0</span><span class="format_specifier">}</span><span class="string_literal"> </span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal">"</span>, <span class="numeric_literal">1</span>, <span class="numeric_literal">2</span>); <span class="comment">// => "2 1 1 2"</span> + <span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="variable">argument</span><span class="format_specifier">}</span><span class="string_literal">"</span>, argument = <span class="string_literal">"test"</span>); <span class="comment">// => "test"</span> + <span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="variable">name</span><span class="format_specifier">}</span><span class="string_literal"> </span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal">"</span>, <span class="numeric_literal">1</span>, name = <span class="numeric_literal">2</span>); <span class="comment">// => "2 1"</span> + <span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="variable">a</span><span class="format_specifier">}</span><span class="string_literal"> </span><span class="format_specifier">{</span><span class="variable">c</span><span class="format_specifier">}</span><span class="string_literal"> </span><span class="format_specifier">{</span><span class="variable">b</span><span class="format_specifier">}</span><span class="string_literal">"</span>, a=<span class="string_literal">"a"</span>, b=<span class="char_literal">'b'</span>, c=<span class="numeric_literal">3</span>); <span class="comment">// => "a 3 b"</span> + <span class="macro">println!</span>(<span class="string_literal">"{{</span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal">}}"</span>, <span class="numeric_literal">2</span>); <span class="comment">// => "{2}"</span> + <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="numeric_literal">5</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, <span class="string_literal">"x"</span>); + <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="numeric_literal">1</span><span class="format_specifier">$</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, <span class="string_literal">"x"</span>, <span class="numeric_literal">5</span>); + <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="numeric_literal">1</span><span class="format_specifier">:</span><span class="numeric_literal">0</span><span class="format_specifier">$</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, <span class="numeric_literal">5</span>, <span class="string_literal">"x"</span>); + <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="variable">width</span><span class="format_specifier">$</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, <span class="string_literal">"x"</span>, width = <span class="numeric_literal">5</span>); + <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="format_specifier"><</span><span class="numeric_literal">5</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, <span class="string_literal">"x"</span>); + <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="format_specifier">-</span><span class="format_specifier"><</span><span class="numeric_literal">5</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, <span class="string_literal">"x"</span>); + <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="format_specifier">^</span><span class="numeric_literal">5</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, <span class="string_literal">"x"</span>); + <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="format_specifier">></span><span class="numeric_literal">5</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, <span class="string_literal">"x"</span>); + <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="format_specifier">+</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, <span class="numeric_literal">5</span>); + <span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="format_specifier">#</span><span class="variable">x</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, <span class="numeric_literal">27</span>); + <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="numeric_literal">0</span><span class="numeric_literal">5</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, <span class="numeric_literal">5</span>); + <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="numeric_literal">0</span><span class="numeric_literal">5</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, -<span class="numeric_literal">5</span>); + <span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="format_specifier">#</span><span class="numeric_literal">0</span><span class="numeric_literal">10</span><span class="variable">x</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, <span class="numeric_literal">27</span>); + <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="numeric_literal">0</span><span class="format_specifier">}</span><span class="string_literal"> is </span><span class="format_specifier">{</span><span class="numeric_literal">1</span><span class="format_specifier">:</span><span class="format_specifier">.</span><span class="numeric_literal">5</span><span class="format_specifier">}</span><span class="string_literal">"</span>, <span class="string_literal">"x"</span>, <span class="numeric_literal">0.01</span>); + <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="numeric_literal">1</span><span class="format_specifier">}</span><span class="string_literal"> is </span><span class="format_specifier">{</span><span class="numeric_literal">2</span><span class="format_specifier">:</span><span class="format_specifier">.</span><span class="numeric_literal">0</span><span class="format_specifier">$</span><span class="format_specifier">}</span><span class="string_literal">"</span>, <span class="numeric_literal">5</span>, <span class="string_literal">"x"</span>, <span class="numeric_literal">0.01</span>); + <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="numeric_literal">0</span><span class="format_specifier">}</span><span class="string_literal"> is </span><span class="format_specifier">{</span><span class="numeric_literal">2</span><span class="format_specifier">:</span><span class="format_specifier">.</span><span class="numeric_literal">1</span><span class="format_specifier">$</span><span class="format_specifier">}</span><span class="string_literal">"</span>, <span class="string_literal">"x"</span>, <span class="numeric_literal">5</span>, <span class="numeric_literal">0.01</span>); + <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal"> is </span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="format_specifier">.</span><span class="format_specifier">*</span><span class="format_specifier">}</span><span class="string_literal">"</span>, <span class="string_literal">"x"</span>, <span class="numeric_literal">5</span>, <span class="numeric_literal">0.01</span>); + <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal"> is </span><span class="format_specifier">{</span><span class="numeric_literal">2</span><span class="format_specifier">:</span><span class="format_specifier">.</span><span class="format_specifier">*</span><span class="format_specifier">}</span><span class="string_literal">"</span>, <span class="string_literal">"x"</span>, <span class="numeric_literal">5</span>, <span class="numeric_literal">0.01</span>); + <span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal"> is </span><span class="format_specifier">{</span><span class="variable">number</span><span class="format_specifier">:</span><span class="format_specifier">.</span><span class="variable">prec</span><span class="format_specifier">$</span><span class="format_specifier">}</span><span class="string_literal">"</span>, <span class="string_literal">"x"</span>, prec = <span class="numeric_literal">5</span>, number = <span class="numeric_literal">0.01</span>); + <span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal">, `</span><span class="format_specifier">{</span><span class="variable">name</span><span class="format_specifier">:</span><span class="format_specifier">.</span><span class="format_specifier">*</span><span class="format_specifier">}</span><span class="string_literal">` has 3 fractional digits"</span>, <span class="string_literal">"Hello"</span>, <span class="numeric_literal">3</span>, name=<span class="numeric_literal">1234.56</span>); + <span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal">, `</span><span class="format_specifier">{</span><span class="variable">name</span><span class="format_specifier">:</span><span class="format_specifier">.</span><span class="format_specifier">*</span><span class="format_specifier">}</span><span class="string_literal">` has 3 characters"</span>, <span class="string_literal">"Hello"</span>, <span class="numeric_literal">3</span>, name=<span class="string_literal">"1234.56"</span>); + <span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal">, `</span><span class="format_specifier">{</span><span class="variable">name</span><span class="format_specifier">:</span><span class="format_specifier">></span><span class="numeric_literal">8</span><span class="format_specifier">.</span><span class="format_specifier">*</span><span class="format_specifier">}</span><span class="string_literal">` has 3 right-aligned characters"</span>, <span class="string_literal">"Hello"</span>, <span class="numeric_literal">3</span>, name=<span class="string_literal">"1234.56"</span>); + <span class="macro">println!</span>(<span class="string_literal">"Hello {{}}"</span>); + <span class="macro">println!</span>(<span class="string_literal">"{{ Hello"</span>); + + <span class="macro">println!</span>(<span class="string_literal">r"Hello, </span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, <span class="string_literal">"world"</span>); + + <span class="comment">// escape sequences</span> + <span class="macro">println!</span>(<span class="string_literal">"Hello</span><span class="escape_sequence">\n</span><span class="string_literal">World"</span>); + <span class="macro">println!</span>(<span class="string_literal">"</span><span class="escape_sequence">\u{48}</span><span class="escape_sequence">\x65</span><span class="escape_sequence">\x6C</span><span class="escape_sequence">\x6C</span><span class="escape_sequence">\x6F</span><span class="string_literal"> World"</span>); + + <span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="escape_sequence">\x41</span><span class="format_specifier">}</span><span class="string_literal">"</span>, A = <span class="numeric_literal">92</span>); + <span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="variable">ничоси</span><span class="format_specifier">}</span><span class="string_literal">"</span>, ничоси = <span class="numeric_literal">92</span>); +}</code></pre> \ No newline at end of file diff --git a/crates/ra_ide/test_data/highlight_unsafe.html b/crates/ra_ide/test_data/highlight_unsafe.html new file mode 100644 index 000000000..6936e949f --- /dev/null +++ b/crates/ra_ide/test_data/highlight_unsafe.html @@ -0,0 +1,53 @@ + +<style> +body { margin: 0; } +pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padding: 0.4em; } + +.lifetime { color: #DFAF8F; font-style: italic; } +.comment { color: #7F9F7F; } +.documentation { color: #629755; } +.injected { opacity: 0.65 ; } +.struct, .enum { color: #7CB8BB; } +.enum_variant { color: #BDE0F3; } +.string_literal { color: #CC9393; } +.field { color: #94BFF3; } +.function { color: #93E0E3; } +.function.unsafe { color: #BC8383; } +.operator.unsafe { color: #BC8383; } +.parameter { color: #94BFF3; } +.text { color: #DCDCCC; } +.type { color: #7CB8BB; } +.builtin_type { color: #8CD0D3; } +.type_param { color: #DFAF8F; } +.attribute { color: #94BFF3; } +.numeric_literal { color: #BFEBBF; } +.bool_literal { color: #BFE6EB; } +.macro { color: #94BFF3; } +.module { color: #AFD8AF; } +.variable { color: #DCDCCC; } +.format_specifier { color: #CC696B; } +.mutable { text-decoration: underline; } +.unresolved_reference { color: #FC5555; } +.escape_sequence { color: #94BFF3; } + +.keyword { color: #F0DFAF; font-weight: bold; } +.keyword.unsafe { color: #BC8383; font-weight: bold; } +.control { font-style: italic; } +</style> +<pre><code><span class="keyword unsafe">unsafe</span> <span class="keyword">fn</span> <span class="function declaration unsafe">unsafe_fn</span>() {} + +<span class="keyword">struct</span> <span class="struct declaration">HasUnsafeFn</span>; + +<span class="keyword">impl</span> <span class="struct">HasUnsafeFn</span> { + <span class="keyword unsafe">unsafe</span> <span class="keyword">fn</span> <span class="function declaration unsafe">unsafe_method</span>(&<span class="self_keyword">self</span>) {} +} + +<span class="keyword">fn</span> <span class="function declaration">main</span>() { + <span class="keyword">let</span> <span class="variable declaration">x</span> = &<span class="numeric_literal">5</span> <span class="keyword">as</span> *<span class="keyword">const</span> <span class="builtin_type">usize</span>; + <span class="keyword unsafe">unsafe</span> { + <span class="function unsafe">unsafe_fn</span>(); + <span class="struct">HasUnsafeFn</span>.<span class="function unsafe">unsafe_method</span>(); + <span class="keyword">let</span> <span class="variable declaration">y</span> = <span class="operator unsafe">*</span>(<span class="variable">x</span>); + <span class="keyword">let</span> <span class="variable declaration">z</span> = -<span class="variable">x</span>; + } +}</code></pre> \ No newline at end of file diff --git a/crates/ra_ide/test_data/highlighting.html b/crates/ra_ide/test_data/highlighting.html new file mode 100644 index 000000000..8d0b38f95 --- /dev/null +++ b/crates/ra_ide/test_data/highlighting.html @@ -0,0 +1,117 @@ + +<style> +body { margin: 0; } +pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padding: 0.4em; } + +.lifetime { color: #DFAF8F; font-style: italic; } +.comment { color: #7F9F7F; } +.documentation { color: #629755; } +.injected { opacity: 0.65 ; } +.struct, .enum { color: #7CB8BB; } +.enum_variant { color: #BDE0F3; } +.string_literal { color: #CC9393; } +.field { color: #94BFF3; } +.function { color: #93E0E3; } +.function.unsafe { color: #BC8383; } +.operator.unsafe { color: #BC8383; } +.parameter { color: #94BFF3; } +.text { color: #DCDCCC; } +.type { color: #7CB8BB; } +.builtin_type { color: #8CD0D3; } +.type_param { color: #DFAF8F; } +.attribute { color: #94BFF3; } +.numeric_literal { color: #BFEBBF; } +.bool_literal { color: #BFE6EB; } +.macro { color: #94BFF3; } +.module { color: #AFD8AF; } +.variable { color: #DCDCCC; } +.format_specifier { color: #CC696B; } +.mutable { text-decoration: underline; } +.unresolved_reference { color: #FC5555; } +.escape_sequence { color: #94BFF3; } + +.keyword { color: #F0DFAF; font-weight: bold; } +.keyword.unsafe { color: #BC8383; font-weight: bold; } +.control { font-style: italic; } +</style> +<pre><code><span class="attribute">#[</span><span class="function attribute">derive</span><span class="attribute">(Clone, Debug)]</span> +<span class="keyword">struct</span> <span class="struct declaration">Foo</span> { + <span class="keyword">pub</span> <span class="field declaration">x</span>: <span class="builtin_type">i32</span>, + <span class="keyword">pub</span> <span class="field declaration">y</span>: <span class="builtin_type">i32</span>, +} + +<span class="keyword">trait</span> <span class="trait declaration">Bar</span> { + <span class="keyword">fn</span> <span class="function declaration">bar</span>(&<span class="self_keyword">self</span>) -> <span class="builtin_type">i32</span>; +} + +<span class="keyword">impl</span> <span class="trait">Bar</span> <span class="keyword">for</span> <span class="struct">Foo</span> { + <span class="keyword">fn</span> <span class="function declaration">bar</span>(&<span class="self_keyword">self</span>) -> <span class="builtin_type">i32</span> { + <span class="self_keyword">self</span>.<span class="field">x</span> + } +} + +<span class="keyword">static</span> <span class="keyword">mut</span> <span class="static declaration mutable">STATIC_MUT</span>: <span class="builtin_type">i32</span> = <span class="numeric_literal">0</span>; + +<span class="keyword">fn</span> <span class="function declaration">foo</span><<span class="lifetime declaration">'a</span>, <span class="type_param declaration">T</span>>() -> <span class="type_param">T</span> { + <span class="function">foo</span>::<<span class="lifetime">'a</span>, <span class="builtin_type">i32</span>>() +} + +<span class="macro">macro_rules!</span> <span class="macro declaration">def_fn</span> { + ($($tt:tt)*) => {$($tt)*} +} + +<span class="macro">def_fn!</span> { + <span class="keyword">fn</span> <span class="function declaration">bar</span>() -> <span class="builtin_type">u32</span> { + <span class="numeric_literal">100</span> + } +} + +<span class="macro">macro_rules!</span> <span class="macro declaration">noop</span> { + ($expr:expr) => { + $expr + } +} + +<span class="comment">// comment</span> +<span class="keyword">fn</span> <span class="function declaration">main</span>() { + <span class="macro">println!</span>(<span class="string_literal">"Hello, {}!"</span>, <span class="numeric_literal">92</span>); + + <span class="keyword">let</span> <span class="keyword">mut</span> <span class="variable declaration mutable">vec</span> = <span class="unresolved_reference">Vec</span>::<span class="unresolved_reference">new</span>(); + <span class="keyword control">if</span> <span class="bool_literal">true</span> { + <span class="keyword">let</span> <span class="variable declaration">x</span> = <span class="numeric_literal">92</span>; + <span class="variable mutable">vec</span>.<span class="unresolved_reference">push</span>(<span class="struct">Foo</span> { <span class="field">x</span>, <span class="field">y</span>: <span class="numeric_literal">1</span> }); + } + <span class="keyword unsafe">unsafe</span> { + <span class="variable mutable">vec</span>.<span class="unresolved_reference">set_len</span>(<span class="numeric_literal">0</span>); + <span class="static mutable">STATIC_MUT</span> = <span class="numeric_literal">1</span>; + } + + <span class="keyword control">for</span> <span class="variable declaration">e</span> <span class="keyword control">in</span> <span class="variable mutable">vec</span> { + <span class="comment">// Do nothing</span> + } + + <span class="macro">noop!</span>(<span class="macro">noop</span><span class="macro">!</span>(<span class="numeric_literal">1</span>)); + + <span class="keyword">let</span> <span class="keyword">mut</span> <span class="variable declaration mutable">x</span> = <span class="numeric_literal">42</span>; + <span class="keyword">let</span> <span class="variable declaration mutable">y</span> = &<span class="keyword">mut</span> <span class="variable mutable">x</span>; + <span class="keyword">let</span> <span class="variable declaration">z</span> = &<span class="variable mutable">y</span>; + + <span class="keyword">let</span> <span class="struct">Foo</span> { <span class="field">x</span>: <span class="variable declaration">z</span>, <span class="field">y</span> } = <span class="struct">Foo</span> { <span class="field">x</span>: <span class="variable">z</span>, <span class="field">y</span> }; + + <span class="variable">y</span>; +} + +<span class="keyword">enum</span> <span class="enum declaration">Option</span><<span class="type_param declaration">T</span>> { + <span class="enum_variant declaration">Some</span>(<span class="type_param">T</span>), + <span class="enum_variant declaration">None</span>, +} +<span class="keyword">use</span> <span class="enum">Option</span>::*; + +<span class="keyword">impl</span><<span class="type_param declaration">T</span>> <span class="enum">Option</span><<span class="type_param">T</span>> { + <span class="keyword">fn</span> <span class="function declaration">and</span><<span class="type_param declaration">U</span>>(<span class="self_keyword">self</span>, <span class="variable declaration">other</span>: <span class="enum">Option</span><<span class="type_param">U</span>>) -> <span class="enum">Option</span><(<span class="type_param">T</span>, <span class="type_param">U</span>)> { + <span class="keyword control">match</span> <span class="variable">other</span> { + <span class="enum_variant">None</span> => <span class="macro">unimplemented!</span>(), + <span class="variable declaration">Nope</span> => <span class="variable">Nope</span>, + } + } +}</code></pre> \ No newline at end of file diff --git a/crates/ra_ide/test_data/rainbow_highlighting.html b/crates/ra_ide/test_data/rainbow_highlighting.html new file mode 100644 index 000000000..9516c7441 --- /dev/null +++ b/crates/ra_ide/test_data/rainbow_highlighting.html @@ -0,0 +1,48 @@ + +<style> +body { margin: 0; } +pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padding: 0.4em; } + +.lifetime { color: #DFAF8F; font-style: italic; } +.comment { color: #7F9F7F; } +.documentation { color: #629755; } +.injected { opacity: 0.65 ; } +.struct, .enum { color: #7CB8BB; } +.enum_variant { color: #BDE0F3; } +.string_literal { color: #CC9393; } +.field { color: #94BFF3; } +.function { color: #93E0E3; } +.function.unsafe { color: #BC8383; } +.operator.unsafe { color: #BC8383; } +.parameter { color: #94BFF3; } +.text { color: #DCDCCC; } +.type { color: #7CB8BB; } +.builtin_type { color: #8CD0D3; } +.type_param { color: #DFAF8F; } +.attribute { color: #94BFF3; } +.numeric_literal { color: #BFEBBF; } +.bool_literal { color: #BFE6EB; } +.macro { color: #94BFF3; } +.module { color: #AFD8AF; } +.variable { color: #DCDCCC; } +.format_specifier { color: #CC696B; } +.mutable { text-decoration: underline; } +.unresolved_reference { color: #FC5555; } +.escape_sequence { color: #94BFF3; } + +.keyword { color: #F0DFAF; font-weight: bold; } +.keyword.unsafe { color: #BC8383; font-weight: bold; } +.control { font-style: italic; } +</style> +<pre><code><span class="keyword">fn</span> <span class="function declaration">main</span>() { + <span class="keyword">let</span> <span class="variable declaration" data-binding-hash="8121853618659664005" style="color: hsl(261,57%,61%);">hello</span> = <span class="string_literal">"hello"</span>; + <span class="keyword">let</span> <span class="variable declaration" data-binding-hash="2705725358298919760" style="color: hsl(17,51%,74%);">x</span> = <span class="variable" data-binding-hash="8121853618659664005" style="color: hsl(261,57%,61%);">hello</span>.<span class="unresolved_reference">to_string</span>(); + <span class="keyword">let</span> <span class="variable declaration" data-binding-hash="3365759661443752373" style="color: hsl(127,76%,66%);">y</span> = <span class="variable" data-binding-hash="8121853618659664005" style="color: hsl(261,57%,61%);">hello</span>.<span class="unresolved_reference">to_string</span>(); + + <span class="keyword">let</span> <span class="variable declaration" data-binding-hash="794745962933817518" style="color: hsl(19,74%,76%);">x</span> = <span class="string_literal">"other color please!"</span>; + <span class="keyword">let</span> <span class="variable declaration" data-binding-hash="6717528807933952652" style="color: hsl(85,49%,84%);">y</span> = <span class="variable" data-binding-hash="794745962933817518" style="color: hsl(19,74%,76%);">x</span>.<span class="unresolved_reference">to_string</span>(); +} + +<span class="keyword">fn</span> <span class="function declaration">bar</span>() { + <span class="keyword">let</span> <span class="keyword">mut</span> <span class="variable declaration mutable" data-binding-hash="8121853618659664005" style="color: hsl(261,57%,61%);">hello</span> = <span class="string_literal">"hello"</span>; +}</code></pre> \ No newline at end of file -- cgit v1.2.3