예제 #1
0
 protected override IEnumerable<IAstElement> VisitOrTransformChildren(AstElementTransform transform)
 {
     foreach (var parameter in this.Parameters.Transform(transform)) {
         yield return parameter;
     }
     yield return this.Body = transform(this.Body);
 }
예제 #2
0
 protected override IEnumerable<IAstElement> VisitOrTransformChildren(AstElementTransform transform)
 {
     foreach (var child in base.VisitOrTransformChildren(transform)) {
         yield return child;
     }
     yield return this.ReturnType = (IAstTypeReference)transform(this.ReturnType);
 }
예제 #3
0
 protected override IEnumerable<IAstElement> VisitOrTransformChildren(AstElementTransform transform)
 {
     yield return this.Callee = (IAstCallable)transform(this.Callee);
     foreach (var argument in this.Arguments.Transform(transform)) {
         yield return argument;
     }
 }
예제 #4
0
 protected override IEnumerable<IAstElement> VisitOrTransformChildren(AstElementTransform transform)
 {
     return Enumerable.Concat(
         Parameters.Transform(transform).Cast<IAstElement>(),
         Body.Transform(transform)
     );
 }
예제 #5
0
 protected override IEnumerable <IAstElement> VisitOrTransformChildren(AstElementTransform transform)
 {
     return(Enumerable.Concat(
                Parameters.Transform(transform).Cast <IAstElement>(),
                Body.Transform(transform)
                ));
 }
예제 #6
0
 protected override IEnumerable <IAstElement> VisitOrTransformChildren(AstElementTransform transform)
 {
     if (this.Target != null)
     {
         yield return(this.Target = transform(this.Target));
     }
 }
예제 #7
0
        protected override IEnumerable<IAstElement> VisitOrTransformChildren(AstElementTransform transform)
        {
            if (this.Target != null)
                yield return this.Target = transform(this.Target);

            yield return this.Reference = (IAstPropertyReference)transform(this.Reference);
        }
        protected override IEnumerable<IAstElement> VisitOrTransformChildren(AstElementTransform transform)
        {
            if (this.Target != null)
                yield return this.Target = transform(this.Target);

            yield return this.Function = (IAstMethodReference)transform(this.Function);
        }
예제 #9
0
 protected override IEnumerable <IAstElement> VisitOrTransformChildren(AstElementTransform transform)
 {
     if (this.Result != null)
     {
         yield return(this.Result = (IAstExpression)transform(this.Result));
     }
 }
예제 #10
0
 protected override IEnumerable<IAstElement> VisitOrTransformChildren(AstElementTransform transform)
 {
     yield return this.Source = transform(this.Source);
     foreach (var element in this.Body.Transform(transform)) {
         yield return element;
     }
 }
예제 #11
0
        protected override IEnumerable <IAstElement> VisitOrTransformChildren(AstElementTransform transform)
        {
            yield return(this.Left = (IAstExpression)transform(this.Left));

            yield return(this.Operator = (IAstMethodReference)transform(this.Operator));

            yield return(this.Right = (IAstExpression)transform(this.Right));
        }
예제 #12
0
 protected override IEnumerable <IAstElement> VisitOrTransformChildren(AstElementTransform transform)
 {
     if (this.AssignedValue != null)
     {
         yield return(this.AssignedValue = (IAstExpression)transform(this.AssignedValue));
     }
     yield return(this.Type = (IAstTypeReference)transform(this.Type));
 }
예제 #13
0
 protected override IEnumerable <IAstElement> VisitOrTransformChildren(AstElementTransform transform)
 {
     foreach (var parameterType in this.ParameterTypes.Transform(transform))
     {
         yield return(parameterType);
     }
     yield return(this.ReturnType = (IAstTypeReference)transform(this.ReturnType));
 }
예제 #14
0
 protected override IEnumerable <IAstElement> VisitOrTransformChildren(AstElementTransform transform)
 {
     foreach (var parameter in this.Parameters.Transform(transform))
     {
         yield return(parameter);
     }
     yield return(this.Body = transform(this.Body));
 }
예제 #15
0
        protected override IEnumerable <IAstElement> VisitOrTransformChildren(AstElementTransform transform)
        {
            yield return(this.PrimaryType = (IAstTypeReference)transform(this.PrimaryType));

            foreach (var argument in this.TypeArguments.Transform(transform))
            {
                yield return(argument);
            }
        }
예제 #16
0
        protected override IEnumerable <IAstElement> VisitOrTransformChildren(AstElementTransform transform)
        {
            if (this.Target != null)
            {
                yield return(this.Target = transform(this.Target));
            }

            yield return(this.Reference = (IAstPropertyReference)transform(this.Reference));
        }
예제 #17
0
        protected override IEnumerable <IAstElement> VisitOrTransformChildren(AstElementTransform transform)
        {
            yield return(this.Condition = transform(this.Condition));

            foreach (var element in this.Body.Transform(transform))
            {
                yield return(element);
            }
        }
예제 #18
0
        public static void TransformDescendants(this IAstElement ancestor, AstElementTransform transform)
        {
            Argument.RequireNotNull("transform", transform);

            ancestor.TransformChildren(c => {
                c.TransformDescendants(transform);
                return(transform(c));
            });
        }
예제 #19
0
        protected override IEnumerable <IAstElement> VisitOrTransformChildren(AstElementTransform transform)
        {
            if (this.Target != null)
            {
                yield return(this.Target = transform(this.Target));
            }

            yield return(this.Function = (IAstMethodReference)transform(this.Function));
        }
예제 #20
0
        protected override IEnumerable <IAstElement> VisitOrTransformChildren(AstElementTransform transform)
        {
            yield return(this.Target = transform(this.Target));

            foreach (var argument in this.Arguments.Transform(transform))
            {
                yield return(argument);
            }
        }
예제 #21
0
        public static void TransformChildren(this IAstElement parent, AstElementTransform transform)
        {
            Argument.RequireNotNull("parent", parent);
            Argument.RequireNotNull("transform", transform);

            var enumerator = parent.VisitOrTransformChildren(transform).GetEnumerator();

            while (enumerator.MoveNext())
            {
            }
        }
예제 #22
0
        protected override IEnumerable<IAstElement> VisitOrTransformChildren(AstElementTransform transform)
        {
            yield return this.Type = (IAstTypeReference)transform(this.Type);
            foreach (var argument in this.Arguments.Transform(transform)) {
                yield return argument;
            }
            if (this.Initializer == null)
                yield break;

            yield return this.Initializer = transform(this.Initializer);
        }
예제 #23
0
 protected override IEnumerable <IAstElement> VisitOrTransformChildren(AstElementTransform transform)
 {
     foreach (var child in base.VisitOrTransformChildren(transform))
     {
         yield return(child);
     }
     if (this.fixedReturnType != null)
     {
         yield return(this.fixedReturnType = (IAstTypeReference)transform(this.fixedReturnType));
     }
 }
예제 #24
0
        public static void TransformChildren <TAstElement>(this IAstElement parent, AstElementTransform <TAstElement> transform)
            where TAstElement : IAstElement
        {
            Argument.RequireNotNull("transform", transform);
            parent.TransformChildren(c => {
                if (!(c is TAstElement))
                {
                    return(c);
                }

                return(transform((TAstElement)c));
            });
        }
예제 #25
0
        protected override IEnumerable <IAstElement> VisitOrTransformChildren(AstElementTransform transform)
        {
            yield return(this.Type = (IAstTypeReference)transform(this.Type));

            foreach (var argument in this.Arguments.Transform(transform))
            {
                yield return(argument);
            }
            if (this.Initializer == null)
            {
                yield break;
            }

            yield return(this.Initializer = transform(this.Initializer));
        }
예제 #26
0
        public static void TransformDescendants <TAstElement>(this IAstElement ancestor, AstElementTransform <TAstElement> transform)
            where TAstElement : IAstElement
        {
            Argument.RequireNotNull("transform", transform);

            ancestor.TransformDescendants(c => {
                c.TransformDescendants(transform);
                if (!(c is TAstElement))
                {
                    return(c);
                }

                return(transform((TAstElement)c));
            });
        }
예제 #27
0
 protected override IEnumerable<IAstElement> VisitOrTransformChildren(AstElementTransform transform)
 {
     if (this.AssignedValue != null)
         yield return this.AssignedValue = (IAstExpression)transform(this.AssignedValue);
     yield return this.Type = (IAstTypeReference)transform(this.Type);
 }
예제 #28
0
 protected override IEnumerable<IAstElement> VisitOrTransformChildren(AstElementTransform transform)
 {
     yield return this.Value = transform(this.Value);
 }
예제 #29
0
 IEnumerable <IAstElement> IAstElement.VisitOrTransformChildren(AstElementTransform transform)
 {
     return(this.VisitOrTransformChildren(transform));
 }
예제 #30
0
 protected abstract IEnumerable <IAstElement> VisitOrTransformChildren(AstElementTransform transform);
예제 #31
0
 protected abstract IEnumerable<IAstElement> VisitOrTransformChildren(AstElementTransform transform);
예제 #32
0
 protected override IEnumerable<IAstElement> VisitOrTransformChildren(AstElementTransform transform)
 {
     foreach (var parameterType in this.ParameterTypes.Transform(transform)) {
         yield return parameterType;
     }
     yield return this.ReturnType = (IAstTypeReference)transform(this.ReturnType);
 }
예제 #33
0
 protected override IEnumerable<IAstElement> VisitOrTransformChildren(AstElementTransform transform)
 {
     yield return this.Left = (IAstExpression)transform(this.Left);
     yield return this.Operator = (IAstMethodReference)transform(this.Operator);
     yield return this.Right = (IAstExpression)transform(this.Right);
 }
예제 #34
0
 IEnumerable<IAstElement> IAstElement.VisitOrTransformChildren(AstElementTransform transform)
 {
     return this.VisitOrTransformChildren(transform);
 }
예제 #35
0
 protected override IEnumerable <IAstElement> VisitOrTransformChildren(AstElementTransform transform)
 {
     yield return(this.Type = (IAstTypeReference)transform(this.Type));
 }
예제 #36
0
 protected override IEnumerable<IAstElement> VisitOrTransformChildren(AstElementTransform transform)
 {
     yield return this.PrimaryType = (IAstTypeReference)transform(this.PrimaryType);
     foreach (var argument in this.TypeArguments.Transform(transform)) {
         yield return argument;
     }
 }
예제 #37
0
 protected override IEnumerable <IAstElement> VisitOrTransformChildren(AstElementTransform transform)
 {
     yield return(this.Value = transform(this.Value));
 }
예제 #38
0
 protected override IEnumerable<IAstElement> VisitOrTransformChildren(AstElementTransform transform)
 {
     if (this.Result != null)
         yield return this.Result = (IAstExpression)transform(this.Result);
 }
예제 #39
0
 protected override IEnumerable<IAstElement> VisitOrTransformChildren(AstElementTransform transform)
 {
     return this.Elements.Transform(transform);
 }
예제 #40
0
 protected override IEnumerable <IAstElement> VisitOrTransformChildren(AstElementTransform transform)
 {
     return(this.Actual.VisitOrTransformChildren(transform));
 }
예제 #41
0
 protected override IEnumerable<IAstElement> VisitOrTransformChildren(AstElementTransform transform)
 {
     yield return this.Type = (IAstTypeReference)transform(this.Type);
 }
예제 #42
0
        protected override IEnumerable <IAstElement> VisitOrTransformChildren(AstElementTransform transform)
        {
            yield return(this.Target = (IAstAssignable)transform(this.Target));

            yield return(this.Value = (IAstExpression)transform(this.Value));
        }
예제 #43
0
 protected override IEnumerable<IAstElement> VisitOrTransformChildren(AstElementTransform transform)
 {
     yield return this.Target = (IAstAssignable)transform(this.Target);
     yield return this.Value = (IAstExpression)transform(this.Value);
 }
예제 #44
0
 protected override IEnumerable <IAstElement> VisitOrTransformChildren(AstElementTransform transform)
 {
     return(No.Elements);
 }
예제 #45
0
        public static IEnumerable <TAstElement> Transform <TAstElement>(this IList <TAstElement> elements, AstElementTransform transform)
            where TAstElement : IAstElement
        {
            Argument.RequireNotNull("elements", elements);
            Argument.RequireNotNull("transform", transform);

            for (var i = 0; i < elements.Count; i++)
            {
                var transformed = (TAstElement)transform(elements[i]);
                if (!object.ReferenceEquals(transformed, elements[i]))
                {
                    elements[i] = transformed;
                }

                yield return(elements[i]);
            }
        }