private void NormalizeArrowFunctionParameterType(ArrowFunction arrowFunNode)
 {
     foreach (Parameter parameter in arrowFunNode.Parameters)
     {
         parameter.IgnoreType = true;
     }
 }
Esempio n. 2
0
        private ArrowFunction ParseArrowFunction(ExpressionNode left)
        {
            ArrowFunction ret        = NewNode <ArrowFunction>();
            int           precedence = TokenPrecedence;

            if (left != null)
            {
                GetArrowFunctionArgs(left, ret.Arguments);
            }
            NextToken();
            if (Token == TokenType.LBRACE)
            {
                ret.Body = new FunctionBlock();
                NextToken();
                while (Token != TokenType.RBRACE)
                {
                    ret.Body.Statements.Add(ParseStatement());
                }
                NextToken();
            }
            else
            {
                ret.Expression = ParseExpression(1);
            }
            return(ret);
        }
Esempio n. 3
0
        private ArrowFunction ParseObjectLiteralFunction()
        {
            NextToken();
            ArrowFunction ret = NewNode <ArrowFunction>();

            ret.Token = TokenType.ARROW;
            ret.Body  = new FunctionBlock();
            bool first = true;

            while (Token != TokenType.RPAREN)
            {
                if (first)
                {
                    first = false;
                }
                else
                {
                    ExpectToken(TokenType.COMMA);
                    NextToken();
                }
                ExpectToken(TokenType.IDENTIFIER);
                ret.Arguments.Add(StrVal);
                NextToken();
            }
            NextToken();
            ExpectToken(TokenType.LBRACE);
            NextToken();
            while (Token != TokenType.RBRACE)
            {
                ret.Body.Statements.Add(ParseStatement());
            }
            NextToken();
            return(ret);
        }
Esempio n. 4
0
 public Function(ArrowFunction fn, Function parent)
 {
     FnType        = FunctionType.ARROW;
     FunctionScope = new Scope(parent.FunctionScope, fn.Arguments);
     Body          = fn.Body;
     if (Body == null)
     {
         Body = new Block();
         Body.Statements.Add(new ControllStatement
         {
             Token = TokenType.RETURN,
             Value = fn.Expression
         });
     }
     Visitor = new NodeVisitor(Body);
 }
Esempio n. 5
0
 public CSharpSyntaxNode Convert(ArrowFunction node)
 {
     return(SyntaxFactory
            .ParenthesizedLambdaExpression(node.Body.ToCsNode <CSharpSyntaxNode>())
            .AddParameterListParameters(node.Parameters.ToCsNodes <ParameterSyntax>()));
 }
Esempio n. 6
0
 public AstNode RefactorArrowFunction(ArrowFunction fn)
 {
     return(new Function(fn, this));
 }