Exemplo n.º 1
0
        public Word Visit(ReturnNode returnNode)
        {
            if (returnNode.Expr == null)
            {
                return(new Return());
            }
            var   result = returnNode.Expr.Accept(this);
            PyObj pyObj;

            if (IsError(result))
            {
                ErrorFactory.CantReturnError(returnNode.Expr, result);
                return(new Return(MyNull.GetInstance()));
            }
            if (IsMemoryBlock(result))//comentar ese if else si se hace la desereferencia en atomic expr.
            {
                pyObj = ((MemoryBlock)result).Value;
            }
            else
            {
                pyObj = (PyObj)result;
            }
            //pyObj = (PyObj)result;//Descomentar esta linea si se hace la desereferencia en atomic expr.
            return(new Return(pyObj));
        }