コード例 #1
0
        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));
        }
コード例 #2
0
 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;
 }
コード例 #3
0
 private void ProcessLambdaExpression(CsLambdaExpression lambdaExpression)
 {
     ProcessLambdaExpressionBody(lambdaExpression.body);
 }
コード例 #4
0
		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;
		}