public override IAssignableExpression VisitNullCoalescingExpression(INullCoalescingExpression expr,
                                                                            IList <IStatement> context)
        {
            var lref = ToVariableRef(expr.LeftOperand, context);

            var v0 = new VariableReference {
                Identifier = _nameGen.GetNextVariableName()
            };

            context.Add(
                new VariableDeclaration
            {
                Reference = v0,
                Type      = Bool
            });
            context.Add(
                new Assignment
            {
                Reference  = v0,
                Expression = new ComposedExpression {
                    References = { lref }
                }
            });
            return(new IfElseExpression
            {
                Condition = new ReferenceExpression {
                    Reference = v0
                },
                ThenExpression = new ReferenceExpression {
                    Reference = lref
                },
                ElseExpression = ToSimpleExpression(expr.RightOperand, context)
            });
        }
 /// <inheritdoc />
 public override Expression VisitNullCoalescingExpression(INullCoalescingExpression operation, LocalBinder argument)
 {
     return(Expression.Coalesce(
                operation.PrimaryOperand.Accept(this, argument),
                operation.SecondaryOperand.Accept(this, argument)
                ));
 }
        public override void VisitNullCoalescingExpression(INullCoalescingExpression operation)
        {
            LogString(nameof(INullCoalescingExpression));
            LogCommonPropertiesAndNewLine(operation);

            Visit(operation.PrimaryOperand, "Left");
            Visit(operation.SecondaryOperand, "Right");
        }
        private static void WriteBinaryNullCoalescing(LanguageWriter w, INullCoalescingExpression exp)
        {
            const int PREC_NULL_COAL = 0;

            WriteExpression(w, exp.Condition, PREC_NULL_COAL > GetExpressionPrecedence(exp.Condition));

            w.Write(" ?? ");

            WriteExpression(w, exp.Expression, PREC_NULL_COAL >= GetExpressionPrecedence(exp.Expression));
        }
Example #5
0
 public override void VisitNullCoalescingExpression(INullCoalescingExpression value)
 {
     VisitExpression(new ConditionExpression
     {
         Condition = new BinaryExpression
         {
             Left     = value.Condition,
             Operator = BinaryOperator.ValueInequality,
             Right    = new LiteralExpression()
         },
         Then = value.Condition,
         Else = value.Expression
     });
 }
 public virtual IExpression TransformNullCoalescingExpression(INullCoalescingExpression value)
 {
     value.Condition = this.TransformExpression(value.Condition);
     value.Expression = this.TransformExpression(value.Expression);
     return value;
 }
 public ConvertCoalescingToConditionalQuickFix(UnityObjectNullCoalescingWarning warning)
 {
     myExpression = warning.Expression;
 }
Example #8
0
 public virtual void VisitNullCoalescingExpression(INullCoalescingExpression operation)
 {
     DefaultVisit(operation);
 }
Example #9
0
 public virtual void VisitNullCoalescingExpression(INullCoalescingExpression operation)
 {
     DefaultVisit(operation);
 }
Example #10
0
 public override void VisitNullCoalescingExpression(INullCoalescingExpression operation)
 {
     Visit(operation.PrimaryOperand);
     Visit(operation.SecondaryOperand);
 }
 public static INullCoalescingExpression Update(this INullCoalescingExpression self, IOperation @leftOperand, IOperation @rightOperand, Conversion @leftConversion, ITypeSymbol @type) => self;
 /// <inheritdoc />
 public override IOperation VisitNullCoalescingExpression(INullCoalescingExpression operation, object argument)
 {
     return(base.VisitNullCoalescingExpression(operation, argument));
 }
 public virtual void VisitNullCoalescingExpression(INullCoalescingExpression value)
 {
     this.VisitExpression(value.Condition);
     this.VisitExpression(value.Expression);
 }
 public virtual void VisitNullCoalescingExpression(INullCoalescingExpression value)
 {
     VisitExpression(value.Condition);
     VisitExpression(value.Expression);
 }
Example #15
0
 public override void VisitNullCoalescingExpression(INullCoalescingExpression operation)
 {
     base.VisitNullCoalescingExpression(operation);
 }
 public override void VisitNullCoalescingExpression(INullCoalescingExpression operation)
 {
     base.VisitNullCoalescingExpression(operation);
 }
 public UnityNullCoalescingWarning(INullCoalescingExpression expression)
 {
     Expression = expression;
 }
 private void WriteNullCoalescingExpression(INullCoalescingExpression value, IFormatter formatter)
 {
     formatter.Write("(");
     this.WriteExpression(value.Condition, formatter);
     formatter.Write("!!");
     formatter.Write(" ");
     formatter.WriteKeyword("?");
     formatter.Write(" ");
     this.WriteExpression(value.Condition, formatter);
     formatter.Write(" ");
     formatter.WriteKeyword(":");
     formatter.Write(" ");
     this.WriteExpression(value.Expression, formatter);
     formatter.Write(")");
 }