提交 89891d62 编写于 作者: C Cyrus Najmabadi

Merge branch 'regexFeatures' into jsonFeatures

......@@ -6,8 +6,8 @@
using Microsoft.CodeAnalysis.CSharp.ValidateRegexString;
using Microsoft.CodeAnalysis.Diagnostics;
using Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Diagnostics;
using Microsoft.CodeAnalysis.EmbeddedLanguages.RegularExpressions;
using Microsoft.CodeAnalysis.Options;
using Microsoft.CodeAnalysis.RegularExpressions;
using Roslyn.Test.Utilities;
using Xunit;
......
......@@ -2,14 +2,17 @@
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.EmbeddedLanguages.Common;
using Microsoft.CodeAnalysis.EmbeddedLanguages.VirtualChars;
using Microsoft.CodeAnalysis.Json;
using Microsoft.CodeAnalysis.LanguageServices;
using Microsoft.CodeAnalysis.Shared.Extensions;
using Microsoft.CodeAnalysis.VirtualChars;
using Roslyn.Utilities;
namespace Microsoft.CodeAnalysis.Editor.Implementation.BraceMatching
{
using JsonToken = EmbeddedSyntaxToken<JsonKind>;
internal static class CommonJsonBraceMatcher
{
internal static async Task<BraceMatchingResult?> FindBracesAsync(
......@@ -85,9 +88,7 @@ internal static class CommonJsonBraceMatcher
return default;
}
return new BraceMatchingResult(
JsonHelpers.GetSpan(open),
JsonHelpers.GetSpan(close));
return new BraceMatchingResult(open.GetSpan(), close.GetSpan());
}
private static JsonValueNode FindObjectOrArrayNode(JsonNode node, VirtualChar ch)
......
......@@ -2,10 +2,10 @@
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.EmbeddedLanguages.RegularExpressions;
using Microsoft.CodeAnalysis.EmbeddedLanguages.VirtualChars;
using Microsoft.CodeAnalysis.LanguageServices;
using Microsoft.CodeAnalysis.RegularExpressions;
using Microsoft.CodeAnalysis.Shared.Extensions;
using Microsoft.CodeAnalysis.VirtualChars;
using Roslyn.Utilities;
namespace Microsoft.CodeAnalysis.Editor.Implementation.BraceMatching
......
' 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.Collections.Generic
Imports System.Threading.Tasks
Imports Microsoft.CodeAnalysis.CodeFixes
Imports Microsoft.CodeAnalysis.Diagnostics
Imports Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Diagnostics
Imports Microsoft.CodeAnalysis.EmbeddedLanguages.RegularExpressions
Imports Microsoft.CodeAnalysis.Options
Imports Microsoft.CodeAnalysis.RegularExpressions
Imports Microsoft.CodeAnalysis.VisualBasic.ValidateRegexString
Imports Roslyn.Test.Utilities
Imports Xunit
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.ValidateRegexString
Public Class ValidateRegexStringTests
......
// 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.CSharp.VirtualChars;
using Microsoft.CodeAnalysis.CSharp.EmbeddedLanguages.VirtualChars;
using Microsoft.CodeAnalysis.Diagnostics;
using Microsoft.CodeAnalysis.JsonStringDetector;
......
// 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.CSharp.VirtualChars;
using Microsoft.CodeAnalysis.CSharp.EmbeddedLanguages.VirtualChars;
using Microsoft.CodeAnalysis.Diagnostics;
using Microsoft.CodeAnalysis.ValidateJsonString;
......
// 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.CSharp.VirtualChars;
using Microsoft.CodeAnalysis.CSharp.EmbeddedLanguages.VirtualChars;
using Microsoft.CodeAnalysis.Diagnostics;
using Microsoft.CodeAnalysis.ValidateRegexString;
......
......@@ -4,15 +4,19 @@
using System.Collections.Immutable;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.EmbeddedLanguages.Common;
using Microsoft.CodeAnalysis.EmbeddedLanguages.RegularExpressions;
using Microsoft.CodeAnalysis.EmbeddedLanguages.VirtualChars;
using Microsoft.CodeAnalysis.LanguageServices;
using Microsoft.CodeAnalysis.RegularExpressions;
using Microsoft.CodeAnalysis.Shared.Extensions;
using Microsoft.CodeAnalysis.Text;
using Microsoft.CodeAnalysis.VirtualChars;
using Roslyn.Utilities;
namespace Microsoft.CodeAnalysis.DocumentHighlighting
{
using static EmbeddedSyntaxHelpers;
using RegexToken = EmbeddedSyntaxToken<RegexKind>;
internal abstract partial class AbstractDocumentHighlightsService : IDocumentHighlightsService
{
private async Task<ImmutableArray<DocumentHighlights>> TryGetRegexPatternHighlightsAsync(
......@@ -108,7 +112,7 @@ internal abstract partial class AbstractDocumentHighlightsService : IDocumentHig
{
return ImmutableArray.Create(new DocumentHighlights(document,
ImmutableArray.Create(
new HighlightSpan(RegexHelpers.GetSpan(node), HighlightSpanKind.None),
new HighlightSpan(node.GetSpan(), HighlightSpanKind.None),
new HighlightSpan(captureSpan, HighlightSpanKind.None))));
}
......@@ -133,7 +137,7 @@ private RegexEscapeNode FindReferenceNode(RegexNode node, VirtualChar virtualCha
node.Kind == RegexKind.CaptureEscape ||
node.Kind == RegexKind.KCaptureEscape)
{
if (RegexHelpers.Contains(node, virtualChar))
if (node.Contains(virtualChar))
{
return (RegexEscapeNode)node;
}
......
......@@ -4,9 +4,9 @@
using System.Threading;
using Microsoft.CodeAnalysis.CodeStyle;
using Microsoft.CodeAnalysis.Diagnostics;
using Microsoft.CodeAnalysis.EmbeddedLanguages.VirtualChars;
using Microsoft.CodeAnalysis.Json;
using Microsoft.CodeAnalysis.LanguageServices;
using Microsoft.CodeAnalysis.VirtualChars;
namespace Microsoft.CodeAnalysis.JsonStringDetector
{
......
......@@ -3,9 +3,9 @@
using System.Threading;
using Microsoft.CodeAnalysis.CodeStyle;
using Microsoft.CodeAnalysis.Diagnostics;
using Microsoft.CodeAnalysis.EmbeddedLanguages.VirtualChars;
using Microsoft.CodeAnalysis.Json;
using Microsoft.CodeAnalysis.LanguageServices;
using Microsoft.CodeAnalysis.VirtualChars;
namespace Microsoft.CodeAnalysis.ValidateJsonString
{
......
......@@ -4,8 +4,8 @@
using Microsoft.CodeAnalysis.CodeStyle;
using Microsoft.CodeAnalysis.Diagnostics;
using Microsoft.CodeAnalysis.LanguageServices;
using Microsoft.CodeAnalysis.RegularExpressions;
using Microsoft.CodeAnalysis.VirtualChars;
using Microsoft.CodeAnalysis.EmbeddedLanguages.RegularExpressions;
using Microsoft.CodeAnalysis.EmbeddedLanguages.VirtualChars;
namespace Microsoft.CodeAnalysis.ValidateRegexString
{
......
......@@ -2,7 +2,7 @@
Imports Microsoft.CodeAnalysis.Diagnostics
Imports Microsoft.CodeAnalysis.JsonStringDetector
Imports Microsoft.CodeAnalysis.VisualBasic.VirtualChars
Imports Microsoft.CodeAnalysis.VisualBasic.EmbeddedLanguages.VirtualChars
Namespace Microsoft.CodeAnalysis.VisualBasic.JsonStringDetector
<DiagnosticAnalyzer(LanguageNames.VisualBasic)>
......
......@@ -2,7 +2,7 @@
Imports Microsoft.CodeAnalysis.Diagnostics
Imports Microsoft.CodeAnalysis.ValidateJsonString
Imports Microsoft.CodeAnalysis.VisualBasic.VirtualChars
Imports Microsoft.CodeAnalysis.VisualBasic.EmbeddedLanguages.VirtualChars
Namespace Microsoft.CodeAnalysis.VisualBasic.ValidateRegexString
<DiagnosticAnalyzer(LanguageNames.VisualBasic)>
......
......@@ -2,7 +2,7 @@
Imports Microsoft.CodeAnalysis.Diagnostics
Imports Microsoft.CodeAnalysis.ValidateRegexString
Imports Microsoft.CodeAnalysis.VisualBasic.VirtualChars
Imports Microsoft.CodeAnalysis.VisualBasic.EmbeddedLanguages.VirtualChars
Namespace Microsoft.CodeAnalysis.VisualBasic.ValidateRegexString
<DiagnosticAnalyzer(LanguageNames.VisualBasic)>
......
......@@ -5,16 +5,15 @@
using Microsoft.CodeAnalysis.Editing;
using Microsoft.CodeAnalysis.Editor.CSharp.SplitStringLiteral;
using Microsoft.CodeAnalysis.Editor.Shared.Options;
using Microsoft.CodeAnalysis.EmbeddedLanguages.RegularExpressions;
using Microsoft.CodeAnalysis.ExtractMethod;
using Microsoft.CodeAnalysis.Fading;
using Microsoft.CodeAnalysis.ImplementType;
using Microsoft.CodeAnalysis.Json;
using Microsoft.CodeAnalysis.RegularExpressions;
using Microsoft.CodeAnalysis.Remote;
using Microsoft.CodeAnalysis.Structure;
using Microsoft.CodeAnalysis.SymbolSearch;
using Microsoft.CodeAnalysis.ValidateFormatString;
using Microsoft.CodeAnalysis.ValidateRegexString;
using Microsoft.VisualStudio.LanguageServices.Implementation.Options;
namespace Microsoft.VisualStudio.LanguageServices.CSharp.Options
......
......@@ -3,11 +3,11 @@
Imports Microsoft.CodeAnalysis
Imports Microsoft.CodeAnalysis.Editing
Imports Microsoft.CodeAnalysis.Editor.Shared.Options
Imports Microsoft.CodeAnalysis.EmbeddedLanguages.RegularExpressions
Imports Microsoft.CodeAnalysis.ExtractMethod
Imports Microsoft.CodeAnalysis.Fading
Imports Microsoft.CodeAnalysis.ImplementType
Imports Microsoft.CodeAnalysis.Json
Imports Microsoft.CodeAnalysis.RegularExpressions
Imports Microsoft.CodeAnalysis.Remote
Imports Microsoft.CodeAnalysis.Structure
Imports Microsoft.CodeAnalysis.SymbolSearch
......
......@@ -4,7 +4,7 @@
using System.Diagnostics;
using System.Threading;
using Microsoft.CodeAnalysis.Classification;
using Microsoft.CodeAnalysis.CSharp.VirtualChars;
using Microsoft.CodeAnalysis.CSharp.EmbeddedLanguages.VirtualChars;
using Microsoft.CodeAnalysis.PooledObjects;
namespace Microsoft.CodeAnalysis.CSharp.Classification.Classifiers
......
......@@ -4,7 +4,7 @@
using System.Diagnostics;
using System.Threading;
using Microsoft.CodeAnalysis.Classification;
using Microsoft.CodeAnalysis.CSharp.VirtualChars;
using Microsoft.CodeAnalysis.CSharp.EmbeddedLanguages.VirtualChars;
using Microsoft.CodeAnalysis.PooledObjects;
namespace Microsoft.CodeAnalysis.CSharp.Classification.Classifiers
......
// 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;
using Microsoft.CodeAnalysis.EmbeddedLanguages.Common;
using Microsoft.CodeAnalysis.EmbeddedLanguages.VirtualChars;
using Microsoft.CodeAnalysis.Json;
using Microsoft.CodeAnalysis.LanguageServices;
using Microsoft.CodeAnalysis.PooledObjects;
using Microsoft.CodeAnalysis.VirtualChars;
namespace Microsoft.CodeAnalysis.Classification
{
using static EmbeddedSyntaxHelpers;
using JsonToken = EmbeddedSyntaxToken<JsonKind>;
using JsonTrivia = EmbeddedSyntaxTrivia<JsonKind>;
internal static class CommonJsonPatternTokenClassifier
{
private static ObjectPool<Visitor> _visitorPool = new ObjectPool<Visitor>(() => new Visitor());
......@@ -89,7 +95,7 @@ private static void AddTriviaClassifications(JsonTrivia trivia, ArrayBuilder<Cla
trivia.VirtualChars.Length > 0)
{
result.Add(new ClassifiedSpan(
ClassificationTypeNames.JsonComment, JsonHelpers.GetSpan(trivia.VirtualChars)));
ClassificationTypeNames.JsonComment, GetSpan(trivia.VirtualChars)));
}
}
......@@ -101,7 +107,7 @@ private void AddClassification(JsonToken token, string typeName)
{
if (!token.IsMissing)
{
Result.Add(new ClassifiedSpan(typeName, JsonHelpers.GetSpan(token)));
Result.Add(new ClassifiedSpan(typeName, token.GetSpan()));
}
}
......
......@@ -2,13 +2,19 @@
using System.Linq;
using System.Threading;
using Microsoft.CodeAnalysis.EmbeddedLanguages.Common;
using Microsoft.CodeAnalysis.EmbeddedLanguages.RegularExpressions;
using Microsoft.CodeAnalysis.EmbeddedLanguages.VirtualChars;
using Microsoft.CodeAnalysis.LanguageServices;
using Microsoft.CodeAnalysis.PooledObjects;
using Microsoft.CodeAnalysis.RegularExpressions;
using Microsoft.CodeAnalysis.VirtualChars;
namespace Microsoft.CodeAnalysis.Classification
{
using static EmbeddedSyntaxHelpers;
using RegexToken = EmbeddedSyntaxToken<RegexKind>;
using RegexTrivia = EmbeddedSyntaxTrivia<RegexKind>;
internal static class CommonRegexPatternTokenClassifier
{
private static ObjectPool<Visitor> _visitorPool = new ObjectPool<Visitor>(() => new Visitor());
......@@ -80,7 +86,7 @@ private static void AddTriviaClassifications(RegexTrivia trivia, ArrayBuilder<Cl
trivia.VirtualChars.Length > 0)
{
result.Add(new ClassifiedSpan(
ClassificationTypeNames.RegexComment, RegexHelpers.GetSpan(trivia.VirtualChars)));
ClassificationTypeNames.RegexComment, GetSpan(trivia.VirtualChars)));
}
}
......@@ -92,7 +98,7 @@ private void AddClassification(RegexToken token, string typeName)
{
if (!token.IsMissing)
{
Result.Add(new ClassifiedSpan(typeName, RegexHelpers.GetSpan(token)));
Result.Add(new ClassifiedSpan(typeName, token.GetSpan()));
}
}
......@@ -298,7 +304,7 @@ public void Visit(RegexPosixPropertyNode node)
// classify the end part as a comment.
Result.Add(new ClassifiedSpan(node.TextToken.VirtualChars[0].Span, ClassificationTypeNames.RegexText));
Result.Add(new ClassifiedSpan(
RegexHelpers.GetSpan(node.TextToken.VirtualChars[1], node.TextToken.VirtualChars.Last()),
GetSpan(node.TextToken.VirtualChars[1], node.TextToken.VirtualChars.Last()),
ClassificationTypeNames.RegexComment));
}
......
......@@ -8,12 +8,12 @@
using System.Runtime.CompilerServices;
using System.Text.RegularExpressions;
using System.Threading;
using Microsoft.CodeAnalysis.EmbeddedLanguages.VirtualChars;
using Microsoft.CodeAnalysis.LanguageServices;
using Microsoft.CodeAnalysis.Shared.Extensions;
using Microsoft.CodeAnalysis.VirtualChars;
using Roslyn.Utilities;
namespace Microsoft.CodeAnalysis.RegularExpressions
namespace Microsoft.CodeAnalysis.EmbeddedLanguages.RegularExpressions
{
/// <summary>
/// Helper class to detect regex pattern tokens in a document efficiently.
......
......@@ -7,9 +7,9 @@
using System.Runtime.CompilerServices;
using System.Text.RegularExpressions;
using System.Threading;
using Microsoft.CodeAnalysis.EmbeddedLanguages.VirtualChars;
using Microsoft.CodeAnalysis.LanguageServices;
using Microsoft.CodeAnalysis.Shared.Extensions;
using Microsoft.CodeAnalysis.VirtualChars;
using Roslyn.Utilities;
namespace Microsoft.CodeAnalysis.Json
......
......@@ -328,5 +328,8 @@
<PackageReference Include="System.Threading.Tasks.Parallel" Version="$(SystemThreadingTasksParallelVersion)" />
<PackageReference Include="System.Threading.Thread" Version="$(SystemThreadingThreadVersion)" />
</ItemGroup>
<ItemGroup>
<Folder Include="RegularExpressions\" />
</ItemGroup>
<Import Project="..\..\..\Dependencies\PooledObjects\Microsoft.CodeAnalysis.PooledObjects.projitems" Label="Shared" />
</Project>
......@@ -3,7 +3,7 @@
Imports System.Collections.Immutable
Imports System.Threading
Imports Microsoft.CodeAnalysis.Classification
Imports Microsoft.CodeAnalysis.VisualBasic.VirtualChars
Imports Microsoft.CodeAnalysis.VisualBasic.EmbeddedLanguages.VirtualChars
Imports Microsoft.CodeAnalysis.PooledObjects
Namespace Microsoft.CodeAnalysis.VisualBasic.Classification.Classifiers
......
......@@ -4,7 +4,7 @@ Imports System.Collections.Immutable
Imports System.Threading
Imports Microsoft.CodeAnalysis.Classification
Imports Microsoft.CodeAnalysis.PooledObjects
Imports Microsoft.CodeAnalysis.VisualBasic.VirtualChars
Imports Microsoft.CodeAnalysis.VisualBasic.EmbeddedLanguages.VirtualChars
Namespace Microsoft.CodeAnalysis.VisualBasic.Classification.Classifiers
Friend Class RegexPatternTokenClassifier
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册