本文整理汇总了C#中ICSharpCode.NRefactory.Ast.BlockStatement.AcceptVisitor方法的典型用法代码示例。如果您正苦于以下问题:C# BlockStatement.AcceptVisitor方法的具体用法?C# BlockStatement.AcceptVisitor怎么用?C# BlockStatement.AcceptVisitor使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ICSharpCode.NRefactory.Ast.BlockStatement
的用法示例。
在下文中一共展示了BlockStatement.AcceptVisitor方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ReplaceAllFunctionAssignments
void ReplaceAllFunctionAssignments(BlockStatement block, string functionName, TypeReference typeReference)
{
ReturnStatementForFunctionAssignment visitor = new ReturnStatementForFunctionAssignment(functionName);
block.AcceptVisitor(visitor, null);
if (visitor.expressionsToReplace.Count == 1 && !visitor.hasExit && IsAssignmentTo(block.Children.Last(), functionName)) {
Expression returnValue = GetAssignmentFromStatement(block.Children.Last()).Right;
block.Children.RemoveAt(block.Children.Count - 1);
block.Return(returnValue);
} else {
if (visitor.expressionsToReplace.Count > 0) {
foreach (var expr in visitor.expressionsToReplace) {
expr.Identifier = FunctionReturnValueName;
}
Expression init;
init = ExpressionBuilder.CreateDefaultValueForType(typeReference);
block.Children.Insert(0, new LocalVariableDeclaration(new VariableDeclaration(FunctionReturnValueName, init, typeReference)));
block.Children[0].Parent = block;
block.Return(new IdentifierExpression(FunctionReturnValueName));
}
}
}
示例2: HasReferencesInSelection
private bool HasReferencesInSelection(ISelection selection, Variable variable)
{
FindReferenceVisitor frv = new FindReferenceVisitor(CSharpNameComparer, variable.Name, selection.StartPosition, selection.EndPosition);
var statement = new BlockStatement();
statement.Children = selection.Nodes;
statement.AcceptVisitor(frv, null);
return frv.Identifiers.Count > 0;
}