本文整理汇总了C#中BlockStatement.SetContainingBlock方法的典型用法代码示例。如果您正苦于以下问题:C# BlockStatement.SetContainingBlock方法的具体用法?C# BlockStatement.SetContainingBlock怎么用?C# BlockStatement.SetContainingBlock使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BlockStatement
的用法示例。
在下文中一共展示了BlockStatement.SetContainingBlock方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CheckForErrorsAndReturnTrueIfAnyAreFound
protected override bool CheckForErrorsAndReturnTrueIfAnyAreFound()
{
if (pattern == null)
return Body.HasErrors;
var hasError = false;
var newStmts = new List<Statement>();
var newBlock = new BlockStatement(newStmts, this.SourceLocation);
var call = pattern as VccMethodCall;
if (call == null) {
this.Helper.ReportError(new VccErrorMessage(pattern.SourceLocation, Error.ExpectedIdentifier));
return true;
}
var args = call.OriginalArguments.ToArray();
var calledMethod = call.MethodExpression as VccSimpleName;
if (calledMethod == null) {
this.Helper.ReportError(new VccErrorMessage(call.MethodExpression.SourceLocation, Error.ExpectedIdentifier));
return true;
}
var methods = call.GetCandidateMethods(true).Where(m => m.ParameterCount == args.Length).ToArray();
if (methods.Length == 0) {
if (!call.MethodExpression.HasErrors)
this.Helper.ReportError(new AstErrorMessage(call, Cci.Ast.Error.BadNumberOfArguments, calledMethod.Name.Value, args.Length.ToString()));
return true;
}
var meth = (MethodDefinition)methods.First();
var decl = (FunctionDefinition)meth.Declaration;
var parms = decl.Parameters.ToArray();
List<Statement> stmts = new List<Statement>();
for (int i = 0; i < args.Length; ++i) {
var name = args[i] as VccSimpleName;
if (name == null) {
this.Helper.ReportError(new VccErrorMessage(args[i].SourceLocation, Error.ExpectedIdentifier));
hasError = true;
} else {
var local = new VccLocalDeclaration(new NameDeclaration(name.Name, name.SourceLocation), null, new List<Specifier>(), true, name.SourceLocation);
var tp = (TypeExpression)parms[i].Type;
//tp = (TypeExpression)tp.MakeCopyFor(newBlock);
var stmt = new LocalDeclarationsStatement(false, true, false, tp, new LocalDeclaration[] { local }.ToList(), name.SourceLocation);
newStmts.Add(stmt);
}
}
newStmts.Add(new ExpressionStatement(call));
if (_body != null)
newStmts.AddRange(_body.Statements);
else
newStmts.AddRange(statements);
_body = newBlock;
newBlock.SetContainingBlock(containingMatchStatement.ContainingBlock);
hasError |= newBlock.HasErrors;
return hasError;
}