public override void Visit(ITryBlock block, UsageContext context) { foreach (var statement in block.Body) { statement.Accept(this, context); } foreach (var catchBlock in block.CatchBlocks) { context.EnterNewScope(); var id = catchBlock.Parameter.Name; var type = catchBlock.Parameter.ValueType; var def = DefinitionSites.CreateUnknownDefinitionSite(); context.DefineVariable(id, type, def); foreach (var statement in catchBlock.Body) { statement.Accept(this, context); } context.LeaveCurrentScope(); } foreach (var statement in block.Finally) { statement.Accept(this, context); } }
public void Visit(ITryBlock block, SSTPrintingContext c) { c.Indentation().Keyword("try") .StatementBlock(block.Body, this); foreach (var catchBlock in block.CatchBlocks) { c.NewLine().Indentation().Keyword("catch"); if (catchBlock.Kind != CatchBlockKind.General) { c.Space().Text("(") .Type(catchBlock.Parameter.ValueType); if (catchBlock.Kind != CatchBlockKind.Unnamed) { c.Space() .Text(catchBlock.Parameter.Name); } c.Text(")"); } c.StatementBlock(catchBlock.Body, this); } if (block.Finally.Any()) { c.NewLine().Indentation().Keyword("finally") .StatementBlock(block.Finally, this); } }
public virtual void Visit(ITryBlock block, TContext context) { Visit(block.Body, context); foreach (var catchBlock in block.CatchBlocks) { Visit(catchBlock.Body, context); } Visit(block.Finally, context); }
public override IStatement Visit(ITryBlock stmt, int context) { return(new TryBlock { Body = Anonymize(stmt.Body), CatchBlocks = Anonymize(stmt.CatchBlocks), Finally = Anonymize(stmt.Finally) }); }
public override void Visit(ITryBlock block, RelativeEditLocation loc) { loc.Size++; Visit(block.Body, loc); foreach (var catchBlock in block.CatchBlocks) { Visit(catchBlock.Body, loc); } Visit(block.Finally, loc); }
public int Visit(ITryBlock block, int context) { var size = 1; size += Visit(block.Body, 0); foreach (var c in block.CatchBlocks) { size += Visit(c.Body, 0); } return(size); }