Skip to content

Commit 3cf3076

Browse files
authored
Add missing instance member parameter code fix (#11567)
1 parent 3a3fac2 commit 3cf3076

16 files changed

+106
-0
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
2+
3+
namespace Microsoft.VisualStudio.FSharp.Editor
4+
5+
open System.Composition
6+
open System.Threading.Tasks
7+
8+
open Microsoft.CodeAnalysis.Text
9+
open Microsoft.CodeAnalysis.CodeFixes
10+
11+
[<ExportCodeFixProvider(FSharpConstants.FSharpLanguageName, Name = "AddInstanceMemberParameter"); Shared>]
12+
type internal FSharpAddInstanceMemberParameterCodeFixProvider() =
13+
inherit CodeFixProvider()
14+
15+
let fixableDiagnosticIds = set ["FS0673"]
16+
17+
override _.FixableDiagnosticIds = Seq.toImmutableArray fixableDiagnosticIds
18+
19+
override _.RegisterCodeFixesAsync context : Task =
20+
asyncMaybe {
21+
let diagnostics =
22+
context.Diagnostics
23+
|> Seq.filter (fun x -> fixableDiagnosticIds |> Set.contains x.Id)
24+
|> Seq.toImmutableArray
25+
26+
let title = SR.AddMissingInstanceMemberParameter()
27+
28+
let codeFix =
29+
CodeFixHelpers.createTextChangeCodeFix(
30+
title,
31+
context,
32+
(fun () -> asyncMaybe.Return [| TextChange(TextSpan(context.Span.Start, 0), "x.") |]))
33+
34+
context.RegisterCodeFix(codeFix, diagnostics)
35+
}
36+
|> Async.Ignore
37+
|> RoslynHelpers.StartAsyncUnitAsTask(context.CancellationToken)

vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@
9393
<Compile Include="Refactor\AddExplicitTypeToParameter.fs" />
9494
<Compile Include="Refactor\ChangeDerefToValueRefactoring.fs" />
9595
<Compile Include="CodeFix\CodeFixHelpers.fs" />
96+
<Compile Include="CodeFix\AddInstanceMemberParameter.fs" />
9697
<Compile Include="CodeFix\AddTypeAnnotationToObjectOfIndeterminateType.fs" />
9798
<Compile Include="CodeFix\AddMissingRecToMutuallyRecFunctions.fs" />
9899
<Compile Include="CodeFix\ConvertCSharpLambdaToFSharpLambda.fs" />

vsintegration/src/FSharp.Editor/FSharp.Editor.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,9 @@
282282
<data name="RemoveUnusedBinding" xml:space="preserve">
283283
<value>Remove unused binding</value>
284284
</data>
285+
<data name="AddMissingInstanceMemberParameter" xml:space="preserve">
286+
<value>Add missing instance member parameter</value>
287+
</data>
285288
<data name="UseNameof" xml:space="preserve">
286289
<value>Use 'nameof'</value>
287290
</data>

vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.cs.xlf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@
1212
<target state="translated">Přidat chybějící klíčové slovo fun</target>
1313
<note />
1414
</trans-unit>
15+
<trans-unit id="AddMissingInstanceMemberParameter">
16+
<source>Add missing instance member parameter</source>
17+
<target state="new">Add missing instance member parameter</target>
18+
<note />
19+
</trans-unit>
1520
<trans-unit id="AddNewKeyword">
1621
<source>Add 'new' keyword</source>
1722
<target state="translated">Přidejte klíčové slovo new.</target>

vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.de.xlf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@
1212
<target state="translated">Fehlendes Schlüsselwort "fun" hinzufügen</target>
1313
<note />
1414
</trans-unit>
15+
<trans-unit id="AddMissingInstanceMemberParameter">
16+
<source>Add missing instance member parameter</source>
17+
<target state="new">Add missing instance member parameter</target>
18+
<note />
19+
</trans-unit>
1520
<trans-unit id="AddNewKeyword">
1621
<source>Add 'new' keyword</source>
1722
<target state="translated">Schlüsselwort "new" hinzufügen</target>

vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.es.xlf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@
1212
<target state="translated">Agregar la palabra clave "fun" que falta</target>
1313
<note />
1414
</trans-unit>
15+
<trans-unit id="AddMissingInstanceMemberParameter">
16+
<source>Add missing instance member parameter</source>
17+
<target state="new">Add missing instance member parameter</target>
18+
<note />
19+
</trans-unit>
1520
<trans-unit id="AddNewKeyword">
1621
<source>Add 'new' keyword</source>
1722
<target state="translated">Agregar "nueva" palabra clave</target>

vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.fr.xlf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@
1212
<target state="translated">Ajouter le mot clé 'fun' manquant</target>
1313
<note />
1414
</trans-unit>
15+
<trans-unit id="AddMissingInstanceMemberParameter">
16+
<source>Add missing instance member parameter</source>
17+
<target state="new">Add missing instance member parameter</target>
18+
<note />
19+
</trans-unit>
1520
<trans-unit id="AddNewKeyword">
1621
<source>Add 'new' keyword</source>
1722
<target state="translated">Ajouter le mot clé 'new'</target>

vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.it.xlf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@
1212
<target state="translated">Aggiungi la parola chiave mancante 'fun'</target>
1313
<note />
1414
</trans-unit>
15+
<trans-unit id="AddMissingInstanceMemberParameter">
16+
<source>Add missing instance member parameter</source>
17+
<target state="new">Add missing instance member parameter</target>
18+
<note />
19+
</trans-unit>
1520
<trans-unit id="AddNewKeyword">
1621
<source>Add 'new' keyword</source>
1722
<target state="translated">Aggiungi la parola chiave 'new'</target>

vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.ja.xlf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@
1212
<target state="translated">不足している 'fun' キーワードを追加する</target>
1313
<note />
1414
</trans-unit>
15+
<trans-unit id="AddMissingInstanceMemberParameter">
16+
<source>Add missing instance member parameter</source>
17+
<target state="new">Add missing instance member parameter</target>
18+
<note />
19+
</trans-unit>
1520
<trans-unit id="AddNewKeyword">
1621
<source>Add 'new' keyword</source>
1722
<target state="translated">'new' キーワードを追加する</target>

vsintegration/src/FSharp.Editor/xlf/FSharp.Editor.ko.xlf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@
1212
<target state="translated">누락된 'fun' 키워드 추가</target>
1313
<note />
1414
</trans-unit>
15+
<trans-unit id="AddMissingInstanceMemberParameter">
16+
<source>Add missing instance member parameter</source>
17+
<target state="new">Add missing instance member parameter</target>
18+
<note />
19+
</trans-unit>
1520
<trans-unit id="AddNewKeyword">
1621
<source>Add 'new' keyword</source>
1722
<target state="translated">'new' 키워드 추가</target>

0 commit comments

Comments
 (0)