public Expression Parse(CsExpression pStatement, FactoryExpressionCreator pCreator) { CsLambdaExpression ex = (CsLambdaExpression)pStatement; LambdaMethodExpression lambda = new LambdaMethodExpression((CsLambdaExpression)pStatement, pCreator); CodeBuilder b = new CodeBuilder(); b.AppendFormat("function ({0}):{1} {{", As3Helpers.GetParameters(lambda.Arguments), (lambda.ReturnType == null) ? "void" : As3Helpers.Convert(lambda.ReturnType) ); b.Indent(); b.Indent(); b.Indent(); b.AppendLine(); if (!(lambda.CodeBlock is CsBlock)) { b.Append("return "); } BlockParser.ParseNode(lambda.CodeBlock, b, pCreator); b.AppendLine("}"); b.AppendLine(); b.Unindent(); b.Unindent(); b.Unindent(); return(new Expression(b.ToString(), ex.entity_typeref)); }
public LambdaMethodExpression(CsLambdaExpression pStatement, FactoryExpressionCreator pCreator) { Arguments = BaseMethod.getArguments(pStatement.signature.parameters, pCreator); ReturnType = Helpers.GetType(pStatement.best_common_type); //ReturnType = Helpers.GetType(((CsEntityMethod)((CsEntityAnonymousMethod)pStatement.entity).parent.parent).specifier.return_type); CodeBlock = pStatement.body; }
private void ProcessLambdaExpression(CsLambdaExpression lambdaExpression) { ProcessLambdaExpressionBody(lambdaExpression.body); }
public LambdaMethodExpression(CsLambdaExpression pStatement, FactoryExpressionCreator pCreator) { Arguments = BaseMethod.getArguments(pStatement.signature.parameters, pCreator); ReturnType = Helpers.GetType(pStatement.best_common_type); //ReturnType = Helpers.GetType(((CsEntityMethod)((CsEntityAnonymousMethod)pStatement.entity).parent.parent).specifier.return_type); CodeBlock = pStatement.body; }