LNode BlockCallStmt(int startIndex)
{
TokenType la0;
var id = MatchAny();
Check(Try_BlockCallStmt_Test0(0), "Expected ( TT.LParen TT.RParen (TT.LBrace TT.RBrace | TT.Id) | TT.LBrace TT.RBrace | TT.Forward )");
var args = new VList<LNode>();
LNode block;
// Line 1865: ( TT.LParen TT.RParen (BracedBlock | TT.Id => Stmt) | TT.Forward ExprStart TT.Semicolon | BracedBlock )
la0 = LA0;
if (la0 == TT.LParen) {
var lp = MatchAny();
var rp = Match((int) TT.RParen);
// line 1865
args = AppendExprsInside(lp, args, false, true);
// Line 1866: (BracedBlock | TT.Id => Stmt)
la0 = LA0;
if (la0 == TT.LBrace)
block = BracedBlock();
else {
block = Stmt();
// line 1869
ErrorSink.Write(Severity.Error, block, ColumnOf(block.Range.StartIndex) <= ColumnOf(id.StartIndex) ? "Probable missing semicolon before this statement." : "Probable missing braces around body of '{0}' statement.", id.Value);
}
} else if (la0 == TT.Forward) {
var fwd = MatchAny();
var e = ExprStart(true);
Match((int) TT.Semicolon);
// line 1876
block = SetOperatorStyle(F.Call(fwd, e, fwd.StartIndex, e.Range.EndIndex));
} else
block = BracedBlock();
// line 1880
args.Add(block);
var result = F.Call((Symbol) id.Value, args, id.StartIndex, block.Range.EndIndex, id.StartIndex, id.EndIndex, NodeStyle.Special);
if (block.Calls(S.Forward, 1)) {
result = F.Attr(_triviaForwardedProperty, result);
}
return result;
}
static readonly HashSet<int> ReturnBreakContinueThrow_set0 = NewSet((int) TT.Add, (int) TT.AndBits, (int) TT.At, (int) TT.AttrKeyword, (int) TT.Base, (int) TT.Break, (int) TT.Checked, (int) TT.ContextualKeyword, (int) TT.Continue, (int) TT.Default, (int) TT.Delegate, (int) TT.Dot, (int) TT.DotDot, (int) TT.Forward, (int) TT.Goto, (int) TT.Id, (int) TT.IncDec, (int) TT.Is, (int) TT.LBrace, (int) TT.LBrack, (int) TT.Literal, (int) TT.LParen, (int) TT.Mul, (int) TT.New, (int) TT.Not, (int) TT.NotBits, (int) TT.Operator, (int) TT.Power, (int) TT.Return, (int) TT.Sizeof, (int) TT.Sub, (int) TT.Substitute, (int) TT.Switch, (int) TT.This, (int) TT.Throw, (int) TT.TypeKeyword, (int) TT.Typeof, (int) TT.Unchecked);