Esempio n. 1
0
        public void VisitNode(JSReturnExpression node)
        {
            if (node.Value!= null && node.Value.SymbolInfo != null)
            {
                ParentNode.SymbolInfo = node.Value.SymbolInfo;
                node.SymbolInfo = null;
            }

            VisitChildren(node);
        }
Esempio n. 2
0
        public void VisitNode(JSReturnExpression node)
        {
            if (node.Value != null && node.Value.SymbolInfo != null)
            {
                ParentNode.SymbolInfo = node.Value.SymbolInfo;
                node.SymbolInfo       = null;
            }

            VisitChildren(node);
        }
Esempio n. 3
0
        public void VisitNode(JSReturnExpression ret)
        {
            Output.WriteRaw("return");

            if (ret.Value != null)
            {
                Output.Space();
                Visit(ret.Value);
            }
        }
Esempio n. 4
0
        public void VisitNode(JSReturnExpression re)
        {
            RecordUntargettedExit();

            VisitChildren(re);
        }
Esempio n. 5
0
 public void VisitNode(JSReturnExpression ret)
 {
     Formatter.WriteSExpr("return", (_) =>
                          Visit(ret.Value)
                          );
 }
Esempio n. 6
0
        public void VisitNode(JSReturnExpression ret)
        {
            ReturnsSeen++;

            var returnValue = ret.Value;
            JSResultReferenceExpression rre;

            while ((rre = returnValue as JSResultReferenceExpression) != null)
            {
                returnValue = rre.Referent;
            }

            var retInvocation = returnValue as JSInvocationExpression;

            if (retInvocation != null)
            {
                State.ResultVariable = null;
                State.ResultIsNew    = false;

                if (retInvocation.JSMethod != null)
                {
                    if (ReturnsSeen == 1)
                    {
                        State.ResultMethod = retInvocation.JSMethod;
                    }
                    else if (retInvocation.JSMethod != State.ResultMethod)
                    {
                        State.ResultMethod = null;
                    }
                }
                else
                {
                    State.ResultMethod = null;
                }
            }
            else
            {
                var retVar = returnValue as JSVariable;
                if (retVar != null)
                {
                    State.EscapingVariables.Add(retVar.Identifier);

                    if (ReturnsSeen == 1)
                    {
                        State.ResultVariable = retVar.Identifier;
                    }
                    else if (State.ResultVariable != retVar.Identifier)
                    {
                        State.ResultVariable = null;
                    }
                }
                else
                {
                    State.ResultVariable = null;
                }

                var retNew = returnValue as JSNewExpression;
                if (ReturnsSeen == 1)
                {
                    State.ResultIsNew = (retNew != null);
                }
                else
                {
                    State.ResultIsNew &= (retNew != null);
                }
            }

            VisitChildren(ret);
        }
Esempio n. 7
0
        public void VisitNode(JSReturnExpression re)
        {
            VisitChildren(re);

            Result.Add(GenerateSubtreeBarrier(0, BarrierFlags.Jump));
        }