145 references to StackFrameKind
Microsoft.CodeAnalysis.Features (145)
EmbeddedLanguages\StackFrame\StackFrameCompilationUnit.cs (3)
10
using StackFrameNodeOrToken = EmbeddedSyntaxNodeOrToken<
StackFrameKind
, StackFrameNode>;
11
using StackFrameToken = EmbeddedSyntaxToken<
StackFrameKind
>;
18
internal sealed class StackFrameCompilationUnit(StackFrameMethodDeclarationNode methodDeclaration, StackFrameFileInformationNode? fileInformationExpression, StackFrameToken endOfLineToken) : StackFrameNode(
StackFrameKind
.CompilationUnit)
EmbeddedLanguages\StackFrame\StackFrameExtensions.cs (1)
10
using StackFrameTrivia = EmbeddedSyntaxTrivia<
StackFrameKind
>;
EmbeddedLanguages\StackFrame\StackFrameLexer.cs (51)
18
using StackFrameToken = EmbeddedSyntaxToken<
StackFrameKind
>;
19
using StackFrameTrivia = EmbeddedSyntaxTrivia<
StackFrameKind
>;
78
return CreateTrivia(
StackFrameKind
.SkippedTextTrivia, GetSubSequenceToCurrentPos(start));
117
StackFrameKind
.IdentifierToken,
127
return CreateToken(
StackFrameKind
.EndOfFrame, VirtualCharSequence.Empty);
141
public bool ScanCurrentCharAsTokenIfMatch(
StackFrameKind
kind, out StackFrameToken token)
151
public bool ScanCurrentCharAsTokenIfMatch(
StackFrameKind
kind, bool scanTrailingWhitespace, out StackFrameToken token)
177
public bool ScanCurrentCharAsTokenIfMatch(Func<
StackFrameKind
, bool> isMatch, out StackFrameToken token)
194
var result = TryScanStringTrivia(language.At,
StackFrameKind
.AtTrivia);
208
var result = TryScanStringTrivia(language.In,
StackFrameKind
.InTrivia);
222
var result = TryScanStringTrivia(language.Line,
StackFrameKind
.LineTrivia);
233
/// Attempts to parse <see cref="
StackFrameKind
.InTrivia"/> and a path following https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file#file-and-directory-names
282
return CreateToken(
StackFrameKind
.PathToken, inTrivia.ToImmutableArray(), GetSubSequenceToCurrentPos(startPosition));
286
/// Returns a number token with the <see cref="
StackFrameKind
.LineTrivia"/> and remaining <see cref="
StackFrameKind
.SkippedTextTrivia"/>
323
return CreateToken(
StackFrameKind
.NumberToken, GetSubSequenceToCurrentPos(start));
351
return CreateToken(
StackFrameKind
.GeneratedNameSeparatorToken, GetSubSequenceToCurrentPos(start));
382
return CreateToken(
StackFrameKind
.GeneratedNameSuffixToken, GetSubSequenceToCurrentPos(start));
404
public static StackFrameToken CreateToken(
StackFrameKind
kind, VirtualCharSequence virtualChars)
407
public static StackFrameToken CreateToken(
StackFrameKind
kind, ImmutableArray<StackFrameTrivia> leadingTrivia, VirtualCharSequence virtualChars)
410
public static StackFrameToken CreateToken(
StackFrameKind
kind, ImmutableArray<StackFrameTrivia> leadingTrivia, VirtualCharSequence virtualChars, ImmutableArray<StackFrameTrivia> trailingTrivia)
413
private static StackFrameTrivia CreateTrivia(
StackFrameKind
kind, VirtualCharSequence virtualChars)
416
private static StackFrameTrivia CreateTrivia(
StackFrameKind
kind, VirtualCharSequence virtualChars, ImmutableArray<EmbeddedDiagnostic> diagnostics)
454
private StackFrameTrivia? TryScanStringTrivia(string valueToLookFor,
StackFrameKind
triviaKind)
467
private StackFrameToken? TryScanStringToken(string valueToLookFor,
StackFrameKind
tokenKind)
494
return CreateTrivia(
StackFrameKind
.WhitespaceTrivia, GetSubSequenceToCurrentPos(startPosition));
502
return TryScanStringToken(".ctor",
StackFrameKind
.ConstructorToken) ??
503
TryScanStringToken(".cctor",
StackFrameKind
.ConstructorToken);
506
private static
StackFrameKind
GetKind(VirtualChar ch)
511
'&' =>
StackFrameKind
.AmpersandToken,
512
'[' =>
StackFrameKind
.OpenBracketToken,
513
']' =>
StackFrameKind
.CloseBracketToken,
514
'(' =>
StackFrameKind
.OpenParenToken,
515
')' =>
StackFrameKind
.CloseParenToken,
516
'.' =>
StackFrameKind
.DotToken,
517
'+' =>
StackFrameKind
.PlusToken,
518
',' =>
StackFrameKind
.CommaToken,
519
':' =>
StackFrameKind
.ColonToken,
520
'=' =>
StackFrameKind
.EqualsToken,
521
'>' =>
StackFrameKind
.GreaterThanToken,
522
'<' =>
StackFrameKind
.LessThanToken,
523
'-' =>
StackFrameKind
.MinusToken,
524
'\'' =>
StackFrameKind
.SingleQuoteToken,
525
'`' =>
StackFrameKind
.GraveAccentToken,
526
'\\' =>
StackFrameKind
.BackslashToken,
527
'/' =>
StackFrameKind
.ForwardSlashToken,
528
'$' =>
StackFrameKind
.DollarToken,
529
'|' =>
StackFrameKind
.PipeToken,
531
?
StackFrameKind
.WhitespaceTrivia
533
?
StackFrameKind
.NumberToken
534
:
StackFrameKind
.SkippedTextTrivia
EmbeddedLanguages\StackFrame\StackFrameNodeDefinitions.cs (55)
14
using StackFrameNodeOrToken = EmbeddedSyntaxNodeOrToken<
StackFrameKind
, StackFrameNode>;
15
using StackFrameToken = EmbeddedSyntaxToken<
StackFrameKind
>;
17
internal abstract class StackFrameNode : EmbeddedSyntaxNode<
StackFrameKind
, StackFrameNode>
19
protected StackFrameNode(
StackFrameKind
kind) : base(kind)
28
protected StackFrameDeclarationNode(
StackFrameKind
kind) : base(kind)
36
StackFrameParameterList argumentList) : StackFrameDeclarationNode(
StackFrameKind
.MethodDeclaration)
62
protected StackFrameTypeNode(
StackFrameKind
kind) : base(kind)
72
/// is not a type then it should use <see cref="StackFrameToken"/> with <see cref="
StackFrameKind
.IdentifierToken"/>
77
protected StackFrameNameNode(
StackFrameKind
kind) : base(kind)
89
protected StackFrameSimpleNameNode(StackFrameToken identifier,
StackFrameKind
kind) : base(kind)
91
Debug.Assert(identifier.Kind is
StackFrameKind
.IdentifierToken or
StackFrameKind
.ConstructorToken);
105
public StackFrameQualifiedNameNode(StackFrameNameNode left, StackFrameToken dotToken, StackFrameSimpleNameNode right) : base(
StackFrameKind
.MemberAccess)
107
Debug.Assert(dotToken.Kind ==
StackFrameKind
.DotToken);
108
Debug.Assert(left.Kind is not
StackFrameKind
.Constructor);
131
/// The simplest identifier node, which wraps a <see cref="
StackFrameKind
.IdentifierToken" />
133
internal sealed class StackFrameIdentifierNameNode(StackFrameToken identifier) : StackFrameSimpleNameNode(identifier,
StackFrameKind
.TypeIdentifier)
148
internal sealed class StackFrameConstructorNode(StackFrameToken constructor) : StackFrameSimpleNameNode(constructor,
StackFrameKind
.Constructor)
169
/// The "`" token in arity identifiers. Must be <see cref="
StackFrameKind
.GraveAccentToken"/>
178
: base(identifier,
StackFrameKind
.GenericTypeIdentifier)
180
Debug.Assert(graveAccentToken.Kind ==
StackFrameKind
.GraveAccentToken);
181
Debug.Assert(numberToken.Kind ==
StackFrameKind
.NumberToken);
202
protected StackFrameGeneratedNameNode(StackFrameToken identifier,
StackFrameKind
kind) : base(identifier, kind)
220
: base(identifier,
StackFrameKind
.GeneratedIdentifier)
222
Debug.Assert(lessThanToken.Kind ==
StackFrameKind
.LessThanToken);
223
Debug.Assert(greaterThanToken.Kind ==
StackFrameKind
.GreaterThanToken);
224
Debug.Assert(!dollarToken.HasValue || dollarToken.Value.Kind ==
StackFrameKind
.DollarToken);
271
: base(identifier,
StackFrameKind
.LocalMethodIdentifier)
273
Debug.Assert(generatedNameSeparator.Kind ==
StackFrameKind
.GeneratedNameSeparatorToken);
274
Debug.Assert(identifier.Kind ==
StackFrameKind
.IdentifierToken);
275
Debug.Assert(pipeToken.Kind ==
StackFrameKind
.PipeToken);
276
Debug.Assert(suffix.Kind ==
StackFrameKind
.GeneratedNameSuffixToken);
323
public StackFrameArrayTypeNode(StackFrameNameNode typeIdentifier, ImmutableArray<StackFrameArrayRankSpecifier> arrayRankSpecifiers) : base(
StackFrameKind
.ArrayTypeExpression)
350
: base(
StackFrameKind
.ArrayExpression)
353
Debug.Assert(openBracket.Kind ==
StackFrameKind
.OpenBracketToken);
354
Debug.Assert(closeBracket.Kind ==
StackFrameKind
.CloseBracketToken);
355
Debug.Assert(commaTokens.All(static t => t.Kind ==
StackFrameKind
.CommaToken));
397
public readonly EmbeddedSeparatedSyntaxNodeList<
StackFrameKind
, StackFrameNode, StackFrameIdentifierNameNode> TypeArguments;
402
EmbeddedSeparatedSyntaxNodeList<
StackFrameKind
, StackFrameNode, StackFrameIdentifierNameNode> typeArguments,
404
: base(
StackFrameKind
.TypeArgument)
406
Debug.Assert(openToken.Kind is
StackFrameKind
.OpenBracketToken or
StackFrameKind
.LessThanToken);
408
Debug.Assert(openToken.Kind ==
StackFrameKind
.OpenBracketToken ? closeToken.Kind ==
StackFrameKind
.CloseBracketToken : closeToken.Kind ==
StackFrameKind
.GreaterThanToken);
450
: base(
StackFrameKind
.Parameter)
452
Debug.Assert(identifier.Kind ==
StackFrameKind
.IdentifierToken);
472
public readonly EmbeddedSeparatedSyntaxNodeList<
StackFrameKind
, StackFrameNode, StackFrameParameterDeclarationNode> Parameters;
477
EmbeddedSeparatedSyntaxNodeList<
StackFrameKind
, StackFrameNode, StackFrameParameterDeclarationNode> parameters,
479
: base(
StackFrameKind
.ParameterList)
481
Debug.Assert(openToken.Kind ==
StackFrameKind
.OpenParenToken);
482
Debug.Assert(closeToken.Kind ==
StackFrameKind
.CloseParenToken);
519
public StackFrameFileInformationNode(StackFrameToken path, StackFrameToken? colon, StackFrameToken? line) : base(
StackFrameKind
.FileInformation)
521
Debug.Assert(path.Kind ==
StackFrameKind
.PathToken);
523
Debug.Assert(!line.HasValue || line.Value.Kind ==
StackFrameKind
.NumberToken);
EmbeddedLanguages\StackFrame\StackFrameParser.cs (34)
15
using StackFrameNodeOrToken = EmbeddedSyntaxNodeOrToken<
StackFrameKind
, StackFrameNode>;
16
using StackFrameToken = EmbeddedSyntaxToken<
StackFrameKind
>;
90
Contract.ThrowIfFalse(eolToken.Kind ==
StackFrameKind
.EndOfFrame);
188
if (!_lexer.ScanCurrentCharAsTokenIfMatch(
StackFrameKind
.DotToken, out var dotToken))
193
if (lhs.Kind is
StackFrameKind
.Constructor ||
194
lhs is StackFrameQualifiedNameNode { Right.Kind:
StackFrameKind
.Constructor })
255
if (!_lexer.ScanCurrentCharAsTokenIfMatch(
StackFrameKind
.LessThanToken, out var lessThanToken))
260
if (_lexer.CurrentCharAsToken().Kind ==
StackFrameKind
.LessThanToken)
273
if (!_lexer.ScanCurrentCharAsTokenIfMatch(
StackFrameKind
.GreaterThanToken, out var greaterThanToken))
278
if (_lexer.ScanCurrentCharAsTokenIfMatch(
StackFrameKind
.DollarToken, out var dollarToken))
303
if (!_lexer.ScanCurrentCharAsTokenIfMatch(
StackFrameKind
.PipeToken, out var suffixSeparator))
334
if (!_lexer.ScanCurrentCharAsTokenIfMatch(
StackFrameKind
.GraveAccentToken, out var graveAccentToken))
336
if (identifierToken.Kind ==
StackFrameKind
.ConstructorToken)
365
kind => kind is
StackFrameKind
.OpenBracketToken or
StackFrameKind
.LessThanToken,
371
var
closeBracketKind = openToken.Kind is
StackFrameKind
.OpenBracketToken
372
?
StackFrameKind
.CloseBracketToken
373
:
StackFrameKind
.GreaterThanToken;
379
while (currentIdentifier.HasValue && currentIdentifier.Value.Kind ==
StackFrameKind
.IdentifierToken)
388
if (!_lexer.ScanCurrentCharAsTokenIfMatch(
StackFrameKind
.CommaToken, out var commaToken))
407
var separatedList = new EmbeddedSeparatedSyntaxNodeList<
StackFrameKind
, StackFrameNode, StackFrameIdentifierNameNode>(builder.ToImmutable());
421
if (!_lexer.ScanCurrentCharAsTokenIfMatch(
StackFrameKind
.OpenParenToken, scanTrailingWhitespace: true, out var openParen))
426
if (_lexer.ScanCurrentCharAsTokenIfMatch(
StackFrameKind
.CloseParenToken, out var closeParen))
428
return new(openParen, EmbeddedSeparatedSyntaxNodeList<
StackFrameKind
, StackFrameNode, StackFrameParameterDeclarationNode>.Empty, closeParen);
444
if (!_lexer.ScanCurrentCharAsTokenIfMatch(
StackFrameKind
.CommaToken, out var commaToken))
452
if (!_lexer.ScanCurrentCharAsTokenIfMatch(
StackFrameKind
.CloseParenToken, out closeParen))
457
var parameters = new EmbeddedSeparatedSyntaxNodeList<
StackFrameKind
, StackFrameNode, StackFrameParameterDeclarationNode>(builder.ToImmutable());
476
if (CurrentCharAsToken().Kind ==
StackFrameKind
.OpenBracketToken)
510
if (!_lexer.ScanCurrentCharAsTokenIfMatch(
StackFrameKind
.OpenBracketToken, scanTrailingWhitespace: true, out var openBracket))
515
while (_lexer.ScanCurrentCharAsTokenIfMatch(
StackFrameKind
.CommaToken, scanTrailingWhitespace: true, out var commaToken))
520
if (!_lexer.ScanCurrentCharAsTokenIfMatch(
StackFrameKind
.CloseBracketToken, scanTrailingWhitespace: true, out var closeBracket))
544
if (path.Kind ==
StackFrameKind
.None)
549
if (!_lexer.ScanCurrentCharAsTokenIfMatch(
StackFrameKind
.ColonToken, out var colonToken))
EmbeddedLanguages\StackFrame\StackFrameTree.cs (1)
10
internal sealed class StackFrameTree(VirtualCharSequence text, StackFrameCompilationUnit root) : EmbeddedSyntaxTree<
StackFrameKind
, StackFrameNode, StackFrameCompilationUnit>(text, root, [])