2 instantiations of VirtualChar
Microsoft.CodeAnalysis.Workspaces (2)
VirtualChar.cs (2)
55=> new(rune, surrogateChar: default, span); 67return new VirtualChar(rune: Rune.ReplacementChar, surrogateChar, span);
214 references to VirtualChar
Microsoft.CodeAnalysis.CSharp.Features (15)
ConvertBetweenRegularAndVerbatimString\AbstractConvertBetweenRegularAndVerbatimStringCodeRefactoringProvider.cs (5)
106foreach (var ch in chars) 117static bool ShouldDouble(VirtualChar ch, bool isInterpolation) 129private static bool IsOpenOrCloseBrace(VirtualChar ch) 138foreach (var ch in chars) 174foreach (var ch in chars)
ConvertToRawString\ConvertRegularStringToRawStringCodeRefactoringProvider.cs (5)
315foreach (var ch in characters) 348var ch = characters[i]; 402var result = ImmutableSegmentedList.CreateBuilder<VirtualChar>(); 425private static void AddRange(ImmutableSegmentedList<VirtualChar>.Builder result, VirtualCharSequence sequence) 427foreach (var c in sequence)
ConvertToRawString\ConvertToRawStringHelpers.cs (5)
34public static bool IsCSharpNewLine(VirtualChar ch) 37public static bool IsCSharpWhitespace(VirtualChar ch) 50private static bool AllEscapesAre(VirtualCharSequence sequence, Func<VirtualChar, bool> predicate) 54foreach (var ch in sequence) 80public static bool CanConvert(VirtualChar ch)
Microsoft.CodeAnalysis.CSharp.Workspaces (9)
CSharpVirtualCharService.cs (8)
133var result = ImmutableSegmentedList.CreateBuilder<VirtualChar>(); 201var result = ImmutableSegmentedList.CreateBuilder<VirtualChar>(); 288var runeResults = ImmutableSegmentedList.CreateBuilder<VirtualChar>(); 295private static void ConvertCharactersToRunes(ArrayBuilder<(char ch, TextSpan span)> charResults, ImmutableSegmentedList<VirtualChar>.Builder runeResults) 304runeResults.Add(VirtualChar.Create(rune, span)); 315runeResults.Add(VirtualChar.Create(rune, TextSpan.FromBounds(span.Start, nextSpan.End))); 323runeResults.Add(VirtualChar.Create(ch, span)); 338public override bool TryGetEscapeCharacter(VirtualChar ch, out char escapedChar)
RuneExtensions.cs (1)
14public static bool TryGetEscapeCharacter(this VirtualChar ch, out char escapedChar)
Microsoft.CodeAnalysis.CSharp.Workspaces.UnitTests (5)
EmbeddedLanguages\VirtualChars\CSharpVirtualCharServiceTests.cs (5)
57foreach (var ch in virtualChars) 84foreach (var ch in virtualChars) 90private static string ConvertToString(VirtualChar vc) 93private static string ConvertRuneToString(VirtualChar c) 98private static bool PrintAsUnicodeEscape(VirtualChar c)
Microsoft.CodeAnalysis.EditorFeatures.UnitTests (2)
EmbeddedLanguages\StackFrame\StackFrameParserTests.Utilities.cs (2)
97List<VirtualChar> enumeratedParsedCharacters = new(); 101foreach (var ch in charSeq)
Microsoft.CodeAnalysis.ExternalAccess.AspNetCore (11)
EmbeddedLanguages\AspNetCoreVirtualChar.cs (10)
14internal readonly VirtualChar VirtualChar; 16internal AspNetCoreVirtualChar(VirtualChar virtualChar) 31/// <inheritdoc cref="VirtualChar.SurrogateChar"/> 34/// <inheritdoc cref="VirtualChar.Span"/> 37/// <inheritdoc cref="VirtualChar.Value"/> 40/// <inheritdoc cref="VirtualChar.ToString"/> 43/// <inheritdoc cref="VirtualChar.Equals(object)"/> 46/// <inheritdoc cref="VirtualChar.Equals(VirtualChar)"/> 49/// <inheritdoc cref="VirtualChar.GetHashCode"/>
EmbeddedLanguages\AspNetCoreVirtualCharSequence.cs (1)
40public AspNetCoreVirtualChar? Find(int position) => (_virtualCharSequence.Find(position) is VirtualChar c) ? new(c) : null;
Microsoft.CodeAnalysis.Features (80)
EmbeddedLanguages\Classification\AbstractFallbackEmbeddedLanguageClassifier.cs (1)
46foreach (var vc in virtualChars)
EmbeddedLanguages\DateAndTime\EmbeddedCompletionContext.cs (1)
62foreach (var ch in virtualChars)
EmbeddedLanguages\Json\JsonLexer.cs (7)
32public readonly VirtualChar CurrentChar => Text[Position]; 88var openChar = this.CurrentChar; 94var currentCh = this.CurrentChar; 131var currentCh = this.CurrentChar; 147var ch = this.CurrentChar; 162private static bool IsHexDigit(VirtualChar c) 176static bool IsNotPartOfText(VirtualChar ch)
EmbeddedLanguages\Json\JsonParser.cs (3)
26/// Parser used for reading in a sequence of <see cref="VirtualChar"/>s, and producing a <see 491var firstChar = token.VirtualChars[0]; 544private static bool IsDigit(VirtualChar ch)
EmbeddedLanguages\Json\JsonParser.JsonNetSyntaxChecks.cs (4)
69var firstChar = chars[0]; 114foreach (var vc in nameToken.VirtualChars) 156foreach (var ch in textToken.VirtualChars) 165private static bool IsLegalPropertyNameChar(VirtualChar ch)
EmbeddedLanguages\Json\JsonParser.StrictSyntaxChecker.cs (1)
91foreach (var ch in trivia.VirtualChars)
EmbeddedLanguages\Json\LanguageServices\JsonBraceMatcher.cs (4)
64var ch = virtualChar.Value; 70private static BraceMatchingResult? FindBraceHighlights(JsonTree tree, VirtualChar ch) 73private static BraceMatchingResult? FindBraceMatchingResult(JsonNode node, VirtualChar ch) 112private static bool Matches(JsonToken openToken, JsonToken closeToken, VirtualChar ch)
EmbeddedLanguages\RegularExpressions\LanguageServices\RegexBraceMatcher.cs (12)
62var ch = virtualChar.Value; 76private static BraceMatchingResult? FindCommentBraces(RegexTree tree, VirtualChar ch) 82var firstChar = trivia.Value.VirtualChars[0]; 83var lastChar = trivia.Value.VirtualChars[trivia.Value.VirtualChars.Length - 1]; 89private static BraceMatchingResult? FindGroupingBraces(RegexTree tree, VirtualChar ch) 95private static BraceMatchingResult? FindCharacterClassBraces(RegexTree tree, VirtualChar ch) 101private static RegexGroupingNode? FindGroupingNode(RegexNode node, VirtualChar ch) 105private static RegexBaseCharacterClassNode? FindCharacterClassNode(RegexNode node, VirtualChar ch) 109private static TNode? FindNode<TNode>(RegexNode node, VirtualChar ch, Func<TNode, VirtualChar, bool> predicate) 128private static RegexTrivia? FindTrivia(RegexNode node, VirtualChar ch) 152private static RegexTrivia? TryGetTrivia(ImmutableArray<RegexTrivia> triviaList, VirtualChar ch)
EmbeddedLanguages\RegularExpressions\LanguageServices\RegexDocumentHighlighter.cs (3)
75var ch = virtualChar.Value; 79private ImmutableArray<HighlightSpan> FindReferenceHighlights(RegexTree tree, VirtualChar ch) 126private RegexEscapeNode? FindReferenceNode(RegexNode node, VirtualChar virtualChar)
EmbeddedLanguages\RegularExpressions\LanguageServices\RegexEmbeddedCompletionProvider.cs (5)
175var previousVirtualChar = previousVirtualCharOpt.Value; 250EmbeddedCompletionContext context, RegexTree tree, VirtualChar previousVirtualChar) 258var escapeChar = tree.Text[index - 1]; 395RegexNode parent, VirtualChar ch) 419private static bool IsInCharacterClass(RegexNode start, VirtualChar ch)
EmbeddedLanguages\RegularExpressions\RegexCharClass.cs (1)
192public static bool IsBoundaryWordChar(VirtualChar r)
EmbeddedLanguages\RegularExpressions\RegexHelpers.cs (11)
40public static VirtualChar MapEscapeChar(VirtualChar ch) 43'a' => VirtualChar.Create(new Rune('\u0007'), ch.Span), // bell 44'b' => VirtualChar.Create(new Rune('\b'), ch.Span), // backspace 45'e' => VirtualChar.Create(new Rune('\u001B'), ch.Span), // escape 46'f' => VirtualChar.Create(new Rune('\f'), ch.Span), // form feed 47'n' => VirtualChar.Create(new Rune('\n'), ch.Span), // new line 48'r' => VirtualChar.Create(new Rune('\r'), ch.Span), // carriage return 49't' => VirtualChar.Create(new Rune('\t'), ch.Span), // tab 50'v' => VirtualChar.Create(new Rune('\u000B'), ch.Span), // vertical tab 58var ch = node.TypeToken.VirtualChars[0];
EmbeddedLanguages\RegularExpressions\RegexLexer.cs (10)
23/// Produces tokens from the sequence of <see cref="VirtualChar"/> characters. Unlike the 49public readonly VirtualChar CurrentChar => Position < Text.Length ? Text[Position] : default; 65var ch = this.CurrentChar; 71private static RegexKind GetKind(VirtualChar ch) 217private static bool IsBlank(VirtualChar ch) 260private static bool IsEscapeCategoryChar(VirtualChar ch) 352private static bool IsOptionChar(VirtualChar ch) 405public static bool IsHexChar(VirtualChar ch) 410private static bool IsDecimalDigit(VirtualChar ch) 413private static bool IsOctalDigit(VirtualChar ch)
EmbeddedLanguages\RegularExpressions\RegexParser.CaptureInfoAnalyzer.cs (1)
142var lastChar = grouping.CloseParenToken.IsMissing
EmbeddedLanguages\RegularExpressions\RegexParser.cs (8)
27/// Produces a <see cref="RegexTree"/> from a sequence of <see cref="VirtualChar"/> characters. 1181foreach (var ch in optionsToken.VirtualChars) 1205private static RegexOptions OptionFromCode(VirtualChar ch) 1410foreach (var vc in hexText.VirtualChars) 1420private static int HexValue(VirtualChar ch) 1485var nextChar = _currentToken.VirtualChars[0]; 1659var ch = _currentToken.VirtualChars[0]; 1848var ch = _currentToken.VirtualChars[0];
EmbeddedLanguages\StackFrame\StackFrameLexer.cs (8)
49foreach (var c in text) 60public readonly VirtualChar CurrentChar => Position < Text.Length ? Text[Position] : default; 91var ch = CurrentChar; 124var ch = Text[Position]; 380public static bool IsBlank(VirtualChar ch) 396private static bool IsAsciiAlphaCharacter(VirtualChar ch) 479private static StackFrameKind GetKind(VirtualChar ch) 510private static bool IsNumber(VirtualChar ch)
Microsoft.CodeAnalysis.VisualBasic.Workspaces (1)
VisualBasicVirtualCharService.vb (1)
18Public Overrides Function TryGetEscapeCharacter(ch As VirtualChar, ByRef escapedChar As Char) As Boolean
Microsoft.CodeAnalysis.VisualBasic.Workspaces.UnitTests (1)
EmbeddedLanguages\VirtualChars\VisualBasicVirtualCharServiceTests.vb (1)
90Private Shared Function ConvertToString(vc As VirtualChar) As String
Microsoft.CodeAnalysis.Workspaces (90)
AbstractVirtualCharService.cs (15)
17public abstract bool TryGetEscapeCharacter(VirtualChar ch, out char escapedChar); 85var currentVC = result[0]; 98var nextVC = result[i]; 107var nextVC = result[i]; 113var lastVC = result.Last(); 161var result = ImmutableSegmentedList.CreateBuilder<VirtualChar>(); 168result.Add(VirtualChar.Create(new Rune('"'), new TextSpan(offset + index, 2))); 177result.Add(VirtualChar.Create(new Rune(tokenText[index]), span)); 192protected static int ConvertTextAtIndexToRune(string tokenText, int index, ImmutableSegmentedList<VirtualChar>.Builder result, int offset) 195protected static int ConvertTextAtIndexToRune(SourceText tokenText, int index, ImmutableSegmentedList<VirtualChar>.Builder result, int offset) 199T tokenText, int index, TTextInfo info, ImmutableSegmentedList<VirtualChar>.Builder result, int offset) 207result.Add(VirtualChar.Create(rune, new TextSpan(offset + index, 1))); 214result.Add(VirtualChar.Create(rune, new TextSpan(offset + index, 2))); 221result.Add(VirtualChar.Create(ch, new TextSpan(offset + index, 1))); 232ImmutableSegmentedList<VirtualChar>.Builder result)
EmbeddedSyntaxHelpers.cs (2)
18public static TextSpan GetSpan(VirtualChar firstChar, VirtualChar lastChar)
EmbeddedSyntaxNode.cs (1)
125public bool Contains(VirtualChar virtualChar)
IVirtualCharService.cs (4)
29/// Takes in a string token and return the <see cref="VirtualChar"/>s corresponding to each 50/// VirtualChar in the result array with a matching <see cref="VirtualChar.Rune"/> property. 51/// Similarly, each VirtualChar's <see cref="VirtualChar.Span"/> will abut each other, and 70bool TryGetEscapeCharacter(VirtualChar ch, out char escapeChar);
VirtualChar.cs (31)
13/// <see cref="VirtualChar"/> provides a uniform view of a language's string token characters regardless if they 17/// (<c>\</c> and <c>t</c>). <see cref="VirtualChar"/> will represent both, providing the raw <see cref="char"/> 27internal readonly struct VirtualChar : IEquatable<VirtualChar>, IComparable<VirtualChar>, IComparable<char> 30/// The value of this <see cref="VirtualChar"/> as a <see cref="Rune"/> if such a representation is possible. 46/// cref="VirtualChar"/>. 51/// Creates a new <see cref="VirtualChar"/> from the provided <paramref name="rune"/>. This operation cannot 54public static VirtualChar Create(Rune rune, TextSpan span) 58/// Creates a new <see cref="VirtualChar"/> from an unpaired high or low surrogate character. This will throw 62public static VirtualChar Create(char surrogateChar, TextSpan span) 101public static bool operator ==(VirtualChar char1, VirtualChar char2) 104public static bool operator !=(VirtualChar char1, VirtualChar char2) 107public static bool operator ==(VirtualChar ch1, char ch2) 110public static bool operator !=(VirtualChar ch1, char ch2) 114=> obj is VirtualChar vc && Equals(vc); 116public bool Equals(VirtualChar other) 158public int CompareTo(VirtualChar other) 161public static bool operator <(VirtualChar ch1, VirtualChar ch2) 164public static bool operator <=(VirtualChar ch1, VirtualChar ch2) 167public static bool operator >(VirtualChar ch1, VirtualChar ch2) 170public static bool operator >=(VirtualChar ch1, VirtualChar ch2) 176public static bool operator <(VirtualChar ch1, char ch2) 179public static bool operator <=(VirtualChar ch1, char ch2) 182public static bool operator >(VirtualChar ch1, char ch2) 185public static bool operator >=(VirtualChar ch1, char ch2)
VirtualCharSequence.Chunks.cs (12)
16/// Abstraction over a contiguous chunk of <see cref="VirtualChar"/>s. This 17/// is used so we can expose <see cref="VirtualChar"/>s over an <see cref="ImmutableArray{VirtualChar}"/> 28public abstract VirtualChar this[int index] { get; } 29public abstract VirtualChar? Find(int position); 39private readonly ImmutableSegmentedList<VirtualChar> _array; 41public ImmutableSegmentedListChunk(ImmutableSegmentedList<VirtualChar> array) 45public override VirtualChar this[int index] => _array[index]; 47public override VirtualChar? Find(int position) 100public override VirtualChar? Find(int position) 109public override VirtualChar this[int index] 126? VirtualChar.Create(ch, span) 127: VirtualChar.Create(new Rune(ch), span);
VirtualCharSequence.cs (23)
30public static readonly VirtualCharSequence Empty = Create(ImmutableSegmentedList<VirtualChar>.Empty); 32public static VirtualCharSequence Create(ImmutableSegmentedList<VirtualChar> virtualChars) 72/// Gets the <see cref="VirtualChar"/> at the specified index. 74public VirtualChar this[int index] => _leafCharacters[_span.Start + index]; 92public VirtualChar First() => this[0]; 93public VirtualChar Last() => this[^1]; 99public VirtualChar? Find(int position) 102public bool Contains(VirtualChar @char) 105public int IndexOf(VirtualChar @char) 108foreach (var ch in this) 119public VirtualChar? FirstOrNull(Func<VirtualChar, bool> predicate) 121foreach (var ch in this) 130public VirtualChar? LastOrNull(Func<VirtualChar, bool> predicate) 134var ch = this[i]; 142public bool Any(Func<VirtualChar, bool> predicate) 144foreach (var ch in this) 153public bool All(Func<VirtualChar, bool> predicate) 155foreach (var ch in this) 167public VirtualCharSequence SkipWhile(Func<VirtualChar, bool> predicate) 170foreach (var ch in this) 187foreach (var ch in this)
VirtualCharSequence.Enumerator.cs (2)
13public struct Enumerator : IEnumerator<VirtualChar> 25public readonly VirtualChar Current => _virtualCharSequence[_position];