本文整理汇总了C#中IfStatementSyntax类的典型用法代码示例。如果您正苦于以下问题:C# IfStatementSyntax类的具体用法?C# IfStatementSyntax怎么用?C# IfStatementSyntax使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
IfStatementSyntax类属于命名空间,在下文中一共展示了IfStatementSyntax类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。
示例1: HasConflictingNames
static bool HasConflictingNames(SyntaxNodeAnalysisContext nodeContext, IfStatementSyntax ifElseStatement)
{
var block = ifElseStatement.Else.Statement as BlockSyntax;
if (block == null || block.Statements.Count == 0)
return false;
var member = ifElseStatement.Ancestors().FirstOrDefault(a => a is MemberDeclarationSyntax);
var priorLocalDeclarations = new List<string>();
foreach (var localDecl in member.DescendantNodes().Where(n => n.SpanStart < ifElseStatement.Else.SpanStart).OfType<LocalDeclarationStatementSyntax>()) {
foreach (var v in localDecl.Declaration.Variables)
priorLocalDeclarations.Add(v.Identifier.ValueText);
}
foreach (var sym in block.Statements)
{
var decl = sym as LocalDeclarationStatementSyntax;
if (decl == null)
continue;
if (priorLocalDeclarations.Contains(s => decl.Declaration.Variables.Any(v => v.Identifier.ValueText == s)))
return true;
}
return false;
}
开发者ID:alecor191,项目名称:RefactoringEssentials,代码行数:25,代码来源:RedundantIfElseBlockAnalyzer.cs
示例2: VisitIfStatement
protected override SyntaxNode VisitIfStatement(IfStatementSyntax node)
{
if (!node.DescendentNodes().OfType<BlockSyntax>().Any())
{
node = node.Update (node.IfKeyword, node.OpenParenToken, node.Condition, node.CloseParenToken,
Syntax.Block (statements: node.Statement), node.ElseOpt);
}
if (node.ElseOpt != null)
{
ElseClauseSyntax elseOpt = node.ElseOpt;
IfStatementSyntax ifSyntax = elseOpt.Statement as IfStatementSyntax;
if (ifSyntax != null)
{
if (!ifSyntax.DescendentNodes().OfType<BlockSyntax>().Any())
{
ifSyntax = ifSyntax.Update (ifSyntax.IfKeyword, ifSyntax.OpenParenToken, ifSyntax.Condition, ifSyntax.CloseParenToken,
Syntax.Block (statements: ifSyntax.Statement), ifSyntax.ElseOpt);
elseOpt = elseOpt.Update (elseOpt.ElseKeyword, ifSyntax);
}
}
else if (!elseOpt.DescendentNodes().OfType<BlockSyntax>().Any())
elseOpt = node.ElseOpt.Update (node.ElseOpt.ElseKeyword, Syntax.Block (statements: node.ElseOpt.Statement));
if (elseOpt != node.ElseOpt)
node = node.Update (node.IfKeyword, node.OpenParenToken, node.Condition, node.CloseParenToken, node.Statement, elseOpt);
}
return base.VisitIfStatement (node);
}
开发者ID:Auxon,项目名称:Instant,代码行数:31,代码来源:FixingRewriter.cs
示例3: GetMatch
static bool GetMatch(IfStatementSyntax node, out ExpressionSyntax c, out ReturnStatementSyntax e1, out ReturnStatementSyntax e2, out ReturnStatementSyntax rs)
{
rs = e1 = e2 = null;
c = node.Condition;
//attempt to match if(condition) return else return
e1 = ConvertIfStatementToNullCoalescingExpressionAction.GetSimpleStatement(node.Statement) as ReturnStatementSyntax;
if (e1 == null)
return false;
e2 = node.Else != null ? ConvertIfStatementToNullCoalescingExpressionAction.GetSimpleStatement(node.Else.Statement) as ReturnStatementSyntax : null;
//match
if (e1 != null && e2 != null)
{
return true;
}
//attempt to match if(condition) return
if (e1 != null)
{
rs = node.Parent.ChildThatContainsPosition(node.GetTrailingTrivia().Max(t => t.FullSpan.End) + 1).AsNode() as ReturnStatementSyntax;
if (rs != null)
{
e2 = rs;
return true;
}
}
return false;
}
开发者ID:Kavignon,项目名称:RefactoringEssentials,代码行数:27,代码来源:ConvertIfStatementToReturnStatementAction.cs
示例4: CalculateNewRoot
private static SyntaxNode CalculateNewRoot(SyntaxNode root, IfStatementSyntax ifStatement)
{
SyntaxNode newRoot;
var isTrue = ifStatement.Condition.IsKind(SyntaxKind.TrueLiteralExpression);
if (isTrue)
{
var block = ifStatement.Statement as BlockSyntax;
newRoot = block == null
? root.ReplaceNode(ifStatement, ifStatement.Statement)
: root.ReplaceNode(ifStatement, block.Statements);
}
else
{
if (ifStatement.Else == null)
{
newRoot = root.RemoveNode(ifStatement, SyntaxRemoveOptions.KeepNoTrivia);
}
else
{
var block = ifStatement.Else.Statement as BlockSyntax;
newRoot = block == null
? root.ReplaceNode(ifStatement, ifStatement.Else.Statement)
: root.ReplaceNode(ifStatement, block.Statements);
}
}
return newRoot.WithAdditionalAnnotations(Formatter.Annotation);
}
开发者ID:peterstevens130561,项目名称:sonarlint-vs,代码行数:29,代码来源:IfConditionalAlwaysTrueOrFalseCodeFixProvider.cs
示例5: GetMatch
static bool GetMatch(IfStatementSyntax node, out ExpressionSyntax c, out ReturnStatementSyntax e1, out ReturnStatementSyntax e2, out ReturnStatementSyntax rs)
{
rs = e1 = e2 = null;
c = node.Condition;
//attempt to match if(condition) return else return
e1 = ConvertIfStatementToNullCoalescingExpressionAction.GetSimpleStatement(node.Statement) as ReturnStatementSyntax;
if (e1 == null)
return false;
e2 = node.Else != null ? ConvertIfStatementToNullCoalescingExpressionAction.GetSimpleStatement(node.Else.Statement) as ReturnStatementSyntax : null;
//match
if (e1 != null && e2 != null)
{
return true;
}
//attempt to match if(condition) return; return
if (e1 != null)
{
var parentBlock = node.Parent as BlockSyntax;
if (parentBlock == null)
return false;
var index = parentBlock.Statements.IndexOf(node);
if (index + 1 < parentBlock.Statements.Count)
{
rs = parentBlock.Statements[index + 1] as ReturnStatementSyntax;
}
if (rs != null)
{
e2 = rs;
return true;
}
}
return false;
}
开发者ID:alecor191,项目名称:RefactoringEssentials,代码行数:35,代码来源:ConvertIfStatementToReturnStatementAction.cs
示例6: LopsidedTerminalBranchesToGuardedBranches
public static IEnumerable<StatementSyntax> LopsidedTerminalBranchesToGuardedBranches(IfStatementSyntax syntax)
{
Contract.Requires(syntax != null);
Contract.Requires(syntax.Parent is BlockSyntax);
if (syntax.Statement.IsGuaranteedToJumpOut()) return new[] { syntax };
if (syntax.Else != null && syntax.Else.Statement.IsGuaranteedToJumpOut()) return new[] { syntax };
var allowedJump = syntax.TryGetEquivalentJumpAfterStatement();
if (allowedJump == null) return new[] { syntax };
var trueBloat = syntax.Statement.Bloat();
var falseBloat = syntax.Else == null ? 0 : syntax.Else.Statement.Bloat();
if (trueBloat < falseBloat * 2 - 10) {
// inline the false branch, guard with the true branch
return syntax.Else.Statement.Statements().Prepend(
syntax.WithStatement(syntax.Statement.BracedTo(syntax.Statement.Statements().Concat(new[] {allowedJump})))
.WithElse(null));
}
if (falseBloat < trueBloat * 2 - 10) {
// inline the true branch, guard with the false branch
return syntax.Statement.Statements().Prepend(
syntax.WithCondition(syntax.Condition.Inverted())
.WithStatement(syntax.Else == null ? allowedJump : syntax.Else.Statement.BracedTo(syntax.Else.Statement.Statements().Concat(new[] {allowedJump})))
.WithElse(null));
}
return new[] { syntax };
}
开发者ID:Strilanc,项目名称:Croslyn,代码行数:28,代码来源:LopsidedTerminalIfsToEarlyReturnGuards.cs
示例7: FixSpacingAsync
private async Task<Document> FixSpacingAsync(Document document, IfStatementSyntax ifStatement, CancellationToken c)
{
// This method will generate a new if-statement node with a single space between the if-keyword and the opening parenthesis.
var generator = SyntaxGenerator.GetGenerator(document);
// The new if-statement will need to retain the same statements as the old if-statement.
var ifBlock = ifStatement.Statement as BlockSyntax;
var ifBlockStatements = ifBlock.Statements;
// The new if-statement should retain the formatting of the trivia before and after the if-statement.
// The following statements extract the original trivia.
var ifKeyword = ifStatement.IfKeyword;
var leadingTrivia = ifKeyword.LeadingTrivia;
var closeBrace = ifBlock.CloseBraceToken;
var trailingTrivia = closeBrace.TrailingTrivia;
// If-statements generated using SyntaxGenerator are formatted with the desired spacing by default so this is not specified explicitly.
var newIfStatement = generator.IfStatement(ifStatement.Condition, ifBlockStatements).WithLeadingTrivia(leadingTrivia).WithTrailingTrivia(trailingTrivia);
// This statement gets the top of the syntax tree so that the old if-statement node can be replaced with the new one.
var root = await document.GetSyntaxRootAsync();
// A new root is created with the old if-statement replaced by the new one.
var newRoot = root.ReplaceNode(ifStatement, newIfStatement);
// A new document with the new root is returned.
var newDocument = document.WithSyntaxRoot(newRoot);
return newDocument;
}
开发者ID:tmeschter,项目名称:roslyn-analyzers-1,代码行数:29,代码来源:CodeFixProvider.cs
示例8: BoundIfStatement
public BoundIfStatement(IfStatementSyntax syntax, BoundExpression condition, BoundStatement consequence, BoundStatement alternativeOpt)
: base(BoundNodeKind.IfStatement, syntax)
{
Condition = condition;
Consequence = consequence;
AlternativeOpt = alternativeOpt;
}
开发者ID:pminiszewski,项目名称:HlslTools,代码行数:7,代码来源:BoundIfStatement.cs
示例9: AddBraces
public static IfStatementSyntax AddBraces(IfStatementSyntax ifStatement)
{
Debug.Assert(ifStatement != null && NeedsBraces(ifStatement));
return ifStatement
.WithStatement(SyntaxFactory.Block(ifStatement.Statement))
.WithAdditionalAnnotations(Formatter.Annotation);
}
开发者ID:modulexcite,项目名称:StylishCode,代码行数:8,代码来源:StyleHelpers.cs
示例10: HandleIf
private void HandleIf(SyntaxNodeAnalysisContext context, IfStatementSyntax ifStatement)
{
if (ifStatement.Statement is BlockSyntax)
{
return;
}
context.ReportDiagnostic(Diagnostic.Create(Rule, ifStatement.IfKeyword.GetLocation()));
}
开发者ID:nemec,项目名称:VSDiagnostics,代码行数:9,代码来源:IfStatementWithoutBracesAnalyzer.cs
示例11: ConvertToConditional
private Document ConvertToConditional(Document document, SemanticModel semanticModel, IfStatementSyntax ifStatement, StatementSyntax replacementStatement, CancellationToken cancellationToken)
{
var oldRoot = semanticModel.SyntaxTree.GetRoot();
var newRoot = oldRoot.ReplaceNode(
oldNode: ifStatement,
newNode: replacementStatement.WithAdditionalAnnotations(Formatter.Annotation));
return document.WithSyntaxRoot(newRoot);
}
开发者ID:Rickinio,项目名称:roslyn,代码行数:9,代码来源:CodeRefactoringProvider.cs
示例12: BoundIfStatement
public BoundIfStatement(
BoundExpression boundExpression,
BoundScopeStatement boundStatements,
IfStatementSyntax statementSyntax)
: base(statementSyntax)
{
BoundExpression = boundExpression;
BoundStatements = boundStatements;
}
开发者ID:lawl-dev,项目名称:Kiwi,代码行数:9,代码来源:BoundIfStatement.cs
示例13: AddBracesAsync
private async Task<Document> AddBracesAsync(Document document, IfStatementSyntax ifStatement, CancellationToken cancellationToken)
{
var nonBlockedStatement = ifStatement.Statement as ExpressionStatementSyntax;
var newBlockedStatement = SyntaxFactory.Block(statements: nonBlockedStatement).WithAdditionalAnnotations(annotations: Formatter.Annotation);
var newIfStatement = ifStatement.ReplaceNode(oldNode: nonBlockedStatement, newNode: newBlockedStatement);
var root = await document.GetSyntaxRootAsync();
var newRoot = root.ReplaceNode(oldNode: ifStatement, newNode: newIfStatement);
var newDocument = document.WithSyntaxRoot(newRoot);
return newDocument;
}
开发者ID:deepak2007in,项目名称:CSharp6,代码行数:10,代码来源:CodeFixProvider.cs
示例14: IfStatement
public static string IfStatement(IfStatementSyntax statement)
{
var output = statement.IfKeyword.Text + " (";
output += SyntaxNode(statement.Condition);
output += ")" + NewLine + SyntaxNode(statement.Statement);
if (statement.Else != null)
{
output += SyntaxNode(statement.Else);
}
return output;
}
开发者ID:UIKit0,项目名称:SharpSwift,代码行数:11,代码来源:LogicSyntaxParser.cs
示例15: ParseIfStatement
internal static bool ParseIfStatement(IfStatementSyntax node, out ExpressionSyntax condition, out ExpressionSyntax target, out AssignmentExpressionSyntax whenTrue, out AssignmentExpressionSyntax whenFalse)
{
condition = null;
target = null;
whenTrue = null;
whenFalse = null;
if (node == null || node.Else == null || node.Parent is IfStatementSyntax || node.Else.Statement is IfStatementSyntax)
return false;
condition = node.Condition;
//make sure to check for multiple statements
ExpressionStatementSyntax whenTrueExprStatement, whenFalseExprStatement;
var embeddedBlock = node.Statement as BlockSyntax;
if (embeddedBlock != null)
{
if (embeddedBlock.Statements.Count > 1)
return false;
var childNodes = embeddedBlock.ChildNodes();
if (childNodes.Count() > 1)
return false;
whenTrueExprStatement = childNodes.OfType<ExpressionStatementSyntax>().FirstOrDefault();
}
else
{
whenTrueExprStatement = node.Statement as ExpressionStatementSyntax;
}
var elseBlock = node.Else.Statement as BlockSyntax;
if (elseBlock != null)
{
if (elseBlock.Statements.Count > 1)
return false;
var childNodes = elseBlock.ChildNodes();
if (childNodes.Count() > 1)
return false;
whenFalseExprStatement = childNodes.OfType<ExpressionStatementSyntax>().FirstOrDefault();
}
else
{
whenFalseExprStatement = node.Else.Statement as ExpressionStatementSyntax;
}
if (whenTrueExprStatement == null || whenFalseExprStatement == null)
return false;
whenTrue = whenTrueExprStatement.Expression as AssignmentExpressionSyntax;
whenFalse = whenFalseExprStatement.Expression as AssignmentExpressionSyntax;
if (whenTrue == null || whenFalse == null || whenTrue.Kind() != whenFalse.Kind() ||
!SyntaxFactory.AreEquivalent(whenTrue.Left, whenFalse.Left))
return false;
return true;
}
开发者ID:alecor191,项目名称:RefactoringEssentials,代码行数:54,代码来源:ConvertIfStatementToConditionalTernaryExpressionCodeRefactoringProvider.cs
示例16: UseExistenceOperatorAsyncWithReturnAsync
private static async Task<Document> UseExistenceOperatorAsyncWithReturnAsync(Document document, IfStatementSyntax ifStatement, CancellationToken cancellationToken, ReturnStatementSyntax returnIf)
{
var newMemberAccess = ((MemberAccessExpressionSyntax)returnIf.Expression).ToConditionalAccessExpression();
var newReturn = SyntaxFactory.ReturnStatement(newMemberAccess)
.WithLeadingTrivia(ifStatement.GetLeadingTrivia())
.WithTrailingTrivia(ifStatement.GetTrailingTrivia())
.WithAdditionalAnnotations(Formatter.Annotation);
var root = await document.GetSyntaxRootAsync(cancellationToken);
var newRoot = root.ReplaceNode(ifStatement, newReturn);
var newDocument = document.WithSyntaxRoot(newRoot);
return newDocument;
}
开发者ID:JeanLLopes,项目名称:code-cracker,代码行数:12,代码来源:ExistenceOperatorCodeFixProvider.cs
示例17: ElseIsRedundantControlFlow
static bool ElseIsRedundantControlFlow(IfStatementSyntax ifElseStatement, SyntaxNodeAnalysisContext syntaxNode)
{
if (ifElseStatement.Else == null || ifElseStatement.Parent is ElseClauseSyntax)
return false;
var blockSyntax = ifElseStatement.Else.Statement as BlockSyntax;
if (blockSyntax != null && blockSyntax.Statements.Count == 0)
return true;
var result = syntaxNode.SemanticModel.AnalyzeControlFlow(ifElseStatement.Statement);
return !result.EndPointIsReachable;
}
开发者ID:alecor191,项目名称:RefactoringEssentials,代码行数:12,代码来源:RedundantIfElseBlockAnalyzer.cs
示例18: MergeIfs
private static SyntaxNode MergeIfs(IfStatementSyntax ifStatement, SyntaxNode root)
{
var nestedIf = (IfStatementSyntax)ifStatement.Statement.GetSingleStatementFromPossibleBlock();
var newIf = ifStatement
.WithCondition(SyntaxFactory.BinaryExpression(SyntaxKind.LogicalAndExpression, ifStatement.Condition, nestedIf.Condition))
.WithStatement(nestedIf.Statement)
.WithLeadingTrivia(ifStatement.GetLeadingTrivia().AddRange(nestedIf.GetLeadingTrivia()))
.WithAdditionalAnnotations(Formatter.Annotation);
if (ifStatement.HasTrailingTrivia && nestedIf.HasTrailingTrivia && !ifStatement.GetTrailingTrivia().Equals(nestedIf.GetTrailingTrivia()))
newIf = newIf.WithTrailingTrivia(ifStatement.GetTrailingTrivia().AddRange(nestedIf.GetTrailingTrivia()));
var newRoot = root.ReplaceNode(ifStatement, newIf);
return newRoot;
}
开发者ID:haroldhues,项目名称:code-cracker,代码行数:13,代码来源:MergeNestedIfCodeFixProvider.cs
示例19: UseExistenceOperatorAsyncWithAssignmentAsync
private static async Task<Document> UseExistenceOperatorAsyncWithAssignmentAsync(Document document, IfStatementSyntax ifStatement, CancellationToken cancellationToken, ExpressionStatementSyntax expressionIf)
{
var memberAccessAssignment = (AssignmentExpressionSyntax)expressionIf.Expression;
var newMemberAccess = ((MemberAccessExpressionSyntax)memberAccessAssignment.Right).ToConditionalAccessExpression();
var newExpressionStatement = SyntaxFactory.ExpressionStatement(SyntaxFactory.AssignmentExpression(SyntaxKind.SimpleAssignmentExpression, memberAccessAssignment.Left, newMemberAccess))
.WithLeadingTrivia(ifStatement.GetLeadingTrivia())
.WithTrailingTrivia(ifStatement.GetTrailingTrivia())
.WithAdditionalAnnotations(Formatter.Annotation);
var root = await document.GetSyntaxRootAsync(cancellationToken);
var newRoot = root.ReplaceNode(ifStatement, newExpressionStatement);
var newDocument = document.WithSyntaxRoot(newRoot);
return newDocument;
}
开发者ID:JeanLLopes,项目名称:code-cracker,代码行数:13,代码来源:ExistenceOperatorCodeFixProvider.cs
示例20: BindIfStatement
private BoundIfStatement BindIfStatement(IfStatementSyntax node)
{
Debug.Assert(node != null);
var condition = BindBooleanExpression(node.Condition);
var consequence = BindStatement(node.Statement);
if (node.ElseOpt == null)
{
return new BoundIfStatement(node, condition, consequence, null);
}
var alternative = BindStatement(node.ElseOpt.Statement);
return new BoundIfStatement(node, condition, consequence, alternative);
}
开发者ID:EkardNT,项目名称:Roslyn,代码行数:13,代码来源:IfStatement.cs
注:本文中的IfStatementSyntax类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论