Skip to content

Commit 93de491

Browse files
bors[bot]Veykril
andauthored
Merge #6199
6199: Fix `mut self` not emitting mutable binding on `self` use r=matklad a=Veykril Prior to this, when `self` in a function is taken by value and bound mutably, its use inside of the method body won't be marked `mutably`. Fixes #5461 Co-authored-by: Lukas Wirth <[email protected]>
2 parents 518f6d7 + 9909ccb commit 93de491

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

crates/hir_def/src/body/lower.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,10 @@ impl ExprCollector<'_> {
107107
let param_pat = self.alloc_pat(
108108
Pat::Bind {
109109
name: name![self],
110-
mode: BindingAnnotation::Unannotated,
110+
mode: BindingAnnotation::new(
111+
self_param.mut_token().is_some() && self_param.amp_token().is_none(),
112+
false,
113+
),
111114
subpat: None,
112115
},
113116
Either::Right(ptr),

crates/ide/src/syntax_highlighting/test_data/highlighting.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262

6363
<span class="keyword">impl</span> <span class="struct">Foo</span> <span class="punctuation">{</span>
6464
<span class="keyword">fn</span> <span class="function declaration">baz</span><span class="punctuation">(</span><span class="keyword">mut</span> <span class="self_keyword mutable">self</span><span class="punctuation">,</span> <span class="value_param declaration">f</span><span class="punctuation">:</span> <span class="struct">Foo</span><span class="punctuation">)</span> <span class="operator">-&gt;</span> <span class="builtin_type">i32</span> <span class="punctuation">{</span>
65-
<span class="value_param">f</span><span class="punctuation">.</span><span class="function consuming">baz</span><span class="punctuation">(</span><span class="self_keyword consuming">self</span><span class="punctuation">)</span>
65+
<span class="value_param">f</span><span class="punctuation">.</span><span class="function consuming">baz</span><span class="punctuation">(</span><span class="self_keyword mutable consuming">self</span><span class="punctuation">)</span>
6666
<span class="punctuation">}</span>
6767

6868
<span class="keyword">fn</span> <span class="function declaration">qux</span><span class="punctuation">(</span><span class="operator">&</span><span class="keyword">mut</span> <span class="self_keyword mutable">self</span><span class="punctuation">)</span> <span class="punctuation">{</span>

0 commit comments

Comments
 (0)