Skip to content
This repository was archived by the owner on Dec 23, 2024. It is now read-only.

Commit 370bf03

Browse files
cartermpKevinRansom
authored andcommitted
Trigger add open for FS0043 (dotnet#2474)
* Trigger add open for FS0043 * Contains -> StartsWith * fixed: AddOpenCodeFixProvider may suggest name qualifying for operators
1 parent e0d7fe2 commit 370bf03

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

CodeFix/AddOpenCodeFixProvider.fs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ type internal FSharpAddOpenCodeFixProvider
8585
assemblyContentProvider: AssemblyContentProvider
8686
) =
8787
inherit CodeFixProvider()
88-
let fixableDiagnosticIds = ["FS0039"]
88+
let fixableDiagnosticIds = ["FS0039"; "FS0043"]
8989

9090
let checker = checkerProvider.Checker
9191
let fixUnderscoresInMenuText (text: string) = text.Replace("_", "__")
@@ -131,15 +131,16 @@ type internal FSharpAddOpenCodeFixProvider
131131
openNamespaceFix context ctx name ns multipleNames)
132132
|> Seq.toList
133133

134-
let quilifySymbolFixes =
134+
let qualifiedSymbolFixes =
135135
candidates
136+
|> Seq.filter (fun (entity,_) -> not(entity.LastIdent.StartsWith "op_")) // Don't include qualified operator names. The resultant codefix won't compile because it won't be an infix operator anymore.
136137
|> Seq.map (fun (entity, _) -> entity.FullRelativeName, entity.Qualifier)
137138
|> Seq.distinct
138139
|> Seq.sort
139140
|> Seq.map (qualifySymbolFix context)
140141
|> Seq.toList
141142

142-
for codeFix in openNamespaceFixes @ quilifySymbolFixes do
143+
for codeFix in openNamespaceFixes @ qualifiedSymbolFixes do
143144
context.RegisterCodeFix(codeFix, (context.Diagnostics |> Seq.filter (fun x -> fixableDiagnosticIds |> List.contains x.Id)).ToImmutableArray())
144145

145146
override __.FixableDiagnosticIds = fixableDiagnosticIds.ToImmutableArray()
@@ -181,9 +182,9 @@ type internal FSharpAddOpenCodeFixProvider
181182
longIdent
182183
|> List.map (fun ident ->
183184
{ Ident = ident.idText
184-
Resolved = not (ident.idRange = unresolvedIdentRange) })
185+
Resolved = not (ident.idRange = unresolvedIdentRange)})
185186
|> List.toArray)
186-
187+
187188
let createEntity = ParsedInput.tryFindInsertionContext unresolvedIdentRange.StartLine parsedInput maybeUnresolvedIdents
188189
return entities |> Seq.map createEntity |> Seq.concat |> Seq.toList |> getSuggestions context
189190
}

0 commit comments

Comments
 (0)