Exemplo n.º 1
0
        protected override void DoEmit()
        {
            if (this.ExpressionStatement.IsNull)
            {
                return;
            }

            var oldSemiColon = this.Emitter.EnableSemicolon;

            List <Expression> awaiters = null;

            if (this.Emitter.IsAsync)
            {
                var awaitSearch = new AwaitSearchVisitor();
                this.ExpressionStatement.Expression.AcceptVisitor(awaitSearch);
                awaiters = awaitSearch.GetAwaitExpressions();
            }

            bool isAwaiter = this.ExpressionStatement.Expression is UnaryOperatorExpression && ((UnaryOperatorExpression)this.ExpressionStatement.Expression).Operator == UnaryOperatorType.Await;

            this.ExpressionStatement.Expression.AcceptVisitor(this.Emitter);

            if (this.Emitter.EnableSemicolon && !isAwaiter)
            {
                this.WriteSemiColon(true);
            }

            if (oldSemiColon)
            {
                this.Emitter.EnableSemicolon = true;
            }
        }
Exemplo n.º 2
0
        protected override void DoEmit()
        {
            if (this.ExpressionStatement.IsNull)
            {
                return;
            }

            var oldSemiColon = this.Emitter.EnableSemicolon;

            List<Expression> awaiters = null;

            if (this.Emitter.IsAsync)
            {
                var awaitSearch = new AwaitSearchVisitor();
                this.ExpressionStatement.Expression.AcceptVisitor(awaitSearch);
                awaiters = awaitSearch.GetAwaitExpressions();
            }

            bool isAwaiter = this.ExpressionStatement.Expression is UnaryOperatorExpression && ((UnaryOperatorExpression)this.ExpressionStatement.Expression).Operator == UnaryOperatorType.Await;

            this.ExpressionStatement.Expression.AcceptVisitor(this.Emitter);

            if (this.Emitter.EnableSemicolon && !isAwaiter)
            {
                this.WriteSemiColon(true);
            }

            if (oldSemiColon)
            {
                this.Emitter.EnableSemicolon = true;
            }
        }
Exemplo n.º 3
0
        protected Expression[] GetAwaiters(AstNode node)
        {
            var awaitSearch = new AwaitSearchVisitor();

            node.AcceptVisitor(awaitSearch);

            return(awaitSearch.GetAwaitExpressions().ToArray());
        }
Exemplo n.º 4
0
        protected Expression[] GetAwaiters(AstNode node)
        {
            var awaitSearch = new AwaitSearchVisitor();
            node.AcceptVisitor(awaitSearch);

            return awaitSearch.GetAwaitExpressions().ToArray();
        }