Example #1
0
        public override void VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression)
        {
            if (unaryOperatorExpression.Operator == UnaryOperatorType.Await)
            {
                var tryBlock = unaryOperatorExpression.GetParent<TryCatchStatement>();

                if (tryBlock != null)
                {
                    this.Found = true;
                }
            }

            base.VisitUnaryOperatorExpression(unaryOperatorExpression);
        }
Example #2
0
        public override void VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression)
        {
            if (unaryOperatorExpression.Operator == UnaryOperatorType.Await)
            {
                var tryBlock = unaryOperatorExpression.GetParent <TryCatchStatement>();

                if (tryBlock != null)
                {
                    this.Found = true;
                }
            }

            base.VisitUnaryOperatorExpression(unaryOperatorExpression);
        }
Example #3
0
        /// <summary>
        ///     Translates an unary expression, e.g. "value++".
        /// </summary>
        public override StringBuilder VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOpExpr)
        {
            var result = new StringBuilder();

            var expr = unaryOpExpr.Expression.AcceptVisitor(this);

            // unary operator type mapping
            var opPreAsngmt = new Dictionary <UnaryOperatorType, string>
            {
                { UnaryOperatorType.Decrement, "--" },
                { UnaryOperatorType.Increment, "++" },
                { UnaryOperatorType.Minus, "-" },
                { UnaryOperatorType.Plus, "+" },
                { UnaryOperatorType.BitNot, "~" },
                { UnaryOperatorType.Not, "!" },
                { UnaryOperatorType.PostDecrement, "--" },
                { UnaryOperatorType.PostIncrement, "++" },
            };

            var opPostAsngmt = new Dictionary <UnaryOperatorType, string>
            {
                { UnaryOperatorType.PostDecrement, "--" },
                { UnaryOperatorType.PostIncrement, "++" },
            };

            if (opPreAsngmt.ContainsKey(unaryOpExpr.Operator))
            {
                result.Append(opPreAsngmt[unaryOpExpr.Operator]).Append(expr);
            }
            else if (opPostAsngmt.ContainsKey(unaryOpExpr.Operator))
            {
                result.Append(expr).Append(opPostAsngmt[unaryOpExpr.Operator]);
            }
            else
            {
                var dInstr = GetInstructionFromStmt(unaryOpExpr.GetParent <Statement>());
                DebugLog.Error("Unary operator '" + unaryOpExpr.Operator + "' is not supported", dInstr);
            }

            return(result);
        }