public virtual ExpressionAst VisitConvertExpression(ConvertExpressionAst convertExpressionAst)
 {
     return(new ConvertExpressionAst(
                convertExpressionAst.Extent,
                convertExpressionAst.Type.Rewrite(this),
                convertExpressionAst.Child.Rewrite(this)));
 }
        public object VisitConvertExpression(ConvertExpressionAst convertExpressionAst)
        {
            var newChild          = VisitElement(convertExpressionAst.Child);
            var newTypeConstraint = VisitElement(convertExpressionAst.Type);

            return(new ConvertExpressionAst(convertExpressionAst.Extent, newTypeConstraint, newChild));
        }
Esempio n. 3
0
        public object VisitConvertExpression(ConvertExpressionAst convertExpressionAst)
        {
            var typeConstraint = VisitAst(convertExpressionAst.Type);
            var child          = VisitAst(convertExpressionAst.Child);

            return(new ConvertExpressionAst(convertExpressionAst.Extent, typeConstraint, child));
        }
        public override AstVisitAction VisitConvertExpression(ConvertExpressionAst convertExpressionAst)
        {
            var expression = VisitSyntaxNode(convertExpressionAst.Child);
            var type       = convertExpressionAst.Type.TypeName.Name;

            _currentNode = new Cast(type, expression);

            return(AstVisitAction.SkipChildren);
        }
Esempio n. 5
0
        public void Cast()
        {
            ConvertExpressionAst convertExpressionAst = ParseStatement("[Text.RegularExpressions.RegexOptions] 'IgnoreCase'")
                                                        .PipelineElements[0]
                                                        .Expression;

            Assert.AreEqual("Text.RegularExpressions.RegexOptions", convertExpressionAst.Type.TypeName.Name);
            Assert.AreEqual("IgnoreCase", ((StringConstantExpressionAst)convertExpressionAst.Child).Value);
        }
 public static ConvertExpressionAst Update(
     this ConvertExpressionAst ast,
     TypeConstraintAst typeConstraint = null,
     ExpressionAst child = null)
 {
     return(new ConvertExpressionAst(
                ast.Extent,
                typeConstraint?.Clone() ?? ast.Type.Clone(),
                child?.Clone() ?? ast.Child.Clone()));
 }
        public override AstVisitAction VisitConvertExpression(ConvertExpressionAst convertExpressionAst)
        {
            explanations.Add(
                new Explanation()
            {
                Description = $"Converts or restricts the expression to the type '{convertExpressionAst.Type.TypeName.Name}'.",
                CommandName = "Convert expression"
            }.AddDefaults(convertExpressionAst, explanations));

            return(base.VisitConvertExpression(convertExpressionAst));
        }
 public object VisitConvertExpression(ConvertExpressionAst convertExpressionAst)
 {
     // at this point, we know we're safe because we checked both the type and the child,
     // so now we can just call the compiler and indicate that it's trusted (at this point)
     if (s_context != null)
     {
         return(Compiler.GetExpressionValue(convertExpressionAst, true, s_context, null));
     }
     else
     {
         throw PSTraceSource.NewArgumentException("ast");
     }
 }
            public override AstVisitAction VisitConvertExpression(ConvertExpressionAst convertExpressionAst)
            {
                if (convertExpressionAst.Child is VariableExpressionAst variable)
                {
                    _variables.Add(
                        Tuple.Create(
                            convertExpressionAst.Attribute.TypeName,
                            variable));

                    return(AstVisitAction.SkipChildren);
                }

                return(AstVisitAction.StopVisit);
            }
Esempio n. 10
0
        public object VisitConvertExpression(ConvertExpressionAst convertExpressionAst)
        {
            if (_currentMethod == null)
            {
                var typeName = convertExpressionAst.Type.TypeName.FullName;
                var refExp   = Visit(convertExpressionAst.Child) as CodeVariableReferenceExpression;
                if (refExp != null)
                {
                    _currentClass.Members.Add(new CodeMemberField(typeName, refExp.VariableName));
                }
            }

            return(null);
        }
Esempio n. 11
0
        public override AstVisitAction VisitConvertExpression(ConvertExpressionAst convertExpressionAst)
        {
            Type type = convertExpressionAst.Type.TypeName.GetReflectionType();

            var value = EvaluateAst(convertExpressionAst.Child);

            if (type.IsEnum)
            {
                var result = Enum.Parse(type, (string)value);

                this._pipelineCommandRuntime.WriteObject(result);
                return(AstVisitAction.SkipChildren);
            }

            throw new NotImplementedException(); //VisitConvertExpression(convertExpressionAst);
        }
        public object VisitConvertExpression(ConvertExpressionAst convertExpressionAst)
        {
            var type = convertExpressionAst.Type.TypeName.GetReflectionType();

            if (type == null)
            {
                return(false);
            }

            if (!type.IsSafePrimitive())
            {
                // Only do conversions to built-in types - other conversions might not
                // be safe to optimize.
                return(false);
            }

            _visitCount++;
            return((bool)convertExpressionAst.Child.Accept(this));
        }
Esempio n. 13
0
 public override AstVisitAction VisitConvertExpression(ConvertExpressionAst ast)
 {
     return(AstVisitAction.Continue);
 }
 public object VisitConvertExpression(ConvertExpressionAst convertExpressionAst) => null;
Esempio n. 15
0
 /// <summary/>
 public virtual AstVisitAction VisitConvertExpression(ConvertExpressionAst convertExpressionAst) => DefaultVisit(convertExpressionAst);
 public virtual TResult VisitConvertExpression(ConvertExpressionAst convertExpressionAst) => default(TResult);
 public override AstVisitAction VisitConvertExpression(ConvertExpressionAst convertExpressionAst)
 {
     return(Visit(convertExpressionAst));
 }
 object ICustomAstVisitor.VisitConvertExpression(ConvertExpressionAst convertExpressionAst) => VisitConvertExpression(convertExpressionAst);
Esempio n. 19
0
 public override object VisitConvertExpression(ConvertExpressionAst convertExpressionAst)
 {
     VisitElement(convertExpressionAst.Type);
     VisitElement(convertExpressionAst.Child);
     return(convertExpressionAst);
 }
Esempio n. 20
0
 public object VisitConvertExpression(ConvertExpressionAst convertExpressionAst)
 {
     Console.WriteLine("Visited an ConvertExpressionAst.");
     return(convertExpressionAst);
 }
 object ICustomAstVisitor.VisitConvertExpression(ConvertExpressionAst convertExpressionAst)
 => ProcessRewriter(VisitConvertExpression, convertExpressionAst);
Esempio n. 22
0
 public object VisitConvertExpression(ConvertExpressionAst convertExpressionAst)
 {
     throw new UnexpectedElementException();
 }
Esempio n. 23
0
 public override AstVisitAction VisitConvertExpression(ConvertExpressionAst convertExpressionAst)
 {
     Console.WriteLine("Visited an ConvertExpressionAst.");
     Console.WriteLine("    " + convertExpressionAst.ToString().Replace(Environment.NewLine, Environment.NewLine + "    "));
     return(AstVisitAction.Continue);
 }
Esempio n. 24
0
 public override AstVisitAction VisitConvertExpression(ConvertExpressionAst convertExpressionAst)
 {
     throw new NotImplementedException(); //VisitConvertExpression(convertExpressionAst);
 }
Esempio n. 25
0
 public override AstVisitAction VisitConvertExpression(ConvertExpressionAst ast)
 {
     return(DoNextAction(ast));
 }
Esempio n. 26
0
 public override ExpressionAst VisitConvertExpression(ConvertExpressionAst convertExpressionAst)
 => VisitExpression(base.VisitConvertExpression(convertExpressionAst));
Esempio n. 27
0
 public object VisitConvertExpression(ConvertExpressionAst convertExpressionAst)
 {
     return((bool)convertExpressionAst.Child.Accept(this));
 }
Esempio n. 28
0
 public override AstVisitAction VisitConvertExpression(ConvertExpressionAst convertExpressionAst) => VisitAst(convertExpressionAst);