public virtual void PostWalk(LambdaExpr node) { }
// LambdaExpr public virtual bool Walk(LambdaExpr node) { return true; }
public override void PostWalk(LambdaExpr node) { }
// LambdaExpr public override bool Walk(LambdaExpr node) { return false; }
private LambdaExpr ParseLambdaBody(int startPosition, Parameter[] parameters) { Expr exp; LambdaExpr ret; Stmt st; if (PeekToken(TokenType.LeftBrace)) { var inFinally = _inFinally; var inLoop = _inLoop; var return_ = _return; var isGenerator = _isGenerator; var isAsync = _isAsync; _inLoop = false; _inFinally = false; _return = false; _isGenerator = false; _isAsync = false; FunctionDefinition fnDef = new FunctionDefinition(null, parameters); PushFunction(fnDef); st = ParseBlock(); FunctionDefinition fnDef2 = PopFunction(); Debug.Assert(fnDef == fnDef2); fnDef.Body = st; ret = new LambdaExpr(fnDef); _inLoop = inLoop; _inFinally = inFinally; _return = return_; _isGenerator = isGenerator; _isAsync = isAsync; } else { exp = ParseExpr(); st = new ReturnStmt(exp); st.SetLoc(_globalParent, exp.IndexSpan); ret = new LambdaExpr(parameters, st); } ret.SetLoc(_globalParent, startPosition, GetEnd()); return ret; }
// LambdaExpr public override bool Walk(LambdaExpr node) { node.Parent = _currentScope; return base.Walk(node); }