public void VisitNode(JSNewArrayExpression nae)
        {
            var parentBoe = ParentNode as JSBinaryOperatorExpression;

            if (parentBoe != null)
            {
                var leftField = parentBoe.Left as JSFieldAccess;
                if (
                    (leftField != null) &&
                    PackedArrayUtil.IsPackedArrayType(leftField.Field.Field.FieldType)
                    )
                {
                    JSNewPackedArrayExpression replacement;
                    if (nae.Dimensions != null)
                    {
                        replacement = new JSNewPackedArrayExpression(leftField.Field.Field.FieldType, nae.ElementType, nae.Dimensions, nae.SizeOrArrayInitializer);
                    }
                    else
                    {
                        replacement = new JSNewPackedArrayExpression(leftField.Field.Field.FieldType, nae.ElementType, nae.SizeOrArrayInitializer);
                    }
                    ParentNode.ReplaceChild(nae, replacement);
                    VisitReplacement(replacement);
                    return;
                }
            }

            VisitChildren(nae);
        }
Exemple #2
0
        public void VisitNode(JSNewArrayExpression na)
        {
            var ct = GetCachedType(na.ElementType);

            if (ct != null)
            {
                na.CachedElementTypeIndex = ct.Index;
            }

            VisitChildren(na);
        }
Exemple #3
0
        public void NewArrayTraversal () {
            var na = new JSNewArrayExpression(
                T1,
                new JSExpression[] { JSLiteral.New(2) },
                new JSArrayExpression(
                    T1, 
                    JSLiteral.New(3),
                    JSLiteral.New(4)
                )
            );

            // DumpNodeSequence(na.SelfAndChildrenRecursive);
            DumpNodeSequence(na.AllChildrenRecursive);

            Assert.AreEqual(2, na.Children.ToArray().Length, "Child count");
            Assert.AreEqual(4, na.AllChildrenRecursive.ToArray().Length, "Recursive child count");
        }
        public void VisitNode (JSNewArrayExpression nae) {
            var parentBoe = ParentNode as JSBinaryOperatorExpression;

            if (parentBoe != null) {
                var leftField = parentBoe.Left as JSFieldAccess;
                if (
                    (leftField != null) &&
                    PackedArrayUtil.IsPackedArrayType(leftField.Field.Field.FieldType)
                ) {
                    JSNewPackedArrayExpression replacement;
                    if (nae.Dimensions != null) {
                        replacement = new JSNewPackedArrayExpression(leftField.Field.Field.FieldType, nae.ElementType, nae.Dimensions, nae.SizeOrArrayInitializer);
                    } else {
                        replacement = new JSNewPackedArrayExpression(leftField.Field.Field.FieldType, nae.ElementType, nae.SizeOrArrayInitializer);
                    }
                    ParentNode.ReplaceChild(nae, replacement);
                    VisitReplacement(replacement);
                    return;
                }
            }

            VisitChildren(nae);
        }
Exemple #5
0
        public void NewArrayTraversal () {
            var na = new JSNewArrayExpression(
                T1,
                new JSExpression[] { JSLiteral.New(2) },
                new JSArrayExpression(
                    T1, 
                    JSLiteral.New(3),
                    JSLiteral.New(4)
                )
            );

            // DumpNodeSequence(na.SelfAndChildrenRecursive);
            DumpNodeSequence(na.AllChildrenRecursive);

            Assert.AreEqual(2, na.Children.ToArray().Length, "Child count");
            Assert.AreEqual(4, na.AllChildrenRecursive.ToArray().Length, "Recursive child count");
        }
        public void VisitNode(JSNewArrayExpression na)
        {
            var ct = GetCachedType(na.ElementType);
            if (ct != null)
                na.CachedElementTypeIndex = ct.Index;

            VisitChildren(na);
        }