提交 7d5079bc 编写于 作者: C CyrusNajmabadi

Create a new 'BlockStructure' API that can back the VS Outlining and Indent-Guides.

上级 44c1bd39
......@@ -146,46 +146,6 @@
<Compile Include="LineSeparators\CSharpLineSeparatorService.cs" />
<Compile Include="NavigateTo\CSharpNavigateToSearchService.cs" />
<Compile Include="NavigationBar\CSharpNavigationBarItemService.cs" />
<Compile Include="Outlining\CSharpOutliningHelpers.cs" />
<Compile Include="Outlining\CSharpOutliningService.cs" />
<Compile Include="Outlining\Outliners\AccessorDeclarationOutliner.cs" />
<Compile Include="Outlining\Outliners\AnonymousMethodExpressionOutliner.cs" />
<Compile Include="Outlining\Outliners\CompilationUnitOutliner.cs" />
<Compile Include="Outlining\Outliners\ConstructorDeclarationOutliner.cs" />
<Compile Include="Outlining\Outliners\ConversionOperatorDeclarationOutliner.cs" />
<Compile Include="Outlining\Outliners\DelegateDeclarationOutliner.cs" />
<Compile Include="Outlining\Outliners\DestructorDeclarationOutliner.cs" />
<Compile Include="Outlining\Outliners\DisabledTextTriviaOutliner.cs" />
<Compile Include="Outlining\Outliners\DocumentationCommentOutliner.cs" />
<Compile Include="Outlining\Outliners\EnumDeclarationOutliner.cs" />
<Compile Include="Outlining\Outliners\EventDeclarationOutliner.cs" />
<Compile Include="Outlining\Outliners\EventFieldDeclarationOutliner.cs" />
<Compile Include="Outlining\Outliners\FieldDeclarationOutliner.cs" />
<Compile Include="Outlining\Outliners\IndexerDeclarationOutliner.cs" />
<Compile Include="Outlining\Outliners\MetadataAsSource\AbstractMetadataAsSourceOutliner.cs" />
<Compile Include="Outlining\Outliners\MetadataAsSource\ConstructorDeclarationOutliner.cs" />
<Compile Include="Outlining\Outliners\MetadataAsSource\ConversionOperatorDeclarationOutliner.cs" />
<Compile Include="Outlining\Outliners\MetadataAsSource\DelegateDeclarationOutliner.cs" />
<Compile Include="Outlining\Outliners\MetadataAsSource\DestructorDeclarationOutliner.cs" />
<Compile Include="Outlining\Outliners\MetadataAsSource\EnumDeclarationOutliner.cs" />
<Compile Include="Outlining\Outliners\MetadataAsSource\EnumMemberDeclarationOutliner.cs" />
<Compile Include="Outlining\Outliners\MetadataAsSource\EventDeclarationOutliner.cs" />
<Compile Include="Outlining\Outliners\MetadataAsSource\EventFieldDeclarationOutliner.cs" />
<Compile Include="Outlining\Outliners\MetadataAsSource\FieldDeclarationOutliner.cs" />
<Compile Include="Outlining\Outliners\MetadataAsSource\IndexerDeclarationOutliner.cs" />
<Compile Include="Outlining\Outliners\MetadataAsSource\MethodDeclarationOutliner.cs" />
<Compile Include="Outlining\Outliners\MetadataAsSource\OperatorDeclarationOutliner.cs" />
<Compile Include="Outlining\Outliners\MetadataAsSource\PropertyDeclarationOutliner.cs" />
<Compile Include="Outlining\Outliners\MetadataAsSource\RegionDirectiveOutliner.cs" />
<Compile Include="Outlining\Outliners\MetadataAsSource\TypeDeclarationOutliner.cs" />
<Compile Include="Outlining\Outliners\MethodDeclarationOutliner.cs" />
<Compile Include="Outlining\Outliners\NamespaceDeclarationOutliner.cs" />
<Compile Include="Outlining\Outliners\OperatorDeclarationOutliner.cs" />
<Compile Include="Outlining\Outliners\ParenthesizedLambdaExpressionOutliner.cs" />
<Compile Include="Outlining\Outliners\PropertyDeclarationOutliner.cs" />
<Compile Include="Outlining\Outliners\RegionDirectiveOutliner.cs" />
<Compile Include="Outlining\Outliners\SimpleLambdaExpressionOutliner.cs" />
<Compile Include="Outlining\Outliners\TypeDeclarationOutliner.cs" />
<Compile Include="QuickInfo\SemanticQuickInfoProvider.cs" />
<Compile Include="QuickInfo\SyntacticQuickInfoProvider.cs" />
<Compile Include="ReferenceHighlighting\ReferenceHighlightingAdditionalReferenceProvider.cs" />
......@@ -224,4 +184,4 @@
</ItemGroup>
<ItemGroup />
<Import Project="..\..\..\build\Targets\VSL.Imports.targets" />
</Project>
</Project>
\ No newline at end of file
......@@ -4,7 +4,8 @@
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining
{
public abstract class AbstractCSharpSyntaxNodeOutlinerTests<TSyntaxNode> : AbstractSyntaxNodeOutlinerTests<TSyntaxNode>
public abstract class AbstractCSharpSyntaxNodeOutlinerTests<TSyntaxNode> :
AbstractSyntaxNodeOutlinerTests<TSyntaxNode>
where TSyntaxNode : SyntaxNode
{
protected sealed override string LanguageName => LanguageNames.CSharp;
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
......@@ -11,7 +11,7 @@ namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining
{
public class AccessorDeclarationTests : AbstractCSharpSyntaxNodeOutlinerTests<AccessorDeclarationSyntax>
{
internal override AbstractSyntaxOutliner CreateOutliner() => new AccessorDeclarationOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new AccessorDeclarationOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.Outlining)]
public async Task TestPropertyGetter1()
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
......@@ -11,7 +11,7 @@ namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining
{
public class AnonymousMethodExpressionTests : AbstractCSharpSyntaxNodeOutlinerTests<AnonymousMethodExpressionSyntax>
{
internal override AbstractSyntaxOutliner CreateOutliner() => new AnonymousMethodExpressionOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new AnonymousMethodExpressionOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.Outlining)]
public async Task TestAnonymousMethod()
......
......@@ -2,9 +2,9 @@
using System.Linq;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.Editor.UnitTests.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Roslyn.Utilities;
using Xunit;
......@@ -15,7 +15,7 @@ public class CommentTests : AbstractSyntaxOutlinerTests
{
protected override string LanguageName => LanguageNames.CSharp;
internal override async Task<OutliningSpan[]> GetRegionsAsync(Document document, int position)
internal override async Task<BlockSpan[]> GetRegionsAsync(Document document, int position)
{
var root = await document.GetSyntaxRootAsync();
var trivia = root.FindTrivia(position, findInsideTrivia: true);
......@@ -32,7 +32,7 @@ internal override async Task<OutliningSpan[]> GetRegionsAsync(Document document,
}
else
{
return Contract.FailWithReturn<OutliningSpan[]>();
return Contract.FailWithReturn<BlockSpan[]>();
}
}
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
......@@ -11,7 +11,7 @@ namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining
{
public class CompilationUnitOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<CompilationUnitSyntax>
{
internal override AbstractSyntaxOutliner CreateOutliner() => new CompilationUnitOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new CompilationUnitOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.Outlining)]
public async Task TestUsings()
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
......@@ -11,7 +11,7 @@ namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining
{
public class ConstructorDeclarationOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<ConstructorDeclarationSyntax>
{
internal override AbstractSyntaxOutliner CreateOutliner() => new ConstructorDeclarationOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new ConstructorDeclarationOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.Outlining)]
public async Task TestConstructor1()
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
......@@ -11,7 +11,7 @@ namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining
{
public class ConversionOperatorDeclarationOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<ConversionOperatorDeclarationSyntax>
{
internal override AbstractSyntaxOutliner CreateOutliner() => new ConversionOperatorDeclarationOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new ConversionOperatorDeclarationOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.Outlining)]
public async Task TestOperator()
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
......@@ -11,7 +11,7 @@ namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining
{
public class DelegateDeclarationOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<DelegateDeclarationSyntax>
{
internal override AbstractSyntaxOutliner CreateOutliner() => new DelegateDeclarationOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new DelegateDeclarationOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.Outlining)]
public async Task TestDelegateWithComments()
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
......@@ -11,7 +11,7 @@ namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining
{
public class DestructorDeclarationOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<DestructorDeclarationSyntax>
{
internal override AbstractSyntaxOutliner CreateOutliner() => new DestructorDeclarationOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new DestructorDeclarationOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.Outlining)]
public async Task TestDestructor()
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
......@@ -10,7 +10,7 @@ namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining
{
public class DisabledTextOutlinerTests : AbstractCSharpSyntaxTriviaOutlinerTests
{
internal override AbstractSyntaxOutliner CreateOutliner() => new DisabledTextTriviaOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new DisabledTextTriviaOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.Outlining)]
public async Task TestDisabledIf()
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
......@@ -11,7 +11,7 @@ namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining
{
public class DocumentationCommentOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<DocumentationCommentTriviaSyntax>
{
internal override AbstractSyntaxOutliner CreateOutliner() => new DocumentationCommentOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new DocumentationCommentOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.Outlining)]
public async Task TestDocumentationCommentWithoutSummaryTag1()
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
......@@ -11,7 +11,7 @@ namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining
{
public class EnumDeclarationOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<EnumDeclarationSyntax>
{
internal override AbstractSyntaxOutliner CreateOutliner() => new EnumDeclarationOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new EnumDeclarationOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.Outlining)]
public async Task TestEnum()
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
......@@ -11,7 +11,7 @@ namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining
{
public class EventDeclarationOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<EventDeclarationSyntax>
{
internal override AbstractSyntaxOutliner CreateOutliner() => new EventDeclarationOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new EventDeclarationOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.Outlining)]
public async Task TestEvent()
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
......@@ -11,7 +11,7 @@ namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining
{
public class EventFieldDeclarationOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<EventFieldDeclarationSyntax>
{
internal override AbstractSyntaxOutliner CreateOutliner() => new EventFieldDeclarationOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new EventFieldDeclarationOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.Outlining)]
public async Task TestEventFieldWithComments()
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
......@@ -11,7 +11,7 @@ namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining
{
public class FieldDeclarationOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<FieldDeclarationSyntax>
{
internal override AbstractSyntaxOutliner CreateOutliner() => new FieldDeclarationOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new FieldDeclarationOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.Outlining)]
public async Task TestFieldWithComments()
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
......@@ -11,7 +11,7 @@ namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining
{
public class IndexerDeclarationOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<IndexerDeclarationSyntax>
{
internal override AbstractSyntaxOutliner CreateOutliner() => new IndexerDeclarationOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new IndexerDeclarationOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.Outlining)]
public async Task TestIndexer()
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
using MaSOutliners = Microsoft.CodeAnalysis.Editor.CSharp.Outlining.MetadataAsSource;
using MaSOutliners = Microsoft.CodeAnalysis.CSharp.Structure.MetadataAsSource;
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining.MetadataAsSource
{
public class ConstructorDeclarationOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<ConstructorDeclarationSyntax>
{
protected override string WorkspaceKind => CodeAnalysis.WorkspaceKind.MetadataAsSource;
internal override AbstractSyntaxOutliner CreateOutliner() => new MaSOutliners.ConstructorDeclarationOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new MaSOutliners.ConstructorDeclarationOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.MetadataAsSource)]
public async Task NoCommentsOrAttributes()
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
using MaSOutliners = Microsoft.CodeAnalysis.Editor.CSharp.Outlining.MetadataAsSource;
using MaSOutliners = Microsoft.CodeAnalysis.CSharp.Structure.MetadataAsSource;
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining.MetadataAsSource
{
public class ConversionOperatorDeclarationOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<ConversionOperatorDeclarationSyntax>
{
protected override string WorkspaceKind => CodeAnalysis.WorkspaceKind.MetadataAsSource;
internal override AbstractSyntaxOutliner CreateOutliner() => new MaSOutliners.ConversionOperatorDeclarationOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new MaSOutliners.ConversionOperatorDeclarationOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.MetadataAsSource)]
public async Task NoCommentsOrAttributes()
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
using MaSOutliners = Microsoft.CodeAnalysis.Editor.CSharp.Outlining.MetadataAsSource;
using MaSOutliners = Microsoft.CodeAnalysis.CSharp.Structure.MetadataAsSource;
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining.MetadataAsSource
{
public class DelegateDeclarationOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<DelegateDeclarationSyntax>
{
protected override string WorkspaceKind => CodeAnalysis.WorkspaceKind.MetadataAsSource;
internal override AbstractSyntaxOutliner CreateOutliner() => new MaSOutliners.DelegateDeclarationOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new MaSOutliners.DelegateDeclarationOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.MetadataAsSource)]
public async Task NoCommentsOrAttributes()
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
using MaSOutliners = Microsoft.CodeAnalysis.Editor.CSharp.Outlining.MetadataAsSource;
using MaSOutliners = Microsoft.CodeAnalysis.CSharp.Structure.MetadataAsSource;
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining.MetadataAsSource
{
public class DestructorDeclarationOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<DestructorDeclarationSyntax>
{
protected override string WorkspaceKind => CodeAnalysis.WorkspaceKind.MetadataAsSource;
internal override AbstractSyntaxOutliner CreateOutliner() => new MaSOutliners.DestructorDeclarationOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new MaSOutliners.DestructorDeclarationOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.MetadataAsSource)]
public async Task NoCommentsOrAttributes()
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
using MaSOutliners = Microsoft.CodeAnalysis.Editor.CSharp.Outlining.MetadataAsSource;
using MaSOutliners = Microsoft.CodeAnalysis.CSharp.Structure.MetadataAsSource;
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining.MetadataAsSource
{
public class EnumDeclarationOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<EnumDeclarationSyntax>
{
protected override string WorkspaceKind => CodeAnalysis.WorkspaceKind.MetadataAsSource;
internal override AbstractSyntaxOutliner CreateOutliner() => new MaSOutliners.EnumDeclarationOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new MaSOutliners.EnumDeclarationOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.MetadataAsSource)]
public async Task NoCommentsOrAttributes()
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
using MaSOutliners = Microsoft.CodeAnalysis.Editor.CSharp.Outlining.MetadataAsSource;
using MaSOutliners = Microsoft.CodeAnalysis.CSharp.Structure.MetadataAsSource;
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining.MetadataAsSource
{
public class EnumMemberDeclarationOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<EnumMemberDeclarationSyntax>
{
protected override string WorkspaceKind => CodeAnalysis.WorkspaceKind.MetadataAsSource;
internal override AbstractSyntaxOutliner CreateOutliner() => new MaSOutliners.EnumMemberDeclarationOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new MaSOutliners.EnumMemberDeclarationOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.MetadataAsSource)]
public async Task NoCommentsOrAttributes()
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
using MaSOutliners = Microsoft.CodeAnalysis.Editor.CSharp.Outlining.MetadataAsSource;
using MaSOutliners = Microsoft.CodeAnalysis.CSharp.Structure.MetadataAsSource;
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining.MetadataAsSource
{
public class EventDeclarationOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<EventDeclarationSyntax>
{
protected override string WorkspaceKind => CodeAnalysis.WorkspaceKind.MetadataAsSource;
internal override AbstractSyntaxOutliner CreateOutliner() => new MaSOutliners.EventDeclarationOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new MaSOutliners.EventDeclarationOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.MetadataAsSource)]
public async Task NoCommentsOrAttributes()
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
using MaSOutliners = Microsoft.CodeAnalysis.Editor.CSharp.Outlining.MetadataAsSource;
using MaSOutliners = Microsoft.CodeAnalysis.CSharp.Structure.MetadataAsSource;
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining.MetadataAsSource
{
public class EventFieldDeclarationOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<EventFieldDeclarationSyntax>
{
protected override string WorkspaceKind => CodeAnalysis.WorkspaceKind.MetadataAsSource;
internal override AbstractSyntaxOutliner CreateOutliner() => new MaSOutliners.EventFieldDeclarationOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new MaSOutliners.EventFieldDeclarationOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.MetadataAsSource)]
public async Task NoCommentsOrAttributes()
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
using MaSOutliners = Microsoft.CodeAnalysis.Editor.CSharp.Outlining.MetadataAsSource;
using MaSOutliners = Microsoft.CodeAnalysis.CSharp.Structure.MetadataAsSource;
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining.MetadataAsSource
{
public class FieldDeclarationOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<FieldDeclarationSyntax>
{
protected override string WorkspaceKind => CodeAnalysis.WorkspaceKind.MetadataAsSource;
internal override AbstractSyntaxOutliner CreateOutliner() => new MaSOutliners.FieldDeclarationOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new MaSOutliners.FieldDeclarationOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.MetadataAsSource)]
public async Task NoCommentsOrAttributes()
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
using MaSOutliners = Microsoft.CodeAnalysis.Editor.CSharp.Outlining.MetadataAsSource;
using MaSOutliners = Microsoft.CodeAnalysis.CSharp.Structure.MetadataAsSource;
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining.MetadataAsSource
{
public class IndexerDeclarationOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<IndexerDeclarationSyntax>
{
protected override string WorkspaceKind => CodeAnalysis.WorkspaceKind.MetadataAsSource;
internal override AbstractSyntaxOutliner CreateOutliner() => new MaSOutliners.IndexerDeclarationOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new MaSOutliners.IndexerDeclarationOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.MetadataAsSource)]
public async Task NoCommentsOrAttributes()
......
......@@ -3,8 +3,8 @@
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Editor.UnitTests.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Roslyn.Utilities;
using Xunit;
......@@ -20,12 +20,12 @@ public class InvalidIdentifierTests : AbstractSyntaxOutlinerTests
protected override string LanguageName => LanguageNames.CSharp;
protected override string WorkspaceKind => CodeAnalysis.WorkspaceKind.MetadataAsSource;
internal override async Task<OutliningSpan[]> GetRegionsAsync(Document document, int position)
internal override async Task<BlockSpan[]> GetRegionsAsync(Document document, int position)
{
var outliningService = document.Project.LanguageServices.GetService<IOutliningService>();
var outliningService = document.Project.LanguageServices.GetService<BlockStructureService>();
return (await outliningService.GetOutliningSpansAsync(document, CancellationToken.None))
.WhereNotNull().ToArray();
return (await outliningService.GetBlockStructureAsync(document, CancellationToken.None))
.Spans.WhereNotNull().ToArray();
}
[WorkItem(1174405, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1174405")]
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
using MaSOutliners = Microsoft.CodeAnalysis.Editor.CSharp.Outlining.MetadataAsSource;
using MaSOutliners = Microsoft.CodeAnalysis.CSharp.Structure.MetadataAsSource;
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining.MetadataAsSource
{
public class MethodDeclarationOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<MethodDeclarationSyntax>
{
protected override string WorkspaceKind => CodeAnalysis.WorkspaceKind.MetadataAsSource;
internal override AbstractSyntaxOutliner CreateOutliner() => new MaSOutliners.MethodDeclarationOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new MaSOutliners.MethodDeclarationOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.MetadataAsSource)]
public async Task NoCommentsOrAttributes()
......@@ -73,4 +73,4 @@ class Foo
Region("collapse", "hint", CSharpOutliningHelpers.Ellipsis, autoCollapse: true));
}
}
}
}
\ No newline at end of file
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
using MaSOutliners = Microsoft.CodeAnalysis.Editor.CSharp.Outlining.MetadataAsSource;
using MaSOutliners = Microsoft.CodeAnalysis.CSharp.Structure.MetadataAsSource;
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining.MetadataAsSource
{
public class OperatorDeclarationOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<OperatorDeclarationSyntax>
{
protected override string WorkspaceKind => CodeAnalysis.WorkspaceKind.MetadataAsSource;
internal override AbstractSyntaxOutliner CreateOutliner() => new MaSOutliners.OperatorDeclarationOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new MaSOutliners.OperatorDeclarationOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.MetadataAsSource)]
public async Task NoCommentsOrAttributes()
......@@ -73,4 +73,4 @@ class Foo
Region("collapse", "hint", CSharpOutliningHelpers.Ellipsis, autoCollapse: true));
}
}
}
}
\ No newline at end of file
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
using MaSOutliners = Microsoft.CodeAnalysis.Editor.CSharp.Outlining.MetadataAsSource;
using MaSOutliners = Microsoft.CodeAnalysis.CSharp.Structure.MetadataAsSource;
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining.MetadataAsSource
{
public class PropertyDeclarationOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<PropertyDeclarationSyntax>
{
protected override string WorkspaceKind => CodeAnalysis.WorkspaceKind.MetadataAsSource;
internal override AbstractSyntaxOutliner CreateOutliner() => new MaSOutliners.PropertyDeclarationOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new MaSOutliners.PropertyDeclarationOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.MetadataAsSource)]
public async Task NoCommentsOrAttributes()
......@@ -73,4 +73,4 @@ class Foo
Region("collapse", "hint", CSharpOutliningHelpers.Ellipsis, autoCollapse: true));
}
}
}
}
\ No newline at end of file
......@@ -2,17 +2,17 @@
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
using MaSOutliners = Microsoft.CodeAnalysis.Editor.CSharp.Outlining.MetadataAsSource;
using MaSOutliners = Microsoft.CodeAnalysis.CSharp.Structure.MetadataAsSource;
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining.MetadataAsSource
{
public class RegionDirectiveOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<RegionDirectiveTriviaSyntax>
{
protected override string WorkspaceKind => CodeAnalysis.WorkspaceKind.MetadataAsSource;
internal override AbstractSyntaxOutliner CreateOutliner() => new MaSOutliners.RegionDirectiveOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new MaSOutliners.RegionDirectiveOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.MetadataAsSource)]
public async Task FileHeader()
......@@ -38,4 +38,4 @@ public async Task EmptyFileHeader()
Region("span", "#region", autoCollapse: true));
}
}
}
}
\ No newline at end of file
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
using MaSOutliners = Microsoft.CodeAnalysis.Editor.CSharp.Outlining.MetadataAsSource;
using MaSOutliners = Microsoft.CodeAnalysis.CSharp.Structure.MetadataAsSource;
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining.MetadataAsSource
{
public class TypeDeclarationOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<TypeDeclarationSyntax>
{
protected override string WorkspaceKind => CodeAnalysis.WorkspaceKind.MetadataAsSource;
internal override AbstractSyntaxOutliner CreateOutliner() => new MaSOutliners.TypeDeclarationOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new MaSOutliners.TypeDeclarationOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.MetadataAsSource)]
public async Task NoCommentsOrAttributes()
......@@ -58,4 +58,4 @@ public async Task WithCommentsAndAttributes()
Region("collapse", "hint", CSharpOutliningHelpers.Ellipsis, autoCollapse: true));
}
}
}
}
\ No newline at end of file
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
......@@ -11,7 +11,7 @@ namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining
{
public class MethodDeclarationOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<MethodDeclarationSyntax>
{
internal override AbstractSyntaxOutliner CreateOutliner() => new MethodDeclarationOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new MethodDeclarationOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.Outlining)]
public async Task TestMethod()
......
......@@ -2,16 +2,16 @@
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining
namespace Microsoft.CodeAnalysis.CSharp.Structure.Outlining
{
public class NamespaceDeclarationOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<NamespaceDeclarationSyntax>
{
internal override AbstractSyntaxOutliner CreateOutliner() => new NamespaceDeclarationOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new NamespaceDeclarationOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.Outlining)]
public async Task TestNamespace()
......@@ -103,4 +103,4 @@ class C
Region("span2", "// Foo ...", autoCollapse: true));
}
}
}
}
\ No newline at end of file
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
......@@ -11,7 +11,7 @@ namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining
{
public class OperatorDeclarationOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<OperatorDeclarationSyntax>
{
internal override AbstractSyntaxOutliner CreateOutliner() => new OperatorDeclarationOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new OperatorDeclarationOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.Outlining)]
public async Task TestOperator()
......@@ -46,4 +46,4 @@ class C
Region("collapse2", "hint2", CSharpOutliningHelpers.Ellipsis, autoCollapse: true));
}
}
}
}
\ No newline at end of file
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
......@@ -11,7 +11,7 @@ namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining
{
public class ParenthesizedLambdaOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<ParenthesizedLambdaExpressionSyntax>
{
internal override AbstractSyntaxOutliner CreateOutliner() => new ParenthesizedLambdaExpressionOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new ParenthesizedLambdaExpressionOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.Outlining)]
public async Task TestLambda()
......@@ -82,4 +82,4 @@ void M()
Region("collapse", "hint", CSharpOutliningHelpers.Ellipsis, autoCollapse: false));
}
}
}
}
\ No newline at end of file
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
......@@ -11,7 +11,7 @@ namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining
{
public class PropertyDeclarationOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<PropertyDeclarationSyntax>
{
internal override AbstractSyntaxOutliner CreateOutliner() => new PropertyDeclarationOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new PropertyDeclarationOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.Outlining)]
public async Task TestProperty()
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
......@@ -11,7 +11,7 @@ namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining
{
public class RegionDirectiveOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<RegionDirectiveTriviaSyntax>
{
internal override AbstractSyntaxOutliner CreateOutliner() => new RegionDirectiveOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new RegionDirectiveOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.Outlining)]
public async Task BrokenRegion()
......@@ -105,4 +105,4 @@ static void Main(string[] args)
Region("span", "Region", autoCollapse: true, isDefaultCollapsed: true));
}
}
}
}
\ No newline at end of file
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
......@@ -11,7 +11,7 @@ namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining
{
public class SimpleLambdaExpressionOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<SimpleLambdaExpressionSyntax>
{
internal override AbstractSyntaxOutliner CreateOutliner() => new SimpleLambdaExpressionOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new SimpleLambdaExpressionOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.Outlining)]
public async Task TestLambda()
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Structure;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.CSharp.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
......@@ -11,7 +11,7 @@ namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Outlining
{
public class TypeDeclarationOutlinerTests : AbstractCSharpSyntaxNodeOutlinerTests<TypeDeclarationSyntax>
{
internal override AbstractSyntaxOutliner CreateOutliner() => new TypeDeclarationOutliner();
internal override AbstractSyntaxStructureProvider CreateOutliner() => new TypeDeclarationOutliner();
[Fact, Trait(Traits.Feature, Traits.Features.Outlining)]
public async Task TestClass()
......
......@@ -284,10 +284,8 @@
<Compile Include="Implementation\LineSeparators\LineSeparatorAdornmentManagerProvider.cs" />
<Compile Include="Implementation\NavigateTo\NavigateToSearchResultProvider.cs" />
<Compile Include="Implementation\NavigateTo\INavigateToSearchResultProvider.cs" />
<Compile Include="Implementation\Outlining\AbstractSyntaxOutliner.cs" />
<Compile Include="Implementation\Outlining\InvalidOutliningRegionException.cs" />
<Compile Include="Implementation\Outlining\AbstractOutliningTaggerProvider.cs" />
<Compile Include="Implementation\Outlining\PredefinedStructureTypes2.cs" />
<Compile Include="Implementation\Structure\InvalidOutliningRegionException.cs" />
<Compile Include="Implementation\Structure\AbstractStructureTaggerProvider.cs" />
<Compile Include="Implementation\Preview\DifferenceViewerPreview.cs" />
<Compile Include="Implementation\Preview\PreviewReferenceHighlightingTaggerProvider.cs" />
<Compile Include="Implementation\Suggestions\FixMultipleOccurrencesService.cs" />
......@@ -568,16 +566,9 @@
<Compile Include="Implementation\NavigationBar\NavigationBarSymbolIdIndexProvider.cs" />
<Compile Include="Implementation\Notification\EditorNotificationServiceFactory.cs" />
<Compile Include="Implementation\Organizing\OrganizeDocumentCommandHandler.cs" />
<Compile Include="Implementation\Outlining\AbstractOutliningService.cs" />
<Compile Include="Implementation\Outlining\AbstractSyntaxNodeOutliner.cs" />
<Compile Include="Implementation\Outlining\AbstractSyntaxTriviaOutliner.cs" />
<Compile Include="Implementation\Outlining\IOutliningService.cs" />
<Compile Include="Implementation\Outlining\OutliningCommandHandler.cs" />
<Compile Include="Implementation\Outlining\OutliningExtensions.cs" />
<Compile Include="Implementation\Outlining\OutliningSpan.cs" />
<Compile Include="Implementation\Outlining\VisualStudio14OutliningTaggerProvider.cs" />
<Compile Include="Implementation\Outlining\AbstractOutliningTaggerProvider.RegionTag.cs" />
<Compile Include="Implementation\Outlining\RegionCollector.cs" />
<Compile Include="Implementation\Structure\OutliningCommandHandler.cs" />
<Compile Include="Implementation\Structure\VisualStudio14StructureTaggerProvider.cs" />
<Compile Include="Implementation\Structure\AbstractStructureTaggerProvider.RegionTag.cs" />
<Compile Include="Implementation\Peek\DefinitionPeekableItem.cs" />
<Compile Include="Implementation\Peek\ExternalFilePeekableItem.cs" />
<Compile Include="Implementation\Peek\PeekableItem.cs" />
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Host;
namespace Microsoft.CodeAnalysis.Editor.Implementation.Outlining
{
internal interface IOutliningService : ILanguageService
{
Task<IList<OutliningSpan>> GetOutliningSpansAsync(Document document, CancellationToken cancellationToken);
}
internal interface ISynchronousOutliningService : IOutliningService
{
IList<OutliningSpan> GetOutliningSpans(Document document, CancellationToken cancellationToken);
}
}
......@@ -4,15 +4,16 @@
using System.Windows.Media;
using Microsoft.CodeAnalysis.Editor.Shared.Extensions;
using Microsoft.CodeAnalysis.Editor.Shared.Utilities;
using Microsoft.CodeAnalysis.Structure;
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;
namespace Microsoft.CodeAnalysis.Editor.Implementation.Outlining
namespace Microsoft.CodeAnalysis.Editor.Implementation.Structure
{
internal abstract partial class AbstractOutliningTaggerProvider<TRegionTag>
internal abstract partial class AbstractStructureTaggerProvider<TRegionTag>
{
// Our implementation of an outlining region tag. The collapsedHintForm
// is dynamically created using an elision buffer over the actual text
......@@ -22,27 +23,27 @@ protected class RegionTag : IOutliningRegionTag
private const string Ellipsis = "...";
private const int MaxPreviewText = 1000;
private readonly AbstractOutliningTaggerProvider<TRegionTag> _provider;
private readonly AbstractStructureTaggerProvider<TRegionTag> _provider;
private readonly ITextBuffer _subjectBuffer;
private readonly ITrackingSpan _hintSpan;
public bool IsDefaultCollapsed => OutliningSpan.IsDefaultCollapsed;
public bool IsImplementation => OutliningSpan.AutoCollapse;
public object CollapsedForm => OutliningSpan.BannerText;
public bool IsDefaultCollapsed => BlockSpan.IsDefaultCollapsed;
public bool IsImplementation => BlockSpan.AutoCollapse;
public object CollapsedForm => BlockSpan.BannerText;
protected readonly OutliningSpan OutliningSpan;
protected readonly BlockSpan BlockSpan;
public RegionTag(
AbstractOutliningTaggerProvider<TRegionTag> provider,
AbstractStructureTaggerProvider<TRegionTag> provider,
ITextSnapshot snapshot,
OutliningSpan outliningSpan)
BlockSpan outliningSpan)
{
_provider = provider;
_subjectBuffer = snapshot.TextBuffer;
OutliningSpan = outliningSpan;
BlockSpan = outliningSpan;
_hintSpan = snapshot.CreateTrackingSpan(OutliningSpan.HintSpan.ToSpan(), SpanTrackingMode.EdgeExclusive);
_hintSpan = snapshot.CreateTrackingSpan(BlockSpan.HintSpan.ToSpan(), SpanTrackingMode.EdgeExclusive);
}
public object CollapsedHintForm =>
......
......@@ -2,6 +2,7 @@
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.ComponentModel.Composition;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Editor.Shared.Tagging;
......@@ -9,6 +10,7 @@
using Microsoft.CodeAnalysis.ErrorReporting;
using Microsoft.CodeAnalysis.Internal.Log;
using Microsoft.CodeAnalysis.Shared.TestHooks;
using Microsoft.CodeAnalysis.Structure;
using Microsoft.CodeAnalysis.Text.Shared.Extensions;
using Microsoft.VisualStudio.Text;
using Microsoft.VisualStudio.Text.Editor;
......@@ -16,7 +18,7 @@
using Microsoft.VisualStudio.Text.Tagging;
using Roslyn.Utilities;
namespace Microsoft.CodeAnalysis.Editor.Implementation.Outlining
namespace Microsoft.CodeAnalysis.Editor.Implementation.Structure
{
/// <summary>
/// Shared implementation of the outliner tagger provider.
......@@ -27,7 +29,7 @@ namespace Microsoft.CodeAnalysis.Editor.Implementation.Outlining
/// editor doesn't know about all the regions in the file, then it wouldn't be able to
/// persist them to the SUO file to persist this data across sessions.
/// </summary>
internal abstract partial class AbstractOutliningTaggerProvider<TRegionTag> :
internal abstract partial class AbstractStructureTaggerProvider<TRegionTag> :
AsynchronousTaggerProvider<TRegionTag>,
IEqualityComparer<TRegionTag>
where TRegionTag : class, ITag
......@@ -38,7 +40,7 @@ internal abstract partial class AbstractOutliningTaggerProvider<TRegionTag> :
protected readonly IEditorOptionsFactoryService EditorOptionsFactoryService;
protected readonly IProjectionBufferFactoryService ProjectionBufferFactoryService;
protected AbstractOutliningTaggerProvider(
protected AbstractStructureTaggerProvider(
IForegroundNotificationService notificationService,
ITextEditorFactoryService textEditorFactoryService,
IEditorOptionsFactoryService editorOptionsFactoryService,
......@@ -87,9 +89,11 @@ protected sealed override ITaggerEventSource CreateEventSource(ITextView textVie
var outliningService = TryGetOutliningService(context, documentSnapshotSpan);
if (outliningService != null)
{
var regions = await outliningService.GetOutliningSpansAsync(
var blockStructure = await outliningService.GetBlockStructureAsync(
documentSnapshotSpan.Document, context.CancellationToken).ConfigureAwait(false);
ProcessOutliningSpans(context, documentSnapshotSpan.SnapshotSpan, outliningService, regions);
ProcessOutliningSpans(
context, documentSnapshotSpan.SnapshotSpan, outliningService,
blockStructure.Spans);
}
}
catch (Exception e) when (FatalError.ReportUnlessCanceled(e))
......@@ -114,13 +118,11 @@ protected sealed override ITaggerEventSource CreateEventSource(ITextView textVie
// Try to call through the synchronous service if possible. Otherwise, fallback
// and make a blocking call against the async service.
var synchronousOutliningService = outliningService as ISynchronousOutliningService;
var regions = synchronousOutliningService != null
? synchronousOutliningService.GetOutliningSpans(document, cancellationToken)
: outliningService.GetOutliningSpansAsync(document, cancellationToken).WaitAndGetResult(cancellationToken);
ProcessOutliningSpans(context, documentSnapshotSpan.SnapshotSpan, outliningService, regions);
var blockStructure = outliningService.GetBlockStructure(document, cancellationToken);
ProcessOutliningSpans(
context, documentSnapshotSpan.SnapshotSpan, outliningService,
blockStructure.Spans);
}
}
catch (Exception e) when (FatalError.ReportUnlessCanceled(e))
......@@ -129,7 +131,7 @@ protected sealed override ITaggerEventSource CreateEventSource(ITextView textVie
}
}
private IOutliningService TryGetOutliningService(
private BlockStructureService TryGetOutliningService(
TaggerContext<TRegionTag> context,
DocumentSnapshotSpan documentSnapshotSpan)
{
......@@ -137,12 +139,9 @@ protected sealed override ITaggerEventSource CreateEventSource(ITextView textVie
using (Logger.LogBlock(FunctionId.Tagger_Outlining_TagProducer_ProduceTags, cancellationToken))
{
var document = documentSnapshotSpan.Document;
var snapshotSpan = documentSnapshotSpan.SnapshotSpan;
var snapshot = snapshotSpan.Snapshot;
if (document != null)
{
return document.Project.LanguageServices.GetService<IOutliningService>();
return BlockStructureService.GetService(document);
}
}
......@@ -150,7 +149,10 @@ protected sealed override ITaggerEventSource CreateEventSource(ITextView textVie
}
private void ProcessOutliningSpans(
TaggerContext<TRegionTag> context, SnapshotSpan snapshotSpan, IOutliningService outliningService, IList<OutliningSpan> regions)
TaggerContext<TRegionTag> context,
SnapshotSpan snapshotSpan,
BlockStructureService outliningService,
ImmutableArray<BlockSpan> regions)
{
if (regions != null)
{
......@@ -182,14 +184,16 @@ protected sealed override ITaggerEventSource CreateEventSource(ITextView textVie
}
protected abstract TRegionTag CreateTag(
TRegionTag parentTag, ITextSnapshot snapshot, OutliningSpan region);
TRegionTag parentTag, ITextSnapshot snapshot, BlockSpan region);
private static bool s_exceptionReported = false;
private List<OutliningSpan> GetMultiLineRegions(IOutliningService service, IList<OutliningSpan> regions, ITextSnapshot snapshot)
private ImmutableArray<BlockSpan> GetMultiLineRegions(
BlockStructureService service,
ImmutableArray<BlockSpan> regions, ITextSnapshot snapshot)
{
// Remove any spans that aren't multiline.
var multiLineRegions = new List<OutliningSpan>(regions.Count);
var multiLineRegions = ImmutableArray.CreateBuilder<BlockSpan>();
foreach (var region in regions)
{
if (region != null && region.TextSpan.Length > 0)
......@@ -227,7 +231,7 @@ private List<OutliningSpan> GetMultiLineRegions(IOutliningService service, IList
// Make sure the regions are lexicographically sorted. This is needed
// so we can appropriately parent them for BlockTags.
multiLineRegions.Sort((s1, s2) => s1.TextSpan.Start - s2.TextSpan.Start);
return multiLineRegions;
return multiLineRegions.ToImmutable();
}
}
}
}
\ No newline at end of file
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using Microsoft.CodeAnalysis.Structure;
using Microsoft.VisualStudio.Text;
namespace Microsoft.CodeAnalysis.Editor.Implementation.Outlining
namespace Microsoft.CodeAnalysis.Editor.Implementation.Structure
{
internal class InvalidOutliningRegionException : Exception
{
private readonly IOutliningService _service;
private readonly BlockStructureService _service;
private readonly ITextSnapshot _snapshot;
private readonly Span _snapshotSpan;
private readonly Span _regionSpan;
public InvalidOutliningRegionException(IOutliningService service, ITextSnapshot snapshot, Span snapshotSpan, Span regionSpan)
public InvalidOutliningRegionException(BlockStructureService service, ITextSnapshot snapshot, Span snapshotSpan, Span regionSpan)
: base(GetExceptionMessage(service, snapshot, snapshotSpan, regionSpan))
{
_service = service;
......@@ -21,7 +22,7 @@ public InvalidOutliningRegionException(IOutliningService service, ITextSnapshot
_regionSpan = regionSpan;
}
private static string GetExceptionMessage(IOutliningService service, ITextSnapshot snapshot, Span snapshotSpan, Span regionSpan)
private static string GetExceptionMessage(BlockStructureService service, ITextSnapshot snapshot, Span snapshotSpan, Span regionSpan)
{
return $"OutliningService({service.GetType()}) produced an invalid region. ITextSnapshot span is {snapshotSpan}. OutliningSpan is {regionSpan}.";
}
......
......@@ -5,7 +5,7 @@
using Microsoft.CodeAnalysis.Editor.Commands;
using Microsoft.VisualStudio.Text.Outlining;
namespace Microsoft.CodeAnalysis.Editor.Implementation.Outlining
namespace Microsoft.CodeAnalysis.Editor.Implementation.Structure
{
[ExportCommandHandler("Outlining Command Handler", ContentTypeNames.RoslynContentType)]
internal sealed class OutliningCommandHandler : ICommandHandler<StartAutomaticOutliningCommandArgs>
......
......@@ -4,14 +4,14 @@
using System.Collections.Generic;
using System.ComponentModel.Composition;
using Microsoft.CodeAnalysis.Shared.TestHooks;
using Microsoft.CodeAnalysis.Text.Shared.Extensions;
using Microsoft.CodeAnalysis.Structure;
using Microsoft.VisualStudio.Text;
using Microsoft.VisualStudio.Text.Editor;
using Microsoft.VisualStudio.Text.Projection;
using Microsoft.VisualStudio.Text.Tagging;
using Microsoft.VisualStudio.Utilities;
namespace Microsoft.CodeAnalysis.Editor.Implementation.Outlining
namespace Microsoft.CodeAnalysis.Editor.Implementation.Structure
{
/// <summary>
/// Shared implementation of the outliner tagger provider.
......@@ -23,14 +23,14 @@ namespace Microsoft.CodeAnalysis.Editor.Implementation.Outlining
/// persist them to the SUO file to persist this data across sessions.
/// </summary>
[Export(typeof(ITaggerProvider))]
[Export(typeof(VisualStudio14OutliningTaggerProvider))]
[Export(typeof(VisualStudio14StructureTaggerProvider))]
[TagType(typeof(IOutliningRegionTag))]
[ContentType(ContentTypeNames.RoslynContentType)]
internal partial class VisualStudio14OutliningTaggerProvider :
AbstractOutliningTaggerProvider<IOutliningRegionTag>
internal partial class VisualStudio14StructureTaggerProvider :
AbstractStructureTaggerProvider<IOutliningRegionTag>
{
[ImportingConstructor]
public VisualStudio14OutliningTaggerProvider(
public VisualStudio14StructureTaggerProvider(
IForegroundNotificationService notificationService,
ITextEditorFactoryService textEditorFactoryService,
IEditorOptionsFactoryService editorOptionsFactoryService,
......@@ -53,7 +53,7 @@ public override int GetHashCode(IOutliningRegionTag obj)
}
protected override IOutliningRegionTag CreateTag(
IOutliningRegionTag parentTag, ITextSnapshot snapshot, OutliningSpan region)
IOutliningRegionTag parentTag, ITextSnapshot snapshot, BlockSpan region)
{
return new RegionTag(this, snapshot, region);
}
......
......@@ -70,9 +70,9 @@
<Compile Include="IntelliSense\Completion\Presentation\Roslyn15CompletionSet.cs" />
<Compile Include="IntelliSense\Completion\Presentation\VisualStudio15CompletionSetFactory.cs" />
<Compile Include="IntelliSense\Completion\Presentation\VisualStudio15CompletionSet.cs" />
<Compile Include="Outlining\BlockTag2.cs" />
<Compile Include="Outlining\IBlockTag2.cs" />
<Compile Include="Outlining\VisualStudio15OutliningTaggerProvider.cs" />
<Compile Include="Structure\BlockTag2.cs" />
<Compile Include="Structure\IBlockTag2.cs" />
<Compile Include="Structure\VisualStudio15OutliningTaggerProvider.cs" />
</ItemGroup>
<ItemGroup />
<Import Project="..\..\..\build\Targets\VSL.Imports.targets" />
......
......@@ -3,7 +3,9 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using Microsoft.CodeAnalysis.Editor.Implementation.Structure;
using Microsoft.CodeAnalysis.Shared.TestHooks;
using Microsoft.CodeAnalysis.Structure;
using Microsoft.CodeAnalysis.Text.Shared.Extensions;
using Microsoft.VisualStudio.Text;
using Microsoft.VisualStudio.Text.Editor;
......@@ -11,14 +13,14 @@
using Microsoft.VisualStudio.Text.Tagging;
using Microsoft.VisualStudio.Utilities;
namespace Microsoft.CodeAnalysis.Editor.Implementation.Outlining
namespace Microsoft.CodeAnalysis.Editor.Structure
{
[Export(typeof(ITaggerProvider))]
[Export(typeof(VisualStudio15OutliningTaggerProvider))]
[TagType(typeof(IBlockTag2))]
[ContentType(ContentTypeNames.RoslynContentType)]
internal partial class VisualStudio15OutliningTaggerProvider :
AbstractOutliningTaggerProvider<IBlockTag2>
AbstractStructureTaggerProvider<IBlockTag2>
{
[ImportingConstructor]
public VisualStudio15OutliningTaggerProvider(
......@@ -44,7 +46,7 @@ public override int GetHashCode(IBlockTag2 obj)
}
protected override IBlockTag2 CreateTag(
IBlockTag2 parentTag, ITextSnapshot snapshot, OutliningSpan region)
IBlockTag2 parentTag, ITextSnapshot snapshot, BlockSpan region)
{
return new RoslynRegionTag(this, parentTag, snapshot, region);
}
......@@ -56,14 +58,14 @@ private class RoslynRegionTag : RegionTag, IBlockTag2
public SnapshotSpan Span { get; }
public SnapshotSpan StatementSpan { get; }
public string Type => OutliningSpan.Type;
public string Type => BlockSpan.Type;
public bool IsCollapsible => true;
public RoslynRegionTag(
AbstractOutliningTaggerProvider<IBlockTag2> provider,
AbstractStructureTaggerProvider<IBlockTag2> provider,
IBlockTag2 parent,
ITextSnapshot snapshot,
OutliningSpan outliningSpan) :
BlockSpan outliningSpan) :
base(provider, snapshot, outliningSpan)
{
Parent = parent;
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Utilities;
using Xunit;
......@@ -13,9 +13,9 @@ namespace Microsoft.CodeAnalysis.Editor.UnitTests.Outlining
public abstract class AbstractSyntaxNodeOutlinerTests<TSyntaxNode> : AbstractSyntaxOutlinerTests
where TSyntaxNode : SyntaxNode
{
internal abstract AbstractSyntaxOutliner CreateOutliner();
internal abstract AbstractSyntaxStructureProvider CreateOutliner();
internal sealed override async Task<OutliningSpan[]> GetRegionsAsync(Document document, int position)
internal sealed override async Task<BlockSpan[]> GetRegionsAsync(Document document, int position)
{
var root = await document.GetSyntaxRootAsync(CancellationToken.None);
var token = root.FindToken(position, findInsideTrivia: true);
......@@ -37,8 +37,8 @@ internal sealed override async Task<OutliningSpan[]> GetRegionsAsync(Document do
}
var outliner = CreateOutliner();
var actualRegions = new List<OutliningSpan>();
outliner.CollectOutliningSpans(document, node, actualRegions, CancellationToken.None);
var actualRegions = ImmutableArray.CreateBuilder<BlockSpan>();
outliner.CollectBlockSpans(document, node, actualRegions, CancellationToken.None);
// TODO: Determine why we get null outlining spans.
return actualRegions.WhereNotNull().ToArray();
......
......@@ -4,8 +4,8 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Editor.UnitTests.Workspaces;
using Microsoft.CodeAnalysis.Structure;
using Microsoft.CodeAnalysis.Text;
using Xunit;
......@@ -17,7 +17,7 @@ public abstract class AbstractSyntaxOutlinerTests
protected virtual string WorkspaceKind => TestWorkspace.WorkspaceName;
internal abstract Task<OutliningSpan[]> GetRegionsAsync(Document document, int position);
internal abstract Task<BlockSpan[]> GetRegionsAsync(Document document, int position);
protected async Task VerifyRegionsAsync(string markupCode, params Tuple<string, string, string, bool, bool>[] expectedRegionData)
{
......@@ -66,7 +66,7 @@ protected async Task VerifyNoRegionsAsync(string markupCode)
return Tuple.Create(collapseSpanName, collapseSpanName, bannerText, autoCollapse, isDefaultCollapsed);
}
private static OutliningSpan CreateOutliningSpan(Tuple<string, string, string, bool, bool> regionData, IDictionary<string, IList<TextSpan>> spans)
private static BlockSpan CreateOutliningSpan(Tuple<string, string, string, bool, bool> regionData, IDictionary<string, IList<TextSpan>> spans)
{
var collapseSpanName = regionData.Item1;
var hintSpanName = regionData.Item2;
......@@ -80,10 +80,15 @@ private static OutliningSpan CreateOutliningSpan(Tuple<string, string, string, b
var collapseSpan = spans[collapseSpanName][0];
var hintSpan = spans[hintSpanName][0];
return new OutliningSpan(collapseSpan, hintSpan, bannerText, autoCollapse, isDefaultCollapsed);
return new BlockSpan(isCollapsible: true,
textSpan: collapseSpan,
hintSpan: hintSpan,
bannerText: bannerText,
autoCollapse: autoCollapse,
isDefaultCollapsed: isDefaultCollapsed);
}
internal static void AssertRegion(OutliningSpan expected, OutliningSpan actual)
internal static void AssertRegion(BlockSpan expected, BlockSpan actual)
{
Assert.Equal(expected.TextSpan.Start, actual.TextSpan.Start);
Assert.Equal(expected.TextSpan.End, actual.TextSpan.End);
......@@ -94,4 +99,4 @@ internal static void AssertRegion(OutliningSpan expected, OutliningSpan actual)
Assert.Equal(expected.IsDefaultCollapsed, actual.IsDefaultCollapsed);
}
}
}
}
\ No newline at end of file
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Structure;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Utilities;
namespace Microsoft.CodeAnalysis.Editor.UnitTests.Outlining
{
public abstract class AbstractSyntaxTriviaOutlinerTests : AbstractSyntaxOutlinerTests
{
internal abstract AbstractSyntaxOutliner CreateOutliner();
internal abstract AbstractSyntaxStructureProvider CreateOutliner();
internal sealed override async Task<OutliningSpan[]> GetRegionsAsync(Document document, int position)
internal sealed override async Task<BlockSpan[]> GetRegionsAsync(Document document, int position)
{
var root = await document.GetSyntaxRootAsync(CancellationToken.None);
var trivia = root.FindTrivia(position, findInsideTrivia: true);
var outliner = CreateOutliner();
var actualRegions = new List<OutliningSpan>();
outliner.CollectOutliningSpans(document, trivia, actualRegions, CancellationToken.None);
var actualRegions = ImmutableArray.CreateBuilder<BlockSpan>();
outliner.CollectBlockSpans(document, trivia, actualRegions, CancellationToken.None);
// TODO: Determine why we get null outlining spans.
return actualRegions.WhereNotNull().ToArray();
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Editor.Implementation.Structure;
using Microsoft.CodeAnalysis.Editor.UnitTests.Workspaces;
using Microsoft.CodeAnalysis.Structure;
using Roslyn.Test.Utilities;
using Xunit;
......@@ -35,7 +37,7 @@ static void Foo()
var spans = await GetSpansFromWorkspaceAsync(workspace);
// ensure all 4 outlining region tags were found (usings, class, method, lambda)
Assert.Equal(4, spans.Count);
Assert.Equal(4, spans.Length);
}
}
......@@ -61,7 +63,7 @@ static void Foo()
var spans = await GetSpansFromWorkspaceAsync(workspace);
// ensure all 4 outlining region tags were found (usings, class, method, lambda)
Assert.Equal(4, spans.Count);
Assert.Equal(4, spans.Length);
}
}
......@@ -87,17 +89,19 @@ static void Foo()
var spans = await GetSpansFromWorkspaceAsync(workspace);
// ensure all 4 outlining region tags were found (usings, class, method, anonymous delegate)
Assert.Equal(4, spans.Count);
Assert.Equal(4, spans.Length);
}
}
private static async Task<IList<OutliningSpan>> GetSpansFromWorkspaceAsync(TestWorkspace workspace)
private static async Task<ImmutableArray<BlockSpan>> GetSpansFromWorkspaceAsync(
TestWorkspace workspace)
{
var hostDocument = workspace.Documents.First();
var document = workspace.CurrentSolution.GetDocument(hostDocument.Id);
var outliningService = document.Project.LanguageServices.GetService<IOutliningService>();
var outliningService = document.Project.LanguageServices.GetService<BlockStructureService>();
return await outliningService.GetOutliningSpansAsync(document, CancellationToken.None);
var structure = await outliningService.GetBlockStructureAsync(document, CancellationToken.None);
return structure.Spans;
}
}
}
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
using Microsoft.CodeAnalysis.Text;
using Roslyn.Test.Utilities;
using Xunit;
namespace Microsoft.CodeAnalysis.Editor.UnitTests.Outlining
......@@ -17,7 +16,8 @@ public void TestProperties()
var bannerText = "Foo";
var autoCollapse = true;
var outliningRegion = new OutliningSpan(span, hintSpan, bannerText, autoCollapse);
var outliningRegion = new BlockSpan(true, span, hintSpan,
bannerText: bannerText, autoCollapse: autoCollapse);
Assert.Equal(span, outliningRegion.TextSpan);
Assert.Equal(hintSpan, outliningRegion.HintSpan);
......@@ -33,7 +33,8 @@ public void TestToStringWithHintSpan()
var bannerText = "Foo";
var autoCollapse = true;
var outliningRegion = new OutliningSpan(span, hintSpan, bannerText, autoCollapse);
var outliningRegion = new BlockSpan(true, span, hintSpan,
bannerText: bannerText, autoCollapse: autoCollapse);
Assert.Equal("{Span=[0..1), HintSpan=[2..3), BannerText=\"Foo\", AutoCollapse=True, IsDefaultCollapsed=False}", outliningRegion.ToString());
}
......@@ -45,9 +46,10 @@ public void TestToStringWithoutHintSpan()
var bannerText = "Foo";
var autoCollapse = true;
var outliningRegion = new OutliningSpan(span, bannerText, autoCollapse);
var outliningRegion = new BlockSpan(true, span,
bannerText: bannerText, autoCollapse: autoCollapse);
Assert.Equal("{Span=[0..1), BannerText=\"Foo\", AutoCollapse=True, IsDefaultCollapsed=False}", outliningRegion.ToString());
}
}
}
}
\ No newline at end of file
......@@ -2,17 +2,12 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Editor;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Editor.Shared.Extensions;
using Microsoft.CodeAnalysis.Editor.Implementation.Structure;
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.Text;
using Microsoft.VisualStudio.Text;
using Microsoft.VisualStudio.Text.Editor;
using Microsoft.VisualStudio.Text.Projection;
using Microsoft.VisualStudio.Text.Tagging;
......@@ -128,7 +123,7 @@ private static async Task<List<IOutliningRegionTag>> GetTagsFromWorkspaceAsync(T
var editorService = workspace.GetService<IEditorOptionsFactoryService>();
var projectionService = workspace.GetService<IProjectionBufferFactoryService>();
var provider = new VisualStudio14OutliningTaggerProvider(
var provider = new VisualStudio14StructureTaggerProvider(
workspace.ExportProvider.GetExportedValue<IForegroundNotificationService>(),
textService, editorService, projectionService,
AggregateAsynchronousOperationListener.EmptyListeners);
......
......@@ -5,19 +5,16 @@
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Editor.Shared.Options;
using Microsoft.CodeAnalysis.Editor.Implementation.Structure;
using Microsoft.CodeAnalysis.Editor.Shared.Tagging;
using Microsoft.CodeAnalysis.Editor.Tagging;
using Microsoft.CodeAnalysis.Editor.UnitTests.Workspaces;
using Microsoft.CodeAnalysis.Options;
using Microsoft.CodeAnalysis.Shared.TestHooks;
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 Moq;
using Roslyn.Test.Utilities;
using Roslyn.Utilities;
using Xunit;
......@@ -98,7 +95,7 @@ public async Task TestSynchronousOutlining()
{
WpfTestCase.RequireWpfFact($"{nameof(AsynchronousTaggerTests)}.{nameof(TestSynchronousOutlining)} creates asynchronous taggers");
var tagProvider = new VisualStudio14OutliningTaggerProvider(
var tagProvider = new VisualStudio14StructureTaggerProvider(
workspace.GetService<IForegroundNotificationService>(),
workspace.GetService<ITextEditorFactoryService>(),
workspace.GetService<IEditorOptionsFactoryService>(),
......
......@@ -165,38 +165,6 @@
<Compile Include="NavigationBar\GenerateFinalizerItem.vb" />
<Compile Include="NavigationBar\GenerateMethodItem.vb" />
<Compile Include="NavigationBar\VisualBasicNavigationBarItemService.vb" />
<Compile Include="Outlining\Outliners\AccessorDeclarationOutliner.vb" />
<Compile Include="Outlining\Outliners\CompilationUnitOutliner.vb" />
<Compile Include="Outlining\Outliners\ConstructorDeclarationOutliner.vb" />
<Compile Include="Outlining\Outliners\DelegateDeclarationOutliner.vb" />
<Compile Include="Outlining\Outliners\DisabledTextTriviaOutliner.vb" />
<Compile Include="Outlining\Outliners\DocumentationCommentOutliner.vb" />
<Compile Include="Outlining\Outliners\EnumDeclarationOutliner.vb" />
<Compile Include="Outlining\Outliners\EventDeclarationOutliner.vb" />
<Compile Include="Outlining\Outliners\ExternalMethodDeclarationOutliner.vb" />
<Compile Include="Outlining\Outliners\FieldDeclarationOutliner.vb" />
<Compile Include="Outlining\Outliners\MetadataAsSource\AbstractMetadataAsSourceOutliner.vb" />
<Compile Include="Outlining\Outliners\MetadataAsSource\ConstructorDeclarationOutliner.vb" />
<Compile Include="Outlining\Outliners\MetadataAsSource\DelegateDeclarationOutliner.vb" />
<Compile Include="Outlining\Outliners\MetadataAsSource\EnumDeclarationOutliner.vb" />
<Compile Include="Outlining\Outliners\MetadataAsSource\EnumMemberDeclarationOutliner.vb" />
<Compile Include="Outlining\Outliners\MetadataAsSource\EventDeclarationOutliner.vb" />
<Compile Include="Outlining\Outliners\MetadataAsSource\FieldDeclarationOutliner.vb" />
<Compile Include="Outlining\Outliners\MetadataAsSource\MethodDeclarationOutliner.vb" />
<Compile Include="Outlining\Outliners\MetadataAsSource\OperatorDeclarationOutliner.vb" />
<Compile Include="Outlining\Outliners\MetadataAsSource\PropertyDeclarationOutliner.vb" />
<Compile Include="Outlining\Outliners\MetadataAsSource\RegionDirectiveOutliner.vb" />
<Compile Include="Outlining\Outliners\MetadataAsSource\TypeDeclarationOutliner.vb" />
<Compile Include="Outlining\Outliners\MethodDeclarationOutliner.vb" />
<Compile Include="Outlining\Outliners\MultilineLambdaOutliner.vb" />
<Compile Include="Outlining\Outliners\NamespaceDeclarationOutliner.vb" />
<Compile Include="Outlining\Outliners\OperatorDeclarationOutliner.vb" />
<Compile Include="Outlining\Outliners\PropertyDeclarationOutliner.vb" />
<Compile Include="Outlining\Outliners\RegionDirectiveOutliner.vb" />
<Compile Include="Outlining\Outliners\TypeDeclarationOutliner.vb" />
<Compile Include="Outlining\Outliners\XmlExpressionOutliner.vb" />
<Compile Include="Outlining\VisualBasicOutliningHelpers.vb" />
<Compile Include="Outlining\VisualBasicOutliningService.vb" />
<Compile Include="QuickInfo\SemanticQuickInfoProvider.vb" />
<Compile Include="ReferenceHighlighting\ReferenceHighlightingAdditionalReferenceProvider.vb" />
<Compile Include="RenameTracking\BasicRenameTrackingLanguageHeuristicsService.vb" />
......@@ -259,4 +227,4 @@
<PublicAPI Include="PublicAPI.Unshipped.txt" />
</ItemGroup>
<Import Project="..\..\..\build\Targets\VSL.Imports.targets" />
</Project>
</Project>
\ No newline at end of file
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining
Public Class AccessorDeclarationOutlinerTests
Inherits AbstractVisualBasicSyntaxNodeOutlinerTests(Of AccessorStatementSyntax)
Friend Overrides Function CreateOutliner() As AbstractSyntaxOutliner
Friend Overrides Function CreateOutliner() As AbstractSyntaxStructureProvider
Return New AccessorDeclarationOutliner()
End Function
......@@ -302,4 +302,4 @@ EndClass
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports Microsoft.CodeAnalysis.Editor.UnitTests.Outlining
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Structure
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining
Public Class CommentTests
......@@ -14,7 +14,7 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining
End Get
End Property
Friend Overrides Async Function GetRegionsAsync(document As Document, position As Integer) As Task(Of OutliningSpan())
Friend Overrides Async Function GetRegionsAsync(document As Document, position As Integer) As Task(Of BlockSpan())
Dim root = Await document.GetSyntaxRootAsync()
Dim trivia = root.FindTrivia(position, findInsideTrivia:=True)
......@@ -25,7 +25,7 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining
ElseIf token.TrailingTrivia.Contains(trivia) Then
Return CreateCommentsRegions(token.TrailingTrivia).ToArray()
Else
Return Contract.FailWithReturn(Of OutliningSpan())()
Return Contract.FailWithReturn(Of BlockSpan())()
End If
End Function
......@@ -84,6 +84,5 @@ End Class
Await VerifyRegionsAsync(code,
Region("span", "' Hello ...", autoCollapse:=True))
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining
......@@ -9,7 +9,7 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining
Public Class CompilationUnitOutlinerTests
Inherits AbstractVisualBasicSyntaxNodeOutlinerTests(Of CompilationUnitSyntax)
Friend Overrides Function CreateOutliner() As AbstractSyntaxOutliner
Friend Overrides Function CreateOutliner() As AbstractSyntaxStructureProvider
Return New CompilationUnitOutliner()
End Function
......@@ -71,6 +71,5 @@ Imports System.Linq|}
Region("span2", "Imports ...", autoCollapse:=True),
Region("span3", "' Bottom ...", autoCollapse:=True))
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining
Public Class ConstructorDeclarationOutlinerTests
Inherits AbstractVisualBasicSyntaxNodeOutlinerTests(Of SubNewStatementSyntax)
Friend Overrides Function CreateOutliner() As AbstractSyntaxOutliner
Friend Overrides Function CreateOutliner() As AbstractSyntaxStructureProvider
Return New ConstructorDeclarationOutliner()
End Function
......@@ -74,6 +74,5 @@ End Class
Region("span1", "' My ...", autoCollapse:=True),
Region("span2", "Sub New() ...", autoCollapse:=True))
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining
Public Class DelegateDeclarationOutlinerTests
Inherits AbstractVisualBasicSyntaxNodeOutlinerTests(Of DelegateStatementSyntax)
Friend Overrides Function CreateOutliner() As AbstractSyntaxOutliner
Friend Overrides Function CreateOutliner() As AbstractSyntaxStructureProvider
Return New DelegateDeclarationOutliner()
End Function
......@@ -22,6 +22,5 @@ Delegate Sub $$Foo()
Await VerifyRegionsAsync(code,
Region("span", "' Hello ...", autoCollapse:=True))
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Structure
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining
Public Class DisabledCodeOutlinerTests
Inherits AbstractVisualBasicSyntaxTriviaOutlinerTests
Friend Overrides Function CreateOutliner() As AbstractSyntaxOutliner
Friend Overrides Function CreateOutliner() As AbstractSyntaxStructureProvider
Return New DisabledTextTriviaOutliner()
End Function
......@@ -51,6 +51,5 @@ Blah|}
Await VerifyRegionsAsync(code,
Region("span", VisualBasicOutliningHelpers.Ellipsis, autoCollapse:=True))
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining
Public Class DocumentationCommentOutlinerTests
Inherits AbstractVisualBasicSyntaxNodeOutlinerTests(Of DocumentationCommentTriviaSyntax)
Friend Overrides Function CreateOutliner() As AbstractSyntaxOutliner
Friend Overrides Function CreateOutliner() As AbstractSyntaxStructureProvider
Return New DocumentationCommentOutliner()
End Function
......@@ -154,4 +154,4 @@ End Class
Region("span", "''' <summary> Summary with SeeClass , SeeAlsoClass , Nothing , T , t , and not-supported .", autoCollapse:=True))
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining
Public Class EnumDeclarationOutlinerTests
Inherits AbstractVisualBasicSyntaxNodeOutlinerTests(Of EnumStatementSyntax)
Friend Overrides Function CreateOutliner() As AbstractSyntaxOutliner
Friend Overrides Function CreateOutliner() As AbstractSyntaxStructureProvider
Return New EnumDeclarationOutliner()
End Function
......@@ -50,6 +50,5 @@ End Enum|} ' Foo
Region("span1", "Enum E1 ...", autoCollapse:=True),
Region("span2", "' Hello ...", autoCollapse:=True))
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining
Public Class EventDeclarationOutlinerTests
Inherits AbstractVisualBasicSyntaxNodeOutlinerTests(Of EventStatementSyntax)
Friend Overrides Function CreateOutliner() As AbstractSyntaxOutliner
Friend Overrides Function CreateOutliner() As AbstractSyntaxStructureProvider
Return New EventDeclarationOutliner()
End Function
......@@ -96,6 +96,5 @@ End Class
Region("span1", "' My ...", autoCollapse:=True),
Region("span2", "Custom Event eventName As EventHandler ...", autoCollapse:=True))
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining
Public Class ExternalMethodDeclarationOutlinerTests
Inherits AbstractVisualBasicSyntaxNodeOutlinerTests(Of DeclareStatementSyntax)
Friend Overrides Function CreateOutliner() As AbstractSyntaxOutliner
Friend Overrides Function CreateOutliner() As AbstractSyntaxStructureProvider
Return New ExternalMethodDeclarationOutliner()
End Function
......@@ -26,4 +26,4 @@ End Class
Region("span", "' Hello ...", autoCollapse:=True))
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining
Public Class FieldDeclarationOutlinerTests
Inherits AbstractVisualBasicSyntaxNodeOutlinerTests(Of FieldDeclarationSyntax)
Friend Overrides Function CreateOutliner() As AbstractSyntaxOutliner
Friend Overrides Function CreateOutliner() As AbstractSyntaxStructureProvider
Return New FieldDeclarationOutliner()
End Function
......@@ -25,6 +25,5 @@ End Class
Await VerifyRegionsAsync(code,
Region("span", "' Hello ...", autoCollapse:=True))
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Imports MaSOutliners = Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining.MetadataAsSource
Imports MaSOutliners = Microsoft.CodeAnalysis.VisualBasic.Structure.MetadataAsSource
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining.MetadataAsSource
Public Class ConstructorDeclarationOutlinerTests
......@@ -15,7 +15,7 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining.Metadata
End Get
End Property
Friend Overrides Function CreateOutliner() As AbstractSyntaxOutliner
Friend Overrides Function CreateOutliner() As AbstractSyntaxStructureProvider
Return New MaSOutliners.ConstructorDeclarationOutliner()
End Function
......@@ -78,7 +78,5 @@ End Class
Await VerifyRegionsAsync(code,
Region("collapse", "hint", VisualBasicOutliningHelpers.Ellipsis, autoCollapse:=True))
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Imports MaSOutliners = Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining.MetadataAsSource
Imports MaSOutliners = Microsoft.CodeAnalysis.VisualBasic.Structure.MetadataAsSource
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining.MetadataAsSource
Public Class DelegateDeclarationOutlinerTests
......@@ -15,7 +15,7 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining.Metadata
End Get
End Property
Friend Overrides Function CreateOutliner() As AbstractSyntaxOutliner
Friend Overrides Function CreateOutliner() As AbstractSyntaxStructureProvider
Return New MaSOutliners.DelegateDeclarationOutliner()
End Function
......@@ -66,6 +66,5 @@ Delegate Sub $$Bar()
Await VerifyRegionsAsync(code,
Region("collapse", "hint", VisualBasicOutliningHelpers.Ellipsis, autoCollapse:=True))
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports MaSOutliners = Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining.MetadataAsSource
Imports MaSOutliners = Microsoft.CodeAnalysis.VisualBasic.Structure.MetadataAsSource
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining.MetadataAsSource
Public Class EnumDeclarationOutlinerTests
......@@ -15,7 +15,7 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining.Metadata
End Get
End Property
Friend Overrides Function CreateOutliner() As AbstractSyntaxOutliner
Friend Overrides Function CreateOutliner() As AbstractSyntaxStructureProvider
Return New MaSOutliners.EnumDeclarationOutliner()
End Function
......@@ -76,6 +76,5 @@ End Enum
Await VerifyRegionsAsync(code,
Region("collapse", "hint", VisualBasicOutliningHelpers.Ellipsis, autoCollapse:=True))
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Imports MaSOutliners = Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining.MetadataAsSource
Imports MaSOutliners = Microsoft.CodeAnalysis.VisualBasic.Structure.MetadataAsSource
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining.MetadataAsSource
Public Class EnumMemberDeclarationOutlinerTests
......@@ -15,7 +15,7 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining.Metadata
End Get
End Property
Friend Overrides Function CreateOutliner() As AbstractSyntaxOutliner
Friend Overrides Function CreateOutliner() As AbstractSyntaxStructureProvider
Return New MaSOutliners.EnumMemberDeclarationOutliner()
End Function
......@@ -60,6 +60,5 @@ End Enum
Await VerifyRegionsAsync(code,
Region("collapse", "hint", VisualBasicOutliningHelpers.Ellipsis, autoCollapse:=True))
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Imports MaSOutliners = Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining.MetadataAsSource
Imports MaSOutliners = Microsoft.CodeAnalysis.VisualBasic.Structure.MetadataAsSource
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining.MetadataAsSource
Public Class EventDeclarationOutlinerTests
......@@ -15,7 +15,7 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining.Metadata
End Get
End Property
Friend Overrides Function CreateOutliner() As AbstractSyntaxOutliner
Friend Overrides Function CreateOutliner() As AbstractSyntaxStructureProvider
Return New MaSOutliners.EventDeclarationOutliner()
End Function
......@@ -72,6 +72,5 @@ End Class
Await VerifyRegionsAsync(code,
Region("collapse", "hint", VisualBasicOutliningHelpers.Ellipsis, autoCollapse:=True))
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Imports MaSOutliners = Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining.MetadataAsSource
Imports MaSOutliners = Microsoft.CodeAnalysis.VisualBasic.Structure.MetadataAsSource
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining.MetadataAsSource
Public Class FieldDeclarationOutlinerTests
......@@ -15,7 +15,7 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining.Metadata
End Get
End Property
Friend Overrides Function CreateOutliner() As AbstractSyntaxOutliner
Friend Overrides Function CreateOutliner() As AbstractSyntaxStructureProvider
Return New MaSOutliners.FieldDeclarationOutliner()
End Function
......@@ -58,4 +58,4 @@ End Class
Region("collapse", "hint", VisualBasicOutliningHelpers.Ellipsis, autoCollapse:=True))
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports System.Threading
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports Microsoft.CodeAnalysis.Editor.UnitTests.Outlining
Imports Microsoft.CodeAnalysis.Structure
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining.MetadataAsSource
''' <summary>
......@@ -24,10 +24,11 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining.Metadata
End Get
End Property
Friend Overrides Async Function GetRegionsAsync(document As Document, position As Integer) As Task(Of OutliningSpan())
Dim outliningService = document.Project.LanguageServices.GetService(Of IOutliningService)()
Friend Overrides Async Function GetRegionsAsync(document As Document, position As Integer) As Task(Of BlockSpan())
Dim outliningService = document.Project.LanguageServices.GetService(Of BlockStructureService)()
Return (Await outliningService.GetOutliningSpansAsync(document, CancellationToken.None)) _
Return (Await outliningService.GetBlockStructureAsync(document, CancellationToken.None)) _
.Spans _
.WhereNotNull() _
.ToArray()
End Function
......
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Imports MaSOutliners = Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining.MetadataAsSource
Imports MaSOutliners = Microsoft.CodeAnalysis.VisualBasic.Structure.MetadataAsSource
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining.MetadataAsSource
Public Class MethodDeclarationOutlinerTests
......@@ -15,7 +15,7 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining.Metadata
End Get
End Property
Friend Overrides Function CreateOutliner() As AbstractSyntaxOutliner
Friend Overrides Function CreateOutliner() As AbstractSyntaxStructureProvider
Return New MaSOutliners.MethodDeclarationOutliner()
End Function
......@@ -76,6 +76,5 @@ End Class
Await VerifyRegionsAsync(code,
Region("collapse", "hint", VisualBasicOutliningHelpers.Ellipsis, autoCollapse:=True))
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Imports MaSOutliners = Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining.MetadataAsSource
Imports MaSOutliners = Microsoft.CodeAnalysis.VisualBasic.Structure.MetadataAsSource
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining.MetadataAsSource
Public Class OperatorDeclarationOutlinerTests
......@@ -15,7 +15,7 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining.Metadata
End Get
End Property
Friend Overrides Function CreateOutliner() As AbstractSyntaxOutliner
Friend Overrides Function CreateOutliner() As AbstractSyntaxStructureProvider
Return New MaSOutliners.OperatorDeclarationOutliner()
End Function
......@@ -72,6 +72,5 @@ End Class
Await VerifyRegionsAsync(code,
Region("collapse", "hint", VisualBasicOutliningHelpers.Ellipsis, autoCollapse:=True))
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Imports MaSOutliners = Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining.MetadataAsSource
Imports MaSOutliners = Microsoft.CodeAnalysis.VisualBasic.Structure.MetadataAsSource
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining.MetadataAsSource
Public Class PropertyDeclarationOutlinerTests
......@@ -15,7 +15,7 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining.Metadata
End Get
End Property
Friend Overrides Function CreateOutliner() As AbstractSyntaxOutliner
Friend Overrides Function CreateOutliner() As AbstractSyntaxStructureProvider
Return New MaSOutliners.PropertyDeclarationOutliner()
End Function
......@@ -72,6 +72,5 @@ End Class
Await VerifyRegionsAsync(code,
Region("collapse", "hint", VisualBasicOutliningHelpers.Ellipsis, autoCollapse:=True))
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Imports MaSOutliners = Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining.MetadataAsSource
Imports MaSOutliners = Microsoft.CodeAnalysis.VisualBasic.Structure.MetadataAsSource
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining.MetadataAsSource
Public Class RegionDirectiveOutlinerTests
......@@ -14,7 +14,7 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining.Metadata
End Get
End Property
Friend Overrides Function CreateOutliner() As AbstractSyntaxOutliner
Friend Overrides Function CreateOutliner() As AbstractSyntaxStructureProvider
Return New MaSOutliners.RegionDirectiveOutliner()
End Function
......@@ -39,6 +39,5 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining.Metadata
Await VerifyRegionsAsync(code,
Region("span", "#Region", autoCollapse:=True, isDefaultCollapsed:=False))
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Imports MaSOutliners = Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining.MetadataAsSource
Imports MaSOutliners = Microsoft.CodeAnalysis.VisualBasic.Structure.MetadataAsSource
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining.MetadataAsSource
Public Class TypeDeclarationOutlinerTests
......@@ -15,7 +15,7 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining.Metadata
End Get
End Property
Friend Overrides Function CreateOutliner() As AbstractSyntaxOutliner
Friend Overrides Function CreateOutliner() As AbstractSyntaxStructureProvider
Return New MaSOutliners.TypeDeclarationOutliner()
End Function
......@@ -68,6 +68,5 @@ End Class
Await VerifyRegionsAsync(code,
Region("collapse", "hint", VisualBasicOutliningHelpers.Ellipsis, autoCollapse:=True))
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining
Public Class MethodDeclarationOutlinerTests
Inherits AbstractVisualBasicSyntaxNodeOutlinerTests(Of MethodStatementSyntax)
Friend Overrides Function CreateOutliner() As AbstractSyntaxOutliner
Friend Overrides Function CreateOutliner() As AbstractSyntaxStructureProvider
Return New MethodDeclarationOutliner()
End Function
......@@ -174,6 +174,5 @@ End Class
Await VerifyRegionsAsync(code,
Region("span", "Public Function myFunction(myFunc1 As Func(Of System.String, System.String, System.String), myFunc2 As Func(Of System.String, System.String, System.String)) ...", autoCollapse:=True))
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining
Public Class MultilineLambdaOutlinerTests
Inherits AbstractVisualBasicSyntaxNodeOutlinerTests(Of MultiLineLambdaExpressionSyntax)
Friend Overrides Function CreateOutliner() As AbstractSyntaxOutliner
Friend Overrides Function CreateOutliner() As AbstractSyntaxStructureProvider
Return New MultilineLambdaOutliner()
End Function
......@@ -84,6 +84,5 @@ End Class
Await VerifyRegionsAsync(code,
Region("span", "Function(x) As Integer ...", autoCollapse:=False))
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining
Public Class NamespaceDeclarationOutlinerTests
Inherits AbstractVisualBasicSyntaxNodeOutlinerTests(Of NamespaceStatementSyntax)
Friend Overrides Function CreateOutliner() As AbstractSyntaxOutliner
Friend Overrides Function CreateOutliner() As AbstractSyntaxStructureProvider
Return New NamespaceDeclarationOutliner()
End Function
......@@ -50,6 +50,5 @@ End Namespace|}
Region("span1", "Namespace N1 ...", autoCollapse:=False),
Region("span2", "' My ...", autoCollapse:=True))
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining
Public Class OperatorDeclarationOutlinerTests
Inherits AbstractVisualBasicSyntaxNodeOutlinerTests(Of OperatorStatementSyntax)
Friend Overrides Function CreateOutliner() As AbstractSyntaxOutliner
Friend Overrides Function CreateOutliner() As AbstractSyntaxStructureProvider
Return New OperatorDeclarationOutliner()
End Function
......@@ -40,6 +40,5 @@ End Class
Region("span1", "' Hello ...", autoCollapse:=True),
Region("span2", "Public Shared Widening Operator CType(b As Base) As Integer ...", autoCollapse:=True))
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports System.Threading
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports Microsoft.CodeAnalysis.Editor.UnitTests.Outlining
Imports Microsoft.CodeAnalysis.Structure
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining
Public Class OverallOutliningTests
......@@ -14,10 +14,11 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining
End Get
End Property
Friend Overrides Async Function GetRegionsAsync(document As Document, position As Integer) As Task(Of OutliningSpan())
Dim outliningService = document.Project.LanguageServices.GetService(Of IOutliningService)()
Friend Overrides Async Function GetRegionsAsync(document As Document, position As Integer) As Task(Of BlockSpan())
Dim outliningService = document.Project.LanguageServices.GetService(Of BlockStructureService)()
Return (Await outliningService.GetOutliningSpansAsync(document, CancellationToken.None)) _
Return (Await outliningService.GetBlockStructureAsync(document, CancellationToken.None)) _
.Spans _
.WhereNotNull() _
.ToArray()
End Function
......@@ -36,6 +37,5 @@ End Class|}
Region("span1", "Class C ...", autoCollapse:=False),
Region("span2", "Something", autoCollapse:=False, isDefaultCollapsed:=True))
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining
Public Class PropertyDeclarationOutlinerTests
Inherits AbstractVisualBasicSyntaxNodeOutlinerTests(Of PropertyStatementSyntax)
Friend Overrides Function CreateOutliner() As AbstractSyntaxOutliner
Friend Overrides Function CreateOutliner() As AbstractSyntaxStructureProvider
Return New PropertyDeclarationOutliner()
End Function
......@@ -42,6 +42,5 @@ End Class
Await VerifyRegionsAsync(code,
Region("span", "WriteOnly Property P1 As Integer ...", autoCollapse:=True))
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining
Public Class RegionDirectiveOutlinerTests
Inherits AbstractVisualBasicSyntaxNodeOutlinerTests(Of RegionDirectiveTriviaSyntax)
Friend Overrides Function CreateOutliner() As AbstractSyntaxOutliner
Friend Overrides Function CreateOutliner() As AbstractSyntaxStructureProvider
Return New RegionDirectiveOutliner()
End Function
......@@ -67,4 +67,4 @@ End Class
Region("span", "#Region", autoCollapse:=False, isDefaultCollapsed:=True))
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining
Public Class TypeDeclarationOutlinerTests
Inherits AbstractVisualBasicSyntaxNodeOutlinerTests(Of TypeStatementSyntax)
Friend Overrides Function CreateOutliner() As AbstractSyntaxOutliner
Friend Overrides Function CreateOutliner() As AbstractSyntaxStructureProvider
Return New TypeDeclarationOutliner()
End Function
......@@ -178,6 +178,5 @@ End Structure|}
Region("span1", "Structure S1 ...", autoCollapse:=False),
Region("span2", "' Hello ...", autoCollapse:=True))
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis.Editor.Implementation.Outlining
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.Outlining
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Structure
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Outlining
Public Class XmlDocumentOutlinerTests
Inherits AbstractVisualBasicSyntaxNodeOutlinerTests(Of XmlNodeSyntax)
Friend Overrides Function CreateOutliner() As AbstractSyntaxOutliner
Friend Overrides Function CreateOutliner() As AbstractSyntaxStructureProvider
Return New XmlExpressionOutliner()
End Function
......@@ -134,6 +134,5 @@ End Class
Await VerifyNoRegionsAsync(code)
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
......@@ -352,6 +352,47 @@
<Compile Include="Organizing\Organizers\OperatorDeclarationOrganizer.cs" />
<Compile Include="Organizing\Organizers\PropertyDeclarationOrganizer.cs" />
<Compile Include="Organizing\Organizers\StructDeclarationOrganizer.cs" />
<Compile Include="Structure\CSharpBlockStructureProvider.cs" />
<Compile Include="Structure\CSharpOutliningHelpers.cs" />
<Compile Include="Structure\CSharpBlockStructureService.cs" />
<Compile Include="Structure\Outliners\AccessorDeclarationOutliner.cs" />
<Compile Include="Structure\Outliners\AnonymousMethodExpressionOutliner.cs" />
<Compile Include="Structure\Outliners\CompilationUnitOutliner.cs" />
<Compile Include="Structure\Outliners\ConstructorDeclarationOutliner.cs" />
<Compile Include="Structure\Outliners\ConversionOperatorDeclarationOutliner.cs" />
<Compile Include="Structure\Outliners\DelegateDeclarationOutliner.cs" />
<Compile Include="Structure\Outliners\DestructorDeclarationOutliner.cs" />
<Compile Include="Structure\Outliners\DisabledTextTriviaOutliner.cs" />
<Compile Include="Structure\Outliners\DocumentationCommentOutliner.cs" />
<Compile Include="Structure\Outliners\EnumDeclarationOutliner.cs" />
<Compile Include="Structure\Outliners\EventDeclarationOutliner.cs" />
<Compile Include="Structure\Outliners\EventFieldDeclarationOutliner.cs" />
<Compile Include="Structure\Outliners\FieldDeclarationOutliner.cs" />
<Compile Include="Structure\Outliners\IndexerDeclarationOutliner.cs" />
<Compile Include="Structure\Outliners\MetadataAsSource\AbstractMetadataAsSourceOutliner.cs" />
<Compile Include="Structure\Outliners\MetadataAsSource\ConstructorDeclarationOutliner.cs" />
<Compile Include="Structure\Outliners\MetadataAsSource\ConversionOperatorDeclarationOutliner.cs" />
<Compile Include="Structure\Outliners\MetadataAsSource\DelegateDeclarationOutliner.cs" />
<Compile Include="Structure\Outliners\MetadataAsSource\DestructorDeclarationOutliner.cs" />
<Compile Include="Structure\Outliners\MetadataAsSource\EnumDeclarationOutliner.cs" />
<Compile Include="Structure\Outliners\MetadataAsSource\EnumMemberDeclarationOutliner.cs" />
<Compile Include="Structure\Outliners\MetadataAsSource\EventDeclarationOutliner.cs" />
<Compile Include="Structure\Outliners\MetadataAsSource\EventFieldDeclarationOutliner.cs" />
<Compile Include="Structure\Outliners\MetadataAsSource\FieldDeclarationOutliner.cs" />
<Compile Include="Structure\Outliners\MetadataAsSource\IndexerDeclarationOutliner.cs" />
<Compile Include="Structure\Outliners\MetadataAsSource\MethodDeclarationOutliner.cs" />
<Compile Include="Structure\Outliners\MetadataAsSource\OperatorDeclarationOutliner.cs" />
<Compile Include="Structure\Outliners\MetadataAsSource\PropertyDeclarationOutliner.cs" />
<Compile Include="Structure\Outliners\MetadataAsSource\RegionDirectiveOutliner.cs" />
<Compile Include="Structure\Outliners\MetadataAsSource\TypeDeclarationOutliner.cs" />
<Compile Include="Structure\Outliners\MethodDeclarationOutliner.cs" />
<Compile Include="Structure\Outliners\NamespaceDeclarationOutliner.cs" />
<Compile Include="Structure\Outliners\OperatorDeclarationOutliner.cs" />
<Compile Include="Structure\Outliners\ParenthesizedLambdaExpressionOutliner.cs" />
<Compile Include="Structure\Outliners\PropertyDeclarationOutliner.cs" />
<Compile Include="Structure\Outliners\RegionDirectiveOutliner.cs" />
<Compile Include="Structure\Outliners\SimpleLambdaExpressionOutliner.cs" />
<Compile Include="Structure\Outliners\TypeDeclarationOutliner.cs" />
<Compile Include="RemoveUnnecessaryImports\CSharpRemoveUnnecessaryImportsService.cs" />
<Compile Include="RemoveUnnecessaryImports\CSharpRemoveUnnecessaryImportsService.Rewriter.cs" />
<Compile Include="ReplaceMethodWithProperty\CSharpReplaceMethodWithPropertyService.cs" />
......@@ -390,4 +431,4 @@
</ItemGroup>
<Import Project="..\..\..\Compilers\CSharp\CSharpAnalyzerDriver\CSharpAnalyzerDriver.projitems" Label="Shared" />
<Import Project="..\..\..\..\build\Targets\VSL.Imports.targets" />
</Project>
</Project>
\ No newline at end of file
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Immutable;
using System.Composition;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Host.Mef;
using Roslyn.Utilities;
using Microsoft.CodeAnalysis.Structure;
namespace Microsoft.CodeAnalysis.Editor.CSharp.Outlining
namespace Microsoft.CodeAnalysis.CSharp.Structure
{
[ExportLanguageService(typeof(IOutliningService), LanguageNames.CSharp), Shared]
internal class CSharpOutliningService : AbstractOutliningService
internal class CSharpBlockStructureProvider : AbstractBlockStructureProvider
{
private static readonly ImmutableDictionary<Type, ImmutableArray<AbstractSyntaxOutliner>> s_defaultNodeOutlinerMap = CreateDefaultNodeOutlinerMap();
private static readonly ImmutableDictionary<int, ImmutableArray<AbstractSyntaxOutliner>> s_defaultTriviaOutlinerMap = CreateDefaultTriviaOutlinerMap();
private static readonly ImmutableDictionary<Type, ImmutableArray<AbstractSyntaxStructureProvider>> s_defaultNodeOutlinerMap = CreateDefaultNodeOutlinerMap();
private static readonly ImmutableDictionary<int, ImmutableArray<AbstractSyntaxStructureProvider>> s_defaultTriviaOutlinerMap = CreateDefaultTriviaOutlinerMap();
private static ImmutableDictionary<Type, ImmutableArray<AbstractSyntaxOutliner>> CreateDefaultNodeOutlinerMap()
private static ImmutableDictionary<Type, ImmutableArray<AbstractSyntaxStructureProvider>> CreateDefaultNodeOutlinerMap()
{
var builder = ImmutableDictionary.CreateBuilder<Type, ImmutableArray<AbstractSyntaxOutliner>>();
var builder = ImmutableDictionary.CreateBuilder<Type, ImmutableArray<AbstractSyntaxStructureProvider>>();
builder.Add<AccessorDeclarationSyntax, AccessorDeclarationOutliner>();
builder.Add<AnonymousMethodExpressionSyntax, AnonymousMethodExpressionOutliner>();
......@@ -49,18 +44,18 @@ internal class CSharpOutliningService : AbstractOutliningService
return builder.ToImmutable();
}
private static ImmutableDictionary<int, ImmutableArray<AbstractSyntaxOutliner>> CreateDefaultTriviaOutlinerMap()
private static ImmutableDictionary<int, ImmutableArray<AbstractSyntaxStructureProvider>> CreateDefaultTriviaOutlinerMap()
{
var builder = ImmutableDictionary.CreateBuilder<int, ImmutableArray<AbstractSyntaxOutliner>>();
var builder = ImmutableDictionary.CreateBuilder<int, ImmutableArray<AbstractSyntaxStructureProvider>>();
builder.Add((int)SyntaxKind.DisabledTextTrivia, ImmutableArray.Create<AbstractSyntaxOutliner>(new DisabledTextTriviaOutliner()));
builder.Add((int)SyntaxKind.DisabledTextTrivia, ImmutableArray.Create<AbstractSyntaxStructureProvider>(new DisabledTextTriviaOutliner()));
return builder.ToImmutable();
}
private CSharpOutliningService()
internal CSharpBlockStructureProvider()
: base(s_defaultNodeOutlinerMap, s_defaultTriviaOutlinerMap)
{
}
}
}
}
\ No newline at end of file
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Collections.Immutable;
using System.Composition;
using Microsoft.CodeAnalysis.Host;
using Microsoft.CodeAnalysis.Host.Mef;
using Microsoft.CodeAnalysis.Structure;
namespace Microsoft.CodeAnalysis.CSharp.Structure
{
[ExportLanguageServiceFactory(typeof(BlockStructureService), LanguageNames.CSharp), Shared]
internal class CSharpBlockStructureServiceFactory : ILanguageServiceFactory
{
public ILanguageService CreateLanguageService(HostLanguageServices languageServices)
{
return new CSharpBlockStructureService(languageServices.WorkspaceServices.Workspace);
}
}
[ExportLanguageService(typeof(BlockStructureService), LanguageNames.CSharp), Shared]
internal class CSharpBlockStructureService : BlockStructureServiceWithProviders
{
public CSharpBlockStructureService(Workspace workspace) : base(workspace)
{
}
protected override ImmutableArray<BlockStructureProvider> GetBuiltInProviders()
{
return ImmutableArray.Create<BlockStructureProvider>(
new CSharpBlockStructureProvider());
}
public override string Language => LanguageNames.CSharp;
}
}
\ No newline at end of file
......@@ -2,16 +2,17 @@
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Extensions;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Shared.Extensions;
using Microsoft.CodeAnalysis.Structure;
using Microsoft.CodeAnalysis.Text;
using Roslyn.Utilities;
namespace Microsoft.CodeAnalysis.Editor.CSharp.Outlining
namespace Microsoft.CodeAnalysis.CSharp.Structure
{
internal static class CSharpOutliningHelpers
{
......@@ -133,26 +134,28 @@ private static string GetCommentBannerText(SyntaxTrivia comment)
}
}
private static OutliningSpan CreateCommentRegion(SyntaxTrivia startComment, SyntaxTrivia endComment)
private static BlockSpan CreateCommentRegion(SyntaxTrivia startComment, SyntaxTrivia endComment)
{
var span = TextSpan.FromBounds(startComment.SpanStart, endComment.Span.End);
return new OutliningSpan(
span,
return new BlockSpan(
isCollapsible: true,
textSpan: span,
hintSpan: span,
bannerText: GetCommentBannerText(startComment),
autoCollapse: true);
}
// For testing purposes
internal static IEnumerable<OutliningSpan> CreateCommentRegions(SyntaxTriviaList triviaList)
internal static ImmutableArray<BlockSpan> CreateCommentRegions(SyntaxTriviaList triviaList)
{
var result = new List<OutliningSpan>();
var result = ImmutableArray.CreateBuilder<BlockSpan>();
CollectCommentRegions(triviaList, result);
return result;
return result.ToImmutable();
}
public static void CollectCommentRegions(SyntaxTriviaList triviaList, List<OutliningSpan> spans)
public static void CollectCommentRegions(
SyntaxTriviaList triviaList, ImmutableArray<BlockSpan>.Builder spans)
{
if (triviaList.Count > 0)
{
......@@ -199,7 +202,8 @@ public static void CollectCommentRegions(SyntaxTriviaList triviaList, List<Outli
}
}
public static void CollectCommentRegions(SyntaxNode node, List<OutliningSpan> spans)
public static void CollectCommentRegions(
SyntaxNode node, ImmutableArray<BlockSpan>.Builder spans)
{
if (node == null)
{
......@@ -211,17 +215,22 @@ public static void CollectCommentRegions(SyntaxNode node, List<OutliningSpan> sp
CollectCommentRegions(triviaList, spans);
}
private static OutliningSpan CreateRegion(TextSpan textSpan, string bannerText, bool autoCollapse)
private static BlockSpan CreateRegion(TextSpan textSpan, string bannerText, bool autoCollapse)
{
return CreateRegion(textSpan, textSpan, bannerText, autoCollapse);
}
private static OutliningSpan CreateRegion(TextSpan textSpan, TextSpan hintSpan, string bannerText, bool autoCollapse)
private static BlockSpan CreateRegion(TextSpan textSpan, TextSpan hintSpan, string bannerText, bool autoCollapse)
{
return new OutliningSpan(textSpan, hintSpan, bannerText, autoCollapse);
return new BlockSpan(
isCollapsible: true,
textSpan: textSpan,
hintSpan: hintSpan,
bannerText: bannerText,
autoCollapse: autoCollapse);
}
public static OutliningSpan CreateRegion(SyntaxNode node, string bannerText, bool autoCollapse)
public static BlockSpan CreateRegion(SyntaxNode node, string bannerText, bool autoCollapse)
{
return CreateRegion(
node.Span,
......@@ -229,7 +238,7 @@ public static OutliningSpan CreateRegion(SyntaxNode node, string bannerText, boo
autoCollapse);
}
public static OutliningSpan CreateRegion(SyntaxNode node, SyntaxToken syntaxToken, string bannerText, bool autoCollapse)
public static BlockSpan CreateRegion(SyntaxNode node, SyntaxToken syntaxToken, string bannerText, bool autoCollapse)
{
return CreateRegion(
node,
......@@ -239,7 +248,7 @@ public static OutliningSpan CreateRegion(SyntaxNode node, SyntaxToken syntaxToke
autoCollapse);
}
public static OutliningSpan CreateRegion(SyntaxNode node, SyntaxToken startToken, int endPos, string bannerText, bool autoCollapse)
public static BlockSpan CreateRegion(SyntaxNode node, SyntaxToken startToken, int endPos, string bannerText, bool autoCollapse)
{
// If the SyntaxToken is actually missing, don't attempt to create an outlining region.
if (startToken.IsMissing)
......@@ -261,7 +270,7 @@ public static OutliningSpan CreateRegion(SyntaxNode node, SyntaxToken startToken
autoCollapse);
}
public static OutliningSpan CreateRegion(SyntaxNode node, SyntaxToken startToken, SyntaxToken endToken, string bannerText, bool autoCollapse)
public static BlockSpan CreateRegion(SyntaxNode node, SyntaxToken startToken, SyntaxToken endToken, string bannerText, bool autoCollapse)
{
return CreateRegion(
node,
......@@ -271,7 +280,7 @@ public static OutliningSpan CreateRegion(SyntaxNode node, SyntaxToken startToken
autoCollapse);
}
public static OutliningSpan CreateRegion(SyntaxNode node, bool autoCollapse)
public static BlockSpan CreateRegion(SyntaxNode node, bool autoCollapse)
{
return CreateRegion(
node,
......@@ -281,7 +290,7 @@ public static OutliningSpan CreateRegion(SyntaxNode node, bool autoCollapse)
// Adds everything after 'syntaxToken' up to and including the end
// of node as a region. The snippet to display is just "..."
public static OutliningSpan CreateRegion(SyntaxNode node, SyntaxToken syntaxToken, bool autoCollapse)
public static BlockSpan CreateRegion(SyntaxNode node, SyntaxToken syntaxToken, bool autoCollapse)
{
return CreateRegion(
node, syntaxToken,
......@@ -291,7 +300,7 @@ public static OutliningSpan CreateRegion(SyntaxNode node, SyntaxToken syntaxToke
// Adds everything after 'syntaxToken' up to and including the end
// of node as a region. The snippet to display is just "..."
public static OutliningSpan CreateRegion(SyntaxNode node, SyntaxToken startToken, SyntaxToken endToken, bool autoCollapse)
public static BlockSpan CreateRegion(SyntaxNode node, SyntaxToken startToken, SyntaxToken endToken, bool autoCollapse)
{
return CreateRegion(
node, startToken, endToken,
......@@ -302,7 +311,7 @@ public static OutliningSpan CreateRegion(SyntaxNode node, SyntaxToken startToken
// Adds the span surrounding the syntax list as a region. The
// snippet shown is the text from the first line of the first
// node in the list.
public static OutliningSpan CreateRegion(IEnumerable<SyntaxNode> syntaxList, bool autoCollapse)
public static BlockSpan CreateRegion(IEnumerable<SyntaxNode> syntaxList, bool autoCollapse)
{
if (syntaxList.IsEmpty())
{
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
namespace Microsoft.CodeAnalysis.Editor.CSharp.Outlining
namespace Microsoft.CodeAnalysis.CSharp.Structure
{
internal class AccessorDeclarationOutliner : AbstractSyntaxNodeOutliner<AccessorDeclarationSyntax>
internal class AccessorDeclarationOutliner : AbstractSyntaxNodeStructureProvider<AccessorDeclarationSyntax>
{
protected override void CollectOutliningSpans(
protected override void CollectBlockSpans(
AccessorDeclarationSyntax accessorDeclaration,
List<OutliningSpan> spans,
ImmutableArray<BlockSpan>.Builder spans,
CancellationToken cancellationToken)
{
CSharpOutliningHelpers.CollectCommentRegions(accessorDeclaration, spans);
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
namespace Microsoft.CodeAnalysis.Editor.CSharp.Outlining
namespace Microsoft.CodeAnalysis.CSharp.Structure
{
internal class AnonymousMethodExpressionOutliner : AbstractSyntaxNodeOutliner<AnonymousMethodExpressionSyntax>
internal class AnonymousMethodExpressionOutliner : AbstractSyntaxNodeStructureProvider<AnonymousMethodExpressionSyntax>
{
protected override void CollectOutliningSpans(
protected override void CollectBlockSpans(
AnonymousMethodExpressionSyntax anonymousMethod,
List<OutliningSpan> spans,
ImmutableArray<BlockSpan>.Builder spans,
CancellationToken cancellationToken)
{
// fault tolerance
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
namespace Microsoft.CodeAnalysis.Editor.CSharp.Outlining
namespace Microsoft.CodeAnalysis.CSharp.Structure
{
internal class CompilationUnitOutliner : AbstractSyntaxNodeOutliner<CompilationUnitSyntax>
internal class CompilationUnitOutliner : AbstractSyntaxNodeStructureProvider<CompilationUnitSyntax>
{
protected override void CollectOutliningSpans(
protected override void CollectBlockSpans(
CompilationUnitSyntax compilationUnit,
List<OutliningSpan> spans,
ImmutableArray<BlockSpan>.Builder spans,
CancellationToken cancellationToken)
{
CSharpOutliningHelpers.CollectCommentRegions(compilationUnit, spans);
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editor.Implementation.Outlining;
using Microsoft.CodeAnalysis.Structure;
namespace Microsoft.CodeAnalysis.Editor.CSharp.Outlining
namespace Microsoft.CodeAnalysis.CSharp.Structure
{
internal class ConstructorDeclarationOutliner : AbstractSyntaxNodeOutliner<ConstructorDeclarationSyntax>
internal class ConstructorDeclarationOutliner : AbstractSyntaxNodeStructureProvider<ConstructorDeclarationSyntax>
{
protected override void CollectOutliningSpans(
protected override void CollectBlockSpans(
ConstructorDeclarationSyntax constructorDeclaration,
List<OutliningSpan> spans,
ImmutableArray<BlockSpan>.Builder spans,
CancellationToken cancellationToken)
{
CSharpOutliningHelpers.CollectCommentRegions(constructorDeclaration, spans);
......
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册