Skip to content

Commit 9b8b6c0

Browse files
authored
Merge pull request #1506 from OmarTawfik/roslyn-diagnostics
Roslyn Diagnostics Service
2 parents b3c97d6 + ca0a080 commit 9b8b6c0

File tree

58 files changed

+687
-1182
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+687
-1182
lines changed

.nuget/NuGet.Config

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
<!--To inherit the global NuGet package sources remove the <clear/> line below -->
99
<clear />
1010
<add key="myget.org fsharp-daily" value="https://www.myget.org/F/fsharp-daily/api/v3/index.json" />
11+
<add key="myget.org roslyn-dev15-preview4-df-nightly" value="https://dotnet.myget.org/F/roslyn-dev15-preview4-df-nightly/api/v3/index.json" />
1112
<add key="dotnet-core" value="https://dotnet.myget.org/F/dotnet-core/api/v3/index.json" />
1213
<add key="myget.org dotnet-buildtools" value="https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json" />
1314
<add key="api.nuget.org" value="https://api.nuget.org/v3/index.json" />

packages.config

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@
1616
<package id="WiX.Toolset.2015" version="3.10.0.1503" />
1717
<package id="Microsoft.VisualFSharp.Core.Redist" version="1.0.0" />
1818
<package id="Microsoft.VisualFSharp.Type.Providers.Redist" version="1.0.0" />
19-
<package id="Microsoft.CodeAnalysis.Common" version="2.0.0-beta1" targetFramework="net46" />
20-
<package id="Microsoft.CodeAnalysis.EditorFeatures" version="2.0.0-beta1" targetFramework="net46" />
21-
<package id="Microsoft.CodeAnalysis.EditorFeatures.Text" version="2.0.0-beta1" targetFramework="net46" />
22-
<package id="Microsoft.CodeAnalysis.Features" version="2.0.0-beta1" targetFramework="net46" />
23-
<package id="Microsoft.CodeAnalysis.Workspaces.Common" version="2.0.0-beta1" targetFramework="net46" />
24-
<package id="Microsoft.VisualStudio.LanguageServices" version="2.0.0-beta1" targetFramework="net46" />
19+
<package id="Microsoft.CodeAnalysis.Common" version="2.0.0-beta4-60808-03" targetFramework="net46" />
20+
<package id="Microsoft.CodeAnalysis.EditorFeatures" version="2.0.0-beta4-60808-03" targetFramework="net46" />
21+
<package id="Microsoft.CodeAnalysis.EditorFeatures.Text" version="2.0.0-beta4-60808-03" targetFramework="net46" />
22+
<package id="Microsoft.CodeAnalysis.Features" version="2.0.0-beta4-60808-03" targetFramework="net46" />
23+
<package id="Microsoft.CodeAnalysis.Workspaces.Common" version="2.0.0-beta4-60808-03" targetFramework="net46" />
24+
<package id="Microsoft.VisualStudio.LanguageServices" version="2.0.0-beta4-60808-03" targetFramework="net46" />
2525
<package id="Microsoft.Composition" version="1.0.27" targetFramework="net46" />
2626
<package id="Microsoft.VisualStudio.Threading" version="14.1.131" targetFramework="net46" />
2727
<package id="Microsoft.VisualStudio.Shell.14.0" version="14.3.25407" targetFramework="net46" />
@@ -35,6 +35,7 @@
3535
<package id="Microsoft.VisualStudio.Shell.Design" version="14.3.25407" targetFramework="net46" />
3636
<package id="Microsoft.VisualStudio.Utilities" version="14.3.25407" targetFramework="net46" />
3737
<package id="Microsoft.VisualStudio.Language.StandardClassification" version="14.3.25407" targetFramework="net46" />
38+
<package id="Microsoft.VisualStudio.Designer.Interfaces" version="1.1.4322" />
3839
<package id="Roslyn.Microsoft.VisualStudio.ComponentModelHost" version="0.0.2" targetFramework="net46" />
3940
<package id="Microsoft.VisualFSharp.Microsoft.VisualStudio.Shell.UI.Internal" version="14.0.25420" targetFramework="net46" />
4041
<package id="RoslynDependencies.Microsoft.VisualStudio.Text.Internal" version="14.3.25407" targetFramework="net45" />

src/FSharpSource.Settings.targets

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@
8989
<FsiToolExe>fsi.exe</FsiToolExe>
9090
<FsLexToolExe>fslex.exe</FsLexToolExe>
9191
<FsYaccToolExe>fsyacc.exe</FsYaccToolExe>
92-
<RoslynVersion>2.0.0-beta1</RoslynVersion>
92+
<RoslynVersion>2.0.0-beta4-60808-03</RoslynVersion>
9393
<RoslynVSBinariesVersion>14.0</RoslynVSBinariesVersion>
9494
<RoslynVSPackagesVersion>14.3.25407</RoslynVSPackagesVersion>
9595
</PropertyGroup>

vsintegration/Vsix/VisualFSharpDesktop/Source.extension.vsixmanifest

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,5 +57,6 @@
5757
<Asset Type="Microsoft.VisualStudio.ItemTemplate" d:Source="Project" Path="ItemTemplates" d:TargetPath="|XMLFile;TemplateProjectOutputGroup|" d:ProjectName="XMLFile" d:VsixSubPath="ItemTemplates" />
5858

5959
<Asset Type="Microsoft.VisualStudio.MefComponent" d:Source="Project" d:ProjectName="FSharp.Editor" Path="|FSharp.Editor|" AssemblyName="|FSharp.Editor;AssemblyName|" />
60+
<Asset Type="Microsoft.VisualStudio.Analyzer" d:Source="Project" d:ProjectName="FSharp.Editor" Path="|FSharp.Editor|" />
6061
</Assets>
6162
</PackageManifest>

vsintegration/Vsix/VisualFSharpFull/Source.extension.vsixmanifest

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,5 +61,6 @@
6161
<Asset Type="Microsoft.VisualStudio.ItemTemplate" d:Source="Project" Path="ItemTemplates" d:TargetPath="|XMLFile;TemplateProjectOutputGroup|" d:ProjectName="XMLFile" d:VsixSubPath="ItemTemplates" />
6262

6363
<Asset Type="Microsoft.VisualStudio.MefComponent" d:Source="Project" d:ProjectName="FSharp.Editor" Path="|FSharp.Editor|" AssemblyName="|FSharp.Editor;AssemblyName|" />
64+
<Asset Type="Microsoft.VisualStudio.Analyzer" d:Source="Project" d:ProjectName="FSharp.Editor" Path="|FSharp.Editor|" />
6465
</Assets>
6566
</PackageManifest>

vsintegration/Vsix/VisualFSharpWeb/Source.extension.vsixmanifest

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,5 +55,6 @@
5555
<Asset Type="Microsoft.VisualStudio.ItemTemplate" d:Source="Project" Path="ItemTemplates" d:TargetPath="|XMLFile;TemplateProjectOutputGroup|" d:ProjectName="XMLFile" d:VsixSubPath="ItemTemplates" />
5656

5757
<Asset Type="Microsoft.VisualStudio.MefComponent" d:Source="Project" d:ProjectName="FSharp.Editor" Path="|FSharp.Editor|" AssemblyName="|FSharp.Editor;AssemblyName|" />
58+
<Asset Type="Microsoft.VisualStudio.Analyzer" d:Source="Project" d:ProjectName="FSharp.Editor" Path="|FSharp.Editor|" />
5859
</Assets>
5960
</PackageManifest>

vsintegration/src/FSharp.Editor/AssemblyInfo.fs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ namespace Microsoft.VisualStudio.FSharp.Editor
44

55
open Microsoft.VisualStudio.Shell
66

7+
[<assembly:System.Runtime.CompilerServices.InternalsVisibleTo("FSharp.ProjectSystem.FSharp, PublicKey=002400000480000094000000060200000024000052534131000400000100010007D1FA57C4AED9F0A32E84AA0FAEFD0DE9E8FD6AEC8F87FB03766C834C99921EB23BE79AD9D5DCC1DD9AD236132102900B723CF980957FC4E177108FC607774F29E8320E92EA05ECE4E821C0A5EFE8F1645C4C0C93C1AB99285D622CAA652C1DFAD63D745D6F2DE5F17E5EAF0FC4963D261C8A12436518206DC093344D5AD293")>]
78
[<assembly:System.Runtime.CompilerServices.InternalsVisibleTo("VisualFSharp.Unittests, PublicKey=002400000480000094000000060200000024000052534131000400000100010007D1FA57C4AED9F0A32E84AA0FAEFD0DE9E8FD6AEC8F87FB03766C834C99921EB23BE79AD9D5DCC1DD9AD236132102900B723CF980957FC4E177108FC607774F29E8320E92EA05ECE4E821C0A5EFE8F1645C4C0C93C1AB99285D622CAA652C1DFAD63D745D6F2DE5F17E5EAF0FC4963D261C8A12436518206DC093344D5AD293")>]
9+
[<assembly:System.Runtime.CompilerServices.InternalsVisibleTo("VisualFSharp.Salsa, PublicKey=002400000480000094000000060200000024000052534131000400000100010007D1FA57C4AED9F0A32E84AA0FAEFD0DE9E8FD6AEC8F87FB03766C834C99921EB23BE79AD9D5DCC1DD9AD236132102900B723CF980957FC4E177108FC607774F29E8320E92EA05ECE4E821C0A5EFE8F1645C4C0C93C1AB99285D622CAA652C1DFAD63D745D6F2DE5F17E5EAF0FC4963D261C8A12436518206DC093344D5AD293")>]
810

911
[<assembly: ProvideCodeBase(CodeBase = @"$PackageFolder$\FSharp.Editor.dll")>]
1012

vsintegration/src/FSharp.Editor/BraceMatchingService.fs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,17 @@ type internal FSharpBraceMatchingService() =
2323
interface IBraceMatcher with
2424
member this.FindBracesAsync(document, position, cancellationToken) =
2525
let computation = async {
26-
let options = CommonRoslynHelpers.GetFSharpProjectOptionsForRoslynProject(document.Project)
27-
let! sourceText = document.GetTextAsync(cancellationToken) |> Async.AwaitTask
28-
let! result = FSharpBraceMatchingService.GetBraceMatchingResult(sourceText, document.Name, options, position)
29-
30-
return match result with
31-
| None -> Nullable()
32-
| Some(left, right) ->
33-
Nullable(BraceMatchingResult(
34-
CommonRoslynHelpers.FSharpRangeToTextSpan(sourceText, left),
35-
CommonRoslynHelpers.FSharpRangeToTextSpan(sourceText, right)))
26+
match FSharpLanguageService.GetOptions(document.Project.Id) with
27+
| Some(options) ->
28+
let! sourceText = document.GetTextAsync(cancellationToken) |> Async.AwaitTask
29+
let! result = FSharpBraceMatchingService.GetBraceMatchingResult(sourceText, document.Name, options, position)
30+
return match result with
31+
| None -> Nullable()
32+
| Some(left, right) ->
33+
Nullable(BraceMatchingResult(
34+
CommonRoslynHelpers.FSharpRangeToTextSpan(sourceText, left),
35+
CommonRoslynHelpers.FSharpRangeToTextSpan(sourceText, right)))
36+
| None -> return Nullable()
3637
}
3738

3839
Async.StartAsTask(computation, TaskCreationOptions.None, cancellationToken)

vsintegration/src/FSharp.Editor/BreakpointResolutionService.fs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,14 @@ type internal FSharpBreakpointResolutionService() =
4444
interface IBreakpointResolutionService with
4545
member this.ResolveBreakpointAsync(document: Document, textSpan: TextSpan, cancellationToken: CancellationToken): Task<BreakpointResolutionResult> =
4646
let computation = async {
47-
let options = CommonRoslynHelpers.GetFSharpProjectOptionsForRoslynProject(document.Project)
48-
let! sourceText = document.GetTextAsync(cancellationToken) |> Async.AwaitTask
49-
let! location = FSharpBreakpointResolutionService.GetBreakpointLocation(sourceText, document.Name, textSpan, options)
50-
51-
return match location with
52-
| None -> null
53-
| Some(range) -> BreakpointResolutionResult.CreateSpanResult(document, CommonRoslynHelpers.FSharpRangeToTextSpan(sourceText, range))
47+
match FSharpLanguageService.GetOptions(document.Project.Id) with
48+
| Some(options) ->
49+
let! sourceText = document.GetTextAsync(cancellationToken) |> Async.AwaitTask
50+
let! location = FSharpBreakpointResolutionService.GetBreakpointLocation(sourceText, document.Name, textSpan, options)
51+
return match location with
52+
| None -> null
53+
| Some(range) -> BreakpointResolutionResult.CreateSpanResult(document, CommonRoslynHelpers.FSharpRangeToTextSpan(sourceText, range))
54+
| None -> return null
5455
}
5556

5657
Async.StartAsTask(computation, TaskCreationOptions.None, cancellationToken)

vsintegration/src/FSharp.Editor/ColorizationService.fs

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -130,17 +130,18 @@ type internal FSharpColorizationService() =
130130

131131
interface IEditorClassificationService with
132132

133-
member this.AddLexicalClassifications(text: SourceText, textSpan: TextSpan, result: List<ClassifiedSpan>, cancellationToken: CancellationToken) =
134-
result.AddRange(FSharpColorizationService.GetColorizationData(text, textSpan, None, [], cancellationToken))
133+
// Do not perform classification if we don't have project options (#defines matter)
134+
member this.AddLexicalClassifications(_: SourceText, _: TextSpan, _: List<ClassifiedSpan>, _: CancellationToken) = ()
135135

136136
member this.AddSyntacticClassificationsAsync(document: Document, textSpan: TextSpan, result: List<ClassifiedSpan>, cancellationToken: CancellationToken) =
137137
document.GetTextAsync(cancellationToken).ContinueWith(
138138
fun (sourceTextTask: Task<SourceText>) ->
139-
let options = CommonRoslynHelpers.GetFSharpProjectOptionsForRoslynProject(document.Project)
140-
let defines = CompilerEnvironment.GetCompilationDefinesForEditing(document.Name, options.OtherOptions |> Seq.toList)
141-
142-
if sourceTextTask.Status = TaskStatus.RanToCompletion then
143-
result.AddRange(FSharpColorizationService.GetColorizationData(sourceTextTask.Result, textSpan, None, defines, cancellationToken))
139+
match FSharpLanguageService.GetOptions(document.Project.Id) with
140+
| Some(options) ->
141+
let defines = CompilerEnvironment.GetCompilationDefinesForEditing(document.Name, options.OtherOptions |> Seq.toList)
142+
if sourceTextTask.Status = TaskStatus.RanToCompletion then
143+
result.AddRange(FSharpColorizationService.GetColorizationData(sourceTextTask.Result, textSpan, None, defines, cancellationToken))
144+
| None -> ()
144145
, cancellationToken)
145146

146147
// FSROSLYNTODO: Due to issue 12732 on Roslyn side, semantic classification is tied to C#/VB only.
@@ -168,10 +169,6 @@ type internal FSharpColorizationService() =
168169
Task.Run(fun () -> Async.RunSynchronously(computation, cancellationToken = cancellationToken))
169170
*)
170171
Task.CompletedTask
171-
172-
member this.AdjustStaleClassification(text: SourceText, classifiedSpan: ClassifiedSpan) : ClassifiedSpan =
173-
let tokens = FSharpColorizationService.GetColorizationData(text, classifiedSpan.TextSpan, None, [], CancellationToken.None)
174-
if tokens.Any() then
175-
tokens.First()
176-
else
177-
new ClassifiedSpan(ClassificationTypeNames.WhiteSpace, classifiedSpan.TextSpan)
172+
173+
// Do not perform classification if we don't have project options (#defines matter)
174+
member this.AdjustStaleClassification(_: SourceText, classifiedSpan: ClassifiedSpan) : ClassifiedSpan = classifiedSpan

0 commit comments

Comments
 (0)