Exemplo n.º 1
0
 public override BoundNode VisitLiteral(BoundLiteral node)
 {
     return(MakeLiteral(node.Syntax, node.ConstantValue, node.Type, oldNodeOpt: node));
 }
Exemplo n.º 2
0
        private BoundExpression MakeLiteral(SyntaxNode syntax, ConstantValue constantValue, TypeSymbol type, BoundLiteral oldNodeOpt = null)
        {
            Debug.Assert(constantValue != null);

            if (oldNodeOpt != null)
            {
                return(oldNodeOpt.Update(constantValue, type));
            }
            else
            {
                return(new BoundLiteral(syntax, constantValue, type, hasErrors: constantValue.IsBad));
            }
        }
Exemplo n.º 3
0
        private BoundExpression MakeLiteral(SyntaxNode syntax, ConstantValue constantValue, TypeSymbol type, BoundLiteral oldNodeOpt = null)
        {
            Debug.Assert(constantValue != null);

            if (constantValue.IsDecimal)
            {
                //  Rewrite decimal literal
                Debug.Assert((object)type != null);
                Debug.Assert(type.SpecialType == SpecialType.System_Decimal);

                return(MakeDecimalLiteral(syntax, constantValue));
            }
            else if (constantValue.IsDateTime)
            {
                // C# does not support DateTime constants but VB does; we might have obtained a
                // DateTime constant by calling a method with an optional parameter with a DateTime
                // for its default value.
                Debug.Assert((object)type != null);
                Debug.Assert(type.SpecialType == SpecialType.System_DateTime);
                return(MakeDateTimeLiteral(syntax, constantValue));
            }
            else if (oldNodeOpt != null)
            {
                return(oldNodeOpt.Update(constantValue, type));
            }
            else
            {
                return(new BoundLiteral(syntax, constantValue, type, hasErrors: constantValue.IsBad));
            }
        }