// +build ignore,OMIT

package main

import (
	"fmt"
)

func main() {
	in, out := make(chan int), make(chan int)
	go buffer(in, out)
	for i := 0; i < 10; i++ {
		in <- i
	}
	close(in)
	for i := range out {
		fmt.Println(i)
	}
}

// buffer provides an unbounded buffer between in and out.  buffer
// exits when in is closed and all items in the buffer have been sent
// to out, at which point it closes out.
func buffer(in <-chan int, out chan<- int) {
	var buf []int
	for in != nil || len(buf) > 0 {
		var i int
		var c chan<- int
		if len(buf) > 0 {
			i = buf[0]
			c = out // enable send case
		}
		select {
		case n, ok := <-in:
			if ok {
				buf = append(buf, n)
			} else {
				in = nil // disable receive case
			}
		case c <- i:
			buf = buf[1:]
		}
	}
	close(out)
}
