예제 #1
0
        public override void OnListLiteralExpression(ListLiteralExpression node)
        {
            BoundSpillSequenceBuilder builder = null;

            node.Items = VisitExpressionList(ref builder, node.Items);
            ReplaceCurrentNode(UpdateExpression(builder, node));
        }
예제 #2
0
        public override void Switch(IAstTransformer transformer, out Node resultingNode)
        {
            ListLiteralExpression thisNode           = (ListLiteralExpression)this;
            Expression            resultingTypedNode = thisNode;

            transformer.OnListLiteralExpression(thisNode, ref resultingTypedNode);
            resultingNode = resultingTypedNode;
        }
예제 #3
0
        override public void OnListLiteralExpression(ListLiteralExpression node)
        {
            bool generator = AstUtil.IsListGenerator(node);

            Visit(node.Items);
            if (generator)
            {
                ReplaceCurrentNode(
                    CodeBuilder.CreateConstructorInvocation(
                        TypeSystemServices.Map(List_IEnumerableConstructor),
                        node.Items[0]));
            }
        }
예제 #4
0
        public void TestForStmt1()
        {
            Boo.Lang.Compiler.Ast.Module module = ParseTestCase("for_stmt_1.boo");

            ForStatement fs = (ForStatement)module.Globals.Statements[0];

            Assert.AreEqual(1, fs.Declarations.Count);

            Declaration d = fs.Declarations[0];

            Assert.AreEqual("i", d.Name);
            Assert.IsNull(d.Type);

            ListLiteralExpression lle = (ListLiteralExpression)fs.Iterator;

            Assert.AreEqual(3, lle.Items.Count);
            for (int i = 0; i < 3; ++i)
            {
                Assert.AreEqual(i + 1, ((IntegerLiteralExpression)lle.Items[i]).Value);
            }

            Assert.AreEqual(1, fs.Block.Statements.Count);
            Assert.AreEqual("print", ((ReferenceExpression)((MethodInvocationExpression)((ExpressionStatement)fs.Block.Statements[0]).Expression).Target).Name);
        }
예제 #5
0
 public override void OnListLiteralExpression(ListLiteralExpression node)
 {
     Write("[");
     WriteCommaSeparatedList(node.Items);
     Write("]");
 }
예제 #6
0
 override public void LeaveListLiteralExpression(ListLiteralExpression node)
 {
     ConvertExpressions(node.Items);
 }
예제 #7
0
 public override void OnListLiteralExpression(ListLiteralExpression node)
 {
     throw new NotImplementedException();
 }
예제 #8
0
 override public void LeaveListLiteralExpression(ListLiteralExpression node)
 {
     OnExpression(node);
 }
예제 #9
0
 public override void OnListLiteralExpression(ListLiteralExpression node)
 {
     MakeLiteralResult("Boo.Lang.List");
 }
예제 #10
0
 public override void OnListLiteralExpression(ListLiteralExpression node)
 {
     base.OnListLiteralExpression(node);
     Check(node);
 }