Source file test/typeparam/issue52228.go

     1  // run
     2  
     3  // Copyright 2022 The Go Authors. All rights reserved.
     4  // Use of this source code is governed by a BSD-style
     5  // license that can be found in the LICENSE file.
     6  
     7  package main
     8  
     9  type SomeInterface interface {
    10  	Whatever()
    11  }
    12  
    13  func X[T any]() T {
    14  	var m T
    15  
    16  	// for this example, this block should never run
    17  	if _, ok := any(m).(SomeInterface); ok {
    18  		var dst SomeInterface
    19  		_, _ = dst.(T)
    20  		return dst.(T)
    21  	}
    22  
    23  	return m
    24  }
    25  
    26  type holder struct{}
    27  
    28  func main() {
    29  	X[holder]()
    30  }
    31  

View as plain text