lib/Internal/Producer.php
private function complete()
    {
        if ($this->complete) {
            $message = "Iterator has already been completed";

            if (isset($this->resolutionTrace)) {
                $trace = formatStacktrace($this->resolutionTrace);
                $message .= ". Previous completion trace:\n\n{$trace}\n\n";
            } else {
                // @codeCoverageIgnoreStart
                $message .= ", define environment variable AMP_DEBUG or const AMP_DEBUG = true and enable assertions "
                    . "for a stacktrace of the previous resolution.";
                // @codeCoverageIgnoreEnd
            }

            throw new \Error($message);
        }

        \assert((function () {
            $env = \getenv("AMP_DEBUG") ?: "0";
            if (($env !== "0" && $env !== "false") || (\defined("AMP_DEBUG") && \AMP_DEBUG)) {
                $trace = \debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS);
                \array_shift($trace); // remove current closure
                $this->resolutionTrace = $trace;
            }

            return true;
        })());

        $this->complete = new Success(false);

        if ($this->waiting !== null) {
            $waiting = $this->waiting;
            $this->waiting = null;
            $waiting->resolve($this->complete);
        }
    }
private function complete()
    {
        if ($this->complete) {
            $message = "Iterator has already been completed";

            if (isset($this->resolutionTrace)) {
                $trace = formatStacktrace($this->resolutionTrace);
                $message .= ". Previous completion trace:\n\n{$trace}\n\n";
            } else {
                // @codeCoverageIgnoreStart
                $message .= ", define environment variable AMP_DEBUG or const AMP_DEBUG = true and enable assertions "
                    . "for a stacktrace of the previous resolution.";
                // @codeCoverageIgnoreEnd
            }

            throw new \Error($message);
        }

        \assert((function () {
            $env = \getenv("AMP_DEBUG") ?: "0";
            if (($env !== "0" && $env !== "false") || (\defined("AMP_DEBUG") && \AMP_DEBUG)) {
                $trace = \debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS);
                \array_shift($trace); // remove current closure
                $this->resolutionTrace = $trace;
            }

            return true;
        })());

        $this->complete = new Success(false);

        if ($this->waiting !== null) {
            $waiting = $this->waiting;
            $this->waiting = null;
            $waiting->resolve($this->complete);
        }
    }
private function complete ( ) { if ( $ this -> complete ) { $ message = "Iterator has already been completed" ; if ( isset ( $ this -> resolutionTrace ) ) { $ trace = formatStacktrace ( $ this -> resolutionTrace ) ; $ message .= ". Previous completion trace:\n\n{$trace}\n\n" ; } else { // @codeCoverageIgnoreStart $ message .= ", define environment variable AMP_DEBUG or const AMP_DEBUG = true and enable assertions " . "for a stacktrace of the previous resolution." ; // @codeCoverageIgnoreEnd } throw new \ Error ( $ message ) ; } \ assert ( ( function ( ) { $ env = \ getenv ( "AMP_DEBUG" ) ? : "0" ; if ( ( $ env !== "0" && $ env !== "false" ) || ( \ defined ( "AMP_DEBUG" ) && \ AMP_DEBUG ) ) { $ trace = \ debug_backtrace ( \ DEBUG_BACKTRACE_IGNORE_ARGS ) ; \ array_shift ( $ trace ) ; // remove current closure $ this -> resolutionTrace = $ trace ; } return true ; } ) ( ) ) ; $ this -> complete = new Success ( false ) ; if ( $ this -> waiting !== null ) { $ waiting = $ this -> waiting ; $ this -> waiting = null ; $ waiting -> resolve ( $ this -> complete ) ; } }
Completes the iterator.

@throws \Error If the iterator has already been completed.
Completes the iterator .