提交 0d8a993c 编写于 作者: S Sam Harwell

Fix improper construction of VisualStudio14StructureTaggerProvider

上级 08568103
......@@ -2,9 +2,10 @@
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using System.ComponentModel.Composition;
using System.Diagnostics.CodeAnalysis;
using Microsoft.CodeAnalysis.Editor.Shared.Utilities;
using Microsoft.CodeAnalysis.Host.Mef;
using Microsoft.CodeAnalysis.Shared.TestHooks;
using Microsoft.CodeAnalysis.Structure;
using Microsoft.VisualStudio.Text;
......@@ -28,11 +29,11 @@ namespace Microsoft.CodeAnalysis.Editor.Implementation.Structure
[Export(typeof(VisualStudio14StructureTaggerProvider))]
[TagType(typeof(IOutliningRegionTag))]
[ContentType(ContentTypeNames.RoslynContentType)]
internal partial class VisualStudio14StructureTaggerProvider :
internal class VisualStudio14StructureTaggerProvider :
AbstractStructureTaggerProvider<IOutliningRegionTag>
{
[ImportingConstructor]
[SuppressMessage("RoslynDiagnosticsReliability", "RS0033:Importing constructor should be [Obsolete]", Justification = "Used in test code: https://github.com/dotnet/roslyn/issues/42814")]
[Obsolete(MefConstruction.ImportingConstructorMessage, error: true)]
public VisualStudio14StructureTaggerProvider(
IThreadingContext threadingContext,
IForegroundNotificationService notificationService,
......
......@@ -9,11 +9,8 @@
using Microsoft.CodeAnalysis.Editor.Shared.Utilities;
using Microsoft.CodeAnalysis.Editor.Tagging;
using Microsoft.CodeAnalysis.Editor.UnitTests.Workspaces;
using Microsoft.CodeAnalysis.Shared.TestHooks;
using Microsoft.CodeAnalysis.Structure;
using Microsoft.CodeAnalysis.Test.Utilities;
using Microsoft.VisualStudio.Text.Editor;
using Microsoft.VisualStudio.Text.Projection;
using Microsoft.VisualStudio.Text.Tagging;
using Roslyn.Test.Utilities;
using Roslyn.Utilities;
......@@ -42,7 +39,7 @@ static void Main(string[] args)
#endregion
}";
using var workspace = TestWorkspace.CreateCSharp(code);
using var workspace = TestWorkspace.CreateCSharp(code, composition: EditorTestCompositions.EditorFeaturesWpf);
workspace.TryApplyChanges(workspace.CurrentSolution.WithOptions(workspace.Options
.WithChangedOption(BlockStructureOptions.CollapseRegionsWhenCollapsingToDefinitions, LanguageNames.CSharp, true)));
......@@ -84,7 +81,7 @@ static void Main(string[] args)
#endregion
}";
using var workspace = TestWorkspace.CreateCSharp(code);
using var workspace = TestWorkspace.CreateCSharp(code, composition: EditorTestCompositions.EditorFeaturesWpf);
var tags = await GetTagsFromWorkspaceAsync(workspace);
// ensure all 4 outlining region tags were found
......@@ -119,7 +116,7 @@ End Module
#End Region
End Namespace";
using var workspace = TestWorkspace.CreateVisualBasic(code);
using var workspace = TestWorkspace.CreateVisualBasic(code, composition: EditorTestCompositions.EditorFeaturesWpf);
var tags = await GetTagsFromWorkspaceAsync(workspace);
// ensure all 4 outlining region tags were found
......@@ -148,7 +145,7 @@ Sub Main(args As String())
End Sub
End Module";
using var workspace = TestWorkspace.CreateVisualBasic(code);
using var workspace = TestWorkspace.CreateVisualBasic(code, composition: EditorTestCompositions.EditorFeaturesWpf);
var tags = await GetTagsFromWorkspaceAsync(workspace);
var hints = tags.Select(x => x.CollapsedHintForm).Cast<ViewHostingControl>().ToArray();
......@@ -160,15 +157,8 @@ private static async Task<List<IOutliningRegionTag>> GetTagsFromWorkspaceAsync(T
{
var hostdoc = workspace.Documents.First();
var view = hostdoc.GetTextView();
var textService = workspace.GetService<ITextEditorFactoryService>();
var editorService = workspace.GetService<IEditorOptionsFactoryService>();
var projectionService = workspace.GetService<IProjectionBufferFactoryService>();
var provider = new VisualStudio14StructureTaggerProvider(
workspace.ExportProvider.GetExportedValue<IThreadingContext>(),
workspace.ExportProvider.GetExportedValue<IForegroundNotificationService>(),
textService, editorService, projectionService,
AsynchronousOperationListenerProvider.NullProvider);
var provider = workspace.ExportProvider.GetExportedValue<VisualStudio14StructureTaggerProvider>();
var document = workspace.CurrentSolution.GetDocument(hostdoc.Id);
var context = new TaggerContext<IOutliningRegionTag>(document, view.TextSnapshot);
......
......@@ -11,13 +11,13 @@
using Microsoft.CodeAnalysis.Editor.Shared.Tagging;
using Microsoft.CodeAnalysis.Editor.Shared.Utilities;
using Microsoft.CodeAnalysis.Editor.Tagging;
using Microsoft.CodeAnalysis.Editor.UnitTests;
using Microsoft.CodeAnalysis.Editor.UnitTests.Workspaces;
using Microsoft.CodeAnalysis.Shared.TestHooks;
using Microsoft.CodeAnalysis.Test.Utilities;
using Microsoft.CodeAnalysis.Text.Shared.Extensions;
using Microsoft.VisualStudio.Text;
using Microsoft.VisualStudio.Text.Editor;
using Microsoft.VisualStudio.Text.Projection;
using Microsoft.VisualStudio.Text.Tagging;
using Roslyn.Test.Utilities;
using Roslyn.Utilities;
......@@ -93,16 +93,10 @@ static List<ITagSpan<TestTag>> tagProducer(SnapshotSpan span, CancellationToken
[WpfFact]
public void TestSynchronousOutlining()
{
using var workspace = TestWorkspace.CreateCSharp("class Program {\r\n\r\n}");
using var workspace = TestWorkspace.CreateCSharp("class Program {\r\n\r\n}", composition: EditorTestCompositions.EditorFeaturesWpf);
WpfTestRunner.RequireWpfFact($"{nameof(AsynchronousTaggerTests)}.{nameof(TestSynchronousOutlining)} creates asynchronous taggers");
var tagProvider = new VisualStudio14StructureTaggerProvider(
workspace.ExportProvider.GetExportedValue<IThreadingContext>(),
workspace.GetService<IForegroundNotificationService>(),
workspace.GetService<ITextEditorFactoryService>(),
workspace.GetService<IEditorOptionsFactoryService>(),
workspace.GetService<IProjectionBufferFactoryService>(),
workspace.ExportProvider.GetExportedValue<IAsynchronousOperationListenerProvider>());
var tagProvider = workspace.ExportProvider.GetExportedValue<VisualStudio14StructureTaggerProvider>();
var document = workspace.Documents.First();
var textBuffer = document.GetTextBuffer();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册