Exemplo n.º 1
0
        static void _chainCoreFuture(_Future source, _Future target)
        {
            D.assert(target._mayAddListener); // Not completed, not already chained.
            while (source._isChained)
            {
                source = source._chainSource;
            }

            if (source._isComplete)
            {
                _FutureListener listeners = target._removeListeners();
                target._cloneResult(source);
                _propagateToListeners(target, listeners);
            }
            else
            {
                _FutureListener listeners = (_FutureListener)target._resultOrListeners;
                target._setChained(source);
                source._prependListeners(listeners);
            }
        }