本文整理汇总了C#中CSharpSyntaxNode.GetFirstToken方法的典型用法代码示例。如果您正苦于以下问题:C# CSharpSyntaxNode.GetFirstToken方法的具体用法?C# CSharpSyntaxNode.GetFirstToken怎么用?C# CSharpSyntaxNode.GetFirstToken使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CSharpSyntaxNode
的用法示例。
在下文中一共展示了CSharpSyntaxNode.GetFirstToken方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ReportQueryInferenceFailed
internal static void ReportQueryInferenceFailed(CSharpSyntaxNode queryClause, string methodName, BoundExpression receiver, AnalyzedArguments arguments, ImmutableArray<Symbol> symbols, DiagnosticBag diagnostics)
{
string clauseKind = null;
bool multiple = false;
switch (queryClause.Kind())
{
case SyntaxKind.JoinClause:
clauseKind = SyntaxFacts.GetText(SyntaxKind.JoinKeyword);
multiple = true;
break;
case SyntaxKind.LetClause:
clauseKind = SyntaxFacts.GetText(SyntaxKind.LetKeyword);
break;
case SyntaxKind.SelectClause:
clauseKind = SyntaxFacts.GetText(SyntaxKind.SelectKeyword);
break;
case SyntaxKind.WhereClause:
clauseKind = SyntaxFacts.GetText(SyntaxKind.WhereKeyword);
break;
case SyntaxKind.OrderByClause:
case SyntaxKind.AscendingOrdering:
case SyntaxKind.DescendingOrdering:
clauseKind = SyntaxFacts.GetText(SyntaxKind.OrderByKeyword);
multiple = true;
break;
case SyntaxKind.QueryContinuation:
clauseKind = SyntaxFacts.GetText(SyntaxKind.IntoKeyword);
break;
case SyntaxKind.GroupClause:
clauseKind = SyntaxFacts.GetText(SyntaxKind.GroupKeyword) + " " + SyntaxFacts.GetText(SyntaxKind.ByKeyword);
multiple = true;
break;
case SyntaxKind.FromClause:
if (ReportQueryInferenceFailedSelectMany((FromClauseSyntax)queryClause, methodName, receiver, arguments, symbols, diagnostics))
{
return;
}
clauseKind = SyntaxFacts.GetText(SyntaxKind.FromKeyword);
break;
default:
clauseKind = "unknown";
Debug.Assert(false, "invalid query clause kind " + queryClause.Kind());
break;
}
diagnostics.Add(new DiagnosticInfoWithSymbols(
multiple ? ErrorCode.ERR_QueryTypeInferenceFailedMulti : ErrorCode.ERR_QueryTypeInferenceFailed,
new object[] { clauseKind, methodName },
symbols), queryClause.GetFirstToken().GetLocation());
}
示例2: IsInAnonymousFunctionOrQuery
internal static bool IsInAnonymousFunctionOrQuery(int position, CSharpSyntaxNode anonymousFunction)
{
SyntaxToken firstIncluded;
CSharpSyntaxNode body;
switch (anonymousFunction.Kind)
{
case SyntaxKind.SimpleLambdaExpression:
SimpleLambdaExpressionSyntax simple = (SimpleLambdaExpressionSyntax)anonymousFunction;
firstIncluded = simple.Parameter.Identifier;
body = simple.Body;
break;
case SyntaxKind.ParenthesizedLambdaExpression:
ParenthesizedLambdaExpressionSyntax parenthesized = (ParenthesizedLambdaExpressionSyntax)anonymousFunction;
firstIncluded = parenthesized.ParameterList.OpenParenToken;
body = parenthesized.Body;
break;
case SyntaxKind.AnonymousMethodExpression:
AnonymousMethodExpressionSyntax anon = (AnonymousMethodExpressionSyntax)anonymousFunction;
firstIncluded = anon.DelegateKeyword;
body = anon.Block;
break;
default:
// OK, so we have some kind of query clause. They all start with a keyword token, so we'll skip that.
firstIncluded = anonymousFunction.GetFirstToken().GetNextToken();
return IsBetweenTokens(position, firstIncluded, anonymousFunction.GetLastToken().GetNextToken());
}
var bodyStatement = body as StatementSyntax;
var firstExcluded = bodyStatement != null ?
GetFirstExcludedToken(bodyStatement) :
(SyntaxToken)SyntaxNavigator.Instance.GetNextToken(body, predicate: null, stepInto: null);
return IsBetweenTokens(position, firstIncluded, firstExcluded);
}
示例3: GetCallerLocation
private static SourceLocation GetCallerLocation(CSharpSyntaxNode syntax)
{
switch (syntax.Kind)
{
case SyntaxKind.InvocationExpression:
return new SourceLocation(((InvocationExpressionSyntax)syntax).ArgumentList.OpenParenToken);
case SyntaxKind.ObjectCreationExpression:
return new SourceLocation(((ObjectCreationExpressionSyntax)syntax).NewKeyword);
case SyntaxKind.BaseConstructorInitializer:
case SyntaxKind.ThisConstructorInitializer:
return new SourceLocation(((ConstructorInitializerSyntax)syntax).ArgumentList.OpenParenToken);
case SyntaxKind.FromClause:
case SyntaxKind.GroupClause:
case SyntaxKind.JoinClause:
case SyntaxKind.JoinIntoClause:
case SyntaxKind.LetClause:
case SyntaxKind.OrderByClause:
case SyntaxKind.SelectClause:
case SyntaxKind.WhereClause:
return new SourceLocation(syntax.GetFirstToken());
default:
return null;
}
}
示例4: GetCallerLocation
private static SourceLocation GetCallerLocation(CSharpSyntaxNode syntax, ThreeState enableCallerInfo)
{
switch (enableCallerInfo)
{
case ThreeState.False:
return null;
case ThreeState.True:
return new SourceLocation(syntax.GetFirstToken());
}
Debug.Assert(enableCallerInfo == ThreeState.Unknown);
switch (syntax.Kind())
{
case SyntaxKind.InvocationExpression:
return new SourceLocation(((InvocationExpressionSyntax)syntax).ArgumentList.OpenParenToken);
case SyntaxKind.ObjectCreationExpression:
return new SourceLocation(((ObjectCreationExpressionSyntax)syntax).NewKeyword);
case SyntaxKind.BaseConstructorInitializer:
case SyntaxKind.ThisConstructorInitializer:
return new SourceLocation(((ConstructorInitializerSyntax)syntax).ArgumentList.OpenParenToken);
case SyntaxKind.ElementAccessExpression:
return new SourceLocation(((ElementAccessExpressionSyntax)syntax).ArgumentList.OpenBracketToken);
case SyntaxKind.FromClause:
case SyntaxKind.GroupClause:
case SyntaxKind.JoinClause:
case SyntaxKind.JoinIntoClause:
case SyntaxKind.LetClause:
case SyntaxKind.OrderByClause:
case SyntaxKind.SelectClause:
case SyntaxKind.WhereClause:
return new SourceLocation(syntax.GetFirstToken());
default:
return null;
}
}
示例5: ReportQueryInferenceFailed
internal static void ReportQueryInferenceFailed(CSharpSyntaxNode queryClause, string methodName, BoundExpression receiver, AnalyzedArguments arguments, ImmutableArray<Symbol> symbols, DiagnosticBag diagnostics)
{
string clauseKind = null;
bool multiple = false;
switch (queryClause.Kind)
{
case SyntaxKind.JoinClause:
clauseKind = "join"; // TODO: should be ErrorCode.IDS_JoinClause.Localize();
multiple = true;
break;
case SyntaxKind.LetClause:
clauseKind = "let"; // TODO: ErrorCode.IDS_LetClause
break;
case SyntaxKind.SelectClause:
clauseKind = "select"; // TODO ErrorCode.IDS_Select
break;
case SyntaxKind.WhereClause:
clauseKind = "where"; // TODO: ErrorCode.IDS_Where
break;
case SyntaxKind.OrderByClause:
case SyntaxKind.AscendingOrdering:
case SyntaxKind.DescendingOrdering:
clauseKind = "order by"; // TODO: ErrorCode.IDS_OrderByClause
multiple = true;
break;
case SyntaxKind.QueryContinuation:
clauseKind = "into"; // TODO: ErrorCode.IDS_ContinuationClause
break;
case SyntaxKind.GroupClause:
clauseKind = "group by"; // TODO: ErrorCode.IDS_GroupByClause
multiple = true;
break;
case SyntaxKind.FromClause:
if (ReportQueryInferenceFailedSelectMany((FromClauseSyntax)queryClause, methodName, receiver, arguments, symbols, diagnostics))
{
return;
}
clauseKind = "from"; // TODO: ErrorCode.IDS_FromClause
break;
default:
clauseKind = "unknown";
Debug.Assert(false, "invalid query clause kind " + queryClause.Kind);
break;
}
diagnostics.Add(new DiagnosticInfoWithSymbols(
multiple ? ErrorCode.ERR_QueryTypeInferenceFailedMulti : ErrorCode.ERR_QueryTypeInferenceFailed,
new object[] { clauseKind, methodName },
symbols), queryClause.GetFirstToken().GetLocation());
}