Refactor Request: Promote local to field
- Dominant language
- C#
- Stars
- 3.5k
- Forks
- 294
- Avg merge
- 2h 30m
- Merged PRs (30d)
- 4
Description
This request has something to do with #268 to fix the problem before converting a lambda expression to a method.
Given the following code:
````C#
void HookEvents() {
var tagger = GetTagger();
textView.Closed += (s, args) => {
tagger.Dispose();
};
}
````
After refactoring, it produces:
````C#
ITagger _tagger;
void HookEvents() {
_tagger = GetTagger();
textView.Closed += (s, args) => {
_tagger.Dispose();
};
}
````
If the containing method is a static one, the promoted field should be static field.
If the member is a generic instance that given the type parameter from a generic method, the promoted field can be converted to object. (If it is difficult to do so, do not support promoting generic locals)
````C#
void HookEvents() {
ITagger tagger = GetTagger();
textView.Closed += (s, args) => {
_tagger.Dispose();
};}
````
After refactoring:
````C#
object _tagger;
void HookEvents() {
_tagger = GetTagger();
textView.Closed += (s, args) => {
((ITagger)_tagger).Dispose();
};}
````
Contributor guide
Assessment
This issue has not been assessed yet.