Source file src/internal/types/testdata/fixedbugs/issue72936.go

     1  // Copyright 2025 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package p
     6  
     7  func _[C chan<- int | chan int](c C)   { c <- 0 }
     8  func _[C chan int | chan<- int](c C)   { c <- 0 }
     9  func _[C <-chan int | chan<- int](c C) { c <- /* ERROR "receive-only channel <-chan int" */ 0 }
    10  
    11  func _[C <-chan int | chan int](c C)   { <-c }
    12  func _[C chan int | <-chan int](c C)   { <-c }
    13  func _[C chan<- int | <-chan int](c C) { <-c /* ERROR "send-only channel chan<- int" */ }
    14  
    15  // from issue report
    16  
    17  func send[C interface{ ~chan<- V | ~chan V }, V any](c C, v V) {
    18  	c <- v
    19  }
    20  
    21  func receive[C interface{ ~<-chan V | ~chan V }, V any](c C) V {
    22  	return <-c
    23  }
    24  

View as plain text