github.com/HaHadaxigua/yaegi@v1.0.1/_test/issue-1187.go (about)

     1  package main
     2  
     3  import (
     4  	"io"
     5  	"os"
     6  )
     7  
     8  type sink interface {
     9  	io.Writer
    10  	io.Closer
    11  }
    12  
    13  func newSink() sink {
    14  	// return os.Stdout	// Stdout is special in yaegi tests
    15  	file, err := os.CreateTemp("", "yaegi-test.*")
    16  	if err != nil {
    17  		panic(err)
    18  	}
    19  	return file
    20  }
    21  
    22  func main() {
    23  	s := newSink()
    24  	n, err := s.Write([]byte("Hello\n"))
    25  	if err != nil {
    26  		panic(err)
    27  	}
    28  	var writer io.Writer = s
    29  	m, err := writer.Write([]byte("Hello\n"))
    30  	if err != nil {
    31  		panic(err)
    32  	}
    33  	var closer io.Closer = s
    34  	err = closer.Close()
    35  	if err != nil {
    36  		panic(err)
    37  	}
    38  	err = os.Remove(s.(*os.File).Name())
    39  	if err != nil {
    40  		panic(err)
    41  	}
    42  	println(m, n)
    43  }
    44  
    45  // Output:
    46  // 6 6