Skip to content

Commit 0aeb4a0

Browse files
TIHanbrettfo
authored andcommitted
Roslyn Shim - Round 2 (#6734)
* Added shims over document diagnostic analyzers * Shims over completions and sig help * Removed content type definitions, putting them in external access * Added shim over InlineRenameService * We are now simply using export on the diagnostic analyzers * Using shim for document highlights service * GoToDefinition implemented with shims * NavigableSymbolsService shimmed * GoToDefinitionService shimmed * NavigationBarItemService shimmmed * Shimmed NavigateToSearchService * Quick cast fix * Using FSharpGlyphTags * Removed CommentSelectionService as it is ExternalAccess now * Shimmed BlockStructureService * Trying to finish shim * Removed folder from FSharp.Editor * Update package * fixing build * Trying to fix build * match roslyn package version
1 parent bff4fff commit 0aeb4a0

32 files changed

+413
-548
lines changed

RoslynPackageVersion.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.1.0-beta3-19222-02
1+
3.2.0-beta4-19312-15

eng/Versions.props

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
https://dotnet.myget.org/F/roslyn-tools/api/v3/index.json;
5656
https://api.nuget.org/v3/index.json;
5757
https://dotnet.myget.org/F/roslyn/api/v3/index.json;
58+
https://dotnet.myget.org/F/roslyn-analyzers/api/v3/index.json;
5859
https://dotnet.myget.org/F/symreader-converter/api/v3/index.json;
5960
https://dotnet.myget.org/F/interactive-window/api/v3/index.json;
6061
https://myget.org/F/vs-devcore/api/v3/index.json;

vsintegration/src/FSharp.Editor/BlockComment/CommentSelectionService.fs

Lines changed: 0 additions & 19 deletions
This file was deleted.

vsintegration/src/FSharp.Editor/CodeFix/RemoveUnusedOpens.fs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ open Microsoft.CodeAnalysis.Diagnostics
1010
open Microsoft.CodeAnalysis.Text
1111
open Microsoft.CodeAnalysis.CodeFixes
1212
open Microsoft.CodeAnalysis.CodeActions
13+
open Microsoft.CodeAnalysis.ExternalAccess.FSharp.Diagnostics
1314

1415
open FSharp.Compiler.Range
1516

@@ -21,7 +22,7 @@ type internal FSharpRemoveUnusedOpensCodeFixProvider
2122
projectInfoManager: FSharpProjectOptionsManager
2223
) =
2324
inherit CodeFixProvider()
24-
let fixableDiagnosticIds = [IDEDiagnosticIds.RemoveUnnecessaryImportsDiagnosticId]
25+
let fixableDiagnosticIds = [FSharpIDEDiagnosticIds.RemoveUnnecessaryImportsDiagnosticId]
2526

2627
let createCodeFix (title: string, context: CodeFixContext) =
2728
CodeAction.Create(

vsintegration/src/FSharp.Editor/CodeFix/SimplifyName.fs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,13 @@ open Microsoft.CodeAnalysis
1010
open Microsoft.CodeAnalysis.Diagnostics
1111
open Microsoft.CodeAnalysis.Text
1212
open Microsoft.CodeAnalysis.CodeFixes
13+
open Microsoft.CodeAnalysis.ExternalAccess.FSharp.Diagnostics
1314
open SymbolHelpers
1415

15-
[<ExportCodeFixProvider(FSharpConstants.FSharpLanguageName, Name = PredefinedCodeFixProviderNames.SimplifyNames); Shared>]
16+
[<ExportCodeFixProvider(FSharpConstants.FSharpLanguageName, Name = "SimplifyNames"); Shared>]
1617
type internal FSharpSimplifyNameCodeFixProvider() =
1718
inherit CodeFixProvider()
18-
let fixableDiagnosticId = IDEDiagnosticIds.SimplifyNamesDiagnosticId
19+
let fixableDiagnosticId = FSharpIDEDiagnosticIds.SimplifyNamesDiagnosticId
1920

2021
override __.FixableDiagnosticIds = ImmutableArray.Create(fixableDiagnosticId)
2122

vsintegration/src/FSharp.Editor/CodeLens/FSharpCodeLensService.fs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ open System.Windows.Media.Animation
1414
open Microsoft.CodeAnalysis
1515
open Microsoft.CodeAnalysis.Editor.Shared.Extensions
1616
open Microsoft.CodeAnalysis.ExternalAccess.FSharp.Classification
17+
open Microsoft.CodeAnalysis.ExternalAccess.FSharp.Editor.Shared.Extensions
1718

1819
open FSharp.Compiler
1920
open FSharp.Compiler.SourceCodeServices
@@ -91,7 +92,7 @@ type internal FSharpCodeLensService
9192
logInfof "Tagged text %A" taggedText
9293
#endif
9394
let textBlock = new TextBlock(Background = Brushes.AliceBlue, Opacity = 0.0, TextTrimming = TextTrimming.None)
94-
DependencyObjectExtensions.SetDefaultTextProperties(textBlock, formatMap.Value)
95+
FSharpDependencyObjectExtensions.SetDefaultTextProperties(textBlock, formatMap.Value)
9596

9697
let prefix = Documents.Run settings.CodeLens.Prefix
9798
prefix.Foreground <- SolidColorBrush(Color.FromRgb(153uy, 153uy, 153uy))
@@ -116,7 +117,7 @@ type internal FSharpCodeLensService
116117
coloredProperties.SetForeground(Color.FromRgb(153uy, 153uy, 153uy))
117118

118119
let run = Documents.Run text.Text
119-
DependencyObjectExtensions.SetTextProperties (run, actualProperties)
120+
FSharpDependencyObjectExtensions.SetTextProperties (run, actualProperties)
120121

121122
let inl =
122123
match text with
@@ -126,7 +127,7 @@ type internal FSharpCodeLensService
126127
navigation.NavigateTo nav.Range)
127128
h :> Documents.Inline
128129
| _ -> run :> _
129-
DependencyObjectExtensions.SetTextProperties (inl, actualProperties)
130+
FSharpDependencyObjectExtensions.SetTextProperties (inl, actualProperties)
130131
textBlock.Inlines.Add inl
131132

132133

vsintegration/src/FSharp.Editor/Common/ContentType.fs

Lines changed: 0 additions & 20 deletions
This file was deleted.

vsintegration/src/FSharp.Editor/Common/RoslynHelpers.fs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -130,14 +130,6 @@ module internal RoslynHelpers =
130130
let StartAsyncUnitAsTask cancellationToken (computation:Async<unit>) =
131131
StartAsyncAsTask cancellationToken computation :> Task
132132

133-
let private TheSupportedDiagnostics =
134-
// We are constructing our own descriptors at run-time. Compiler service is already doing error formatting and localization.
135-
let dummyDescriptors =
136-
[| for i in 0 .. 10000 -> DiagnosticDescriptor(sprintf "FS%04d" i, String.Empty, String.Empty, String.Empty, DiagnosticSeverity.Error, true, null, null) |]
137-
ImmutableArray.Create<DiagnosticDescriptor>(dummyDescriptors)
138-
139-
let SupportedDiagnostics() = TheSupportedDiagnostics
140-
141133
let ConvertError(error: FSharpErrorInfo, location: Location) =
142134
// Normalize the error message into the same format that we will receive it from the compiler.
143135
// This ensures that IntelliSense and Compiler errors in the 'Error List' are de-duplicated.

vsintegration/src/FSharp.Editor/Completion/CompletionProvider.fs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ open Microsoft.CodeAnalysis
1212
open Microsoft.CodeAnalysis.Completion
1313
open Microsoft.CodeAnalysis.Options
1414
open Microsoft.CodeAnalysis.Text
15+
open Microsoft.CodeAnalysis.ExternalAccess.FSharp.Completion
1516

1617
open Microsoft.VisualStudio.Shell
1718

@@ -48,7 +49,7 @@ type internal FSharpCompletionProvider
4849
|> List.filter (fun (keyword, _) -> not (PrettyNaming.IsOperatorName keyword))
4950
|> List.sortBy (fun (keyword, _) -> keyword)
5051
|> List.mapi (fun n (keyword, description) ->
51-
CommonCompletionItem.Create(keyword, null, CompletionItemRules.Default, Nullable Glyph.Keyword, sortText = sprintf "%06d" (1000000 + n))
52+
FSharpCommonCompletionItem.Create(keyword, null, CompletionItemRules.Default, Nullable Glyph.Keyword, sortText = sprintf "%06d" (1000000 + n))
5253
.AddProperty("description", description)
5354
.AddProperty(IsKeywordPropName, ""))
5455

@@ -73,7 +74,7 @@ type internal FSharpCompletionProvider
7374
// * let xs = [1..10] <<---- Don't commit autocomplete! (same for arrays)
7475
let noCommitChars = [|' '; '='; ','; '.'; '<'; '>'; '('; ')'; '!'; ':'; '['; ']'; '|'|].ToImmutableArray()
7576

76-
CompletionItemRules.Default.WithCommitCharacterRule(CharacterSetModificationRule.Create(CharacterSetModificationKind.Remove, noCommitChars))
77+
CompletionItemRules.Default.WithCommitCharacterRules(ImmutableArray.Create (CharacterSetModificationRule.Create(CharacterSetModificationKind.Remove, noCommitChars)))
7778

7879
static let getRules showAfterCharIsTyped = if showAfterCharIsTyped then noCommitOnSpaceRules else CompletionItemRules.Default
7980

@@ -152,7 +153,7 @@ type internal FSharpCompletionProvider
152153
| _, idents -> Array.last idents
153154

154155
let completionItem =
155-
CommonCompletionItem.Create(name, null, rules = getRules intellisenseOptions.ShowAfterCharIsTyped, glyph = Nullable (Microsoft.CodeAnalysis.ExternalAccess.FSharp.FSharpGlyphHelpersObsolete.Convert(glyph)), filterText = filterText)
156+
FSharpCommonCompletionItem.Create(name, null, rules = getRules intellisenseOptions.ShowAfterCharIsTyped, glyph = Nullable glyph, filterText = filterText)
156157
.AddProperty(FullNamePropName, declarationItem.FullName)
157158

158159
let completionItem =
@@ -198,7 +199,7 @@ type internal FSharpCompletionProvider
198199
}
199200

200201
override this.ShouldTriggerCompletion(sourceText: SourceText, caretPosition: int, trigger: CompletionTrigger, _: OptionSet) =
201-
use _logBlock = Logger.LogBlockMessage this.Name LogEditorFunctionId.Completion_ShouldTrigger
202+
use _logBlock = Logger.LogBlock LogEditorFunctionId.Completion_ShouldTrigger
202203

203204
let getInfo() =
204205
let documentId = workspace.GetDocumentIdInCurrentContext(sourceText.Container)

vsintegration/src/FSharp.Editor/Completion/CompletionService.fs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ open Microsoft.CodeAnalysis
99
open Microsoft.CodeAnalysis.Completion
1010
open Microsoft.CodeAnalysis.Host
1111
open Microsoft.CodeAnalysis.Host.Mef
12+
open Microsoft.CodeAnalysis.ExternalAccess.FSharp.Completion
1213

1314
open Microsoft.VisualStudio.Shell
1415

@@ -26,10 +27,11 @@ type internal FSharpCompletionService
2627
let builtInProviders =
2728
ImmutableArray.Create<CompletionProvider>(
2829
FSharpCompletionProvider(workspace, serviceProvider, checkerProvider, projectInfoManager, assemblyContentProvider),
29-
HashDirectiveCompletionProvider(workspace, projectInfoManager,
30-
[ Completion.Create("""\s*#load\s+(@?"*(?<literal>"[^"]*"?))""", [".fs"; ".fsx"], useIncludeDirectives = true)
31-
Completion.Create("""\s*#r\s+(@?"*(?<literal>"[^"]*"?))""", [".dll"; ".exe"], useIncludeDirectives = true)
32-
Completion.Create("""\s*#I\s+(@?"*(?<literal>"[^"]*"?))""", ["\x00"], useIncludeDirectives = false) ]))
30+
FSharpCommonCompletionProvider.Create(
31+
HashDirectiveCompletionProvider(workspace, projectInfoManager,
32+
[ Completion.Create("""\s*#load\s+(@?"*(?<literal>"[^"]*"?))""", [".fs"; ".fsx"], useIncludeDirectives = true)
33+
Completion.Create("""\s*#r\s+(@?"*(?<literal>"[^"]*"?))""", [".dll"; ".exe"], useIncludeDirectives = true)
34+
Completion.Create("""\s*#I\s+(@?"*(?<literal>"[^"]*"?))""", ["\x00"], useIncludeDirectives = false) ])))
3335

3436
override this.Language = FSharpConstants.FSharpLanguageName
3537
override this.GetBuiltInProviders() = builtInProviders

0 commit comments

Comments
 (0)