Esempio n. 1
0
		public virtual void PostWalk(LambdaExpr node) { }
Esempio n. 2
0
		// LambdaExpr
		public virtual bool Walk(LambdaExpr node) { return true; }
Esempio n. 3
0
		public override void PostWalk(LambdaExpr node) { }
Esempio n. 4
0
		// LambdaExpr
		public override bool Walk(LambdaExpr node) { return false; }
Esempio n. 5
0
        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);
		}