Text file src/cmd/compile/testdata/script/issue75461.txt

     1  go build main.go
     2  ! stdout .
     3  ! stderr .
     4  
     5  -- main.go --
     6  package main
     7  
     8  import (
     9  	"demo/registry"
    10  )
    11  
    12  func main() {
    13  	_ = registry.NewUserRegistry()
    14  }
    15  
    16  -- go.mod --
    17  module demo
    18  
    19  go 1.24
    20  
    21  -- model/user.go --
    22  package model
    23  
    24  type User struct {
    25  	ID int
    26  }
    27  
    28  func (c *User) String() string {
    29  	return ""
    30  }
    31  
    32  -- ordered/map.go --
    33  package ordered
    34  
    35  type OrderedMap[K comparable, V any] struct {
    36  	m map[K]V
    37  }
    38  
    39  func New[K comparable, V any](options ...any) *OrderedMap[K, V] {
    40  	orderedMap := &OrderedMap[K, V]{}
    41  	return orderedMap
    42  }
    43  
    44  -- registry/user.go --
    45  package registry
    46  
    47  import (
    48  	"demo/model"
    49  	"demo/ordered"
    50  )
    51  
    52  type baseRegistry = Registry[model.User, *model.User]
    53  
    54  type UserRegistry struct {
    55  	*baseRegistry
    56  }
    57  
    58  type Registry[T any, P PStringer[T]] struct {
    59  	m *ordered.OrderedMap[string, P]
    60  }
    61  
    62  type PStringer[T any] interface {
    63  	*T
    64  	String() string
    65  }
    66  
    67  func NewRegistry[T any, P PStringer[T]]() *Registry[T, P] {
    68  	r := &Registry[T, P]{
    69  		m: ordered.New[string, P](),
    70  	}
    71  	return r
    72  }
    73  
    74  func NewUserRegistry() *UserRegistry {
    75  	return &UserRegistry{
    76  		baseRegistry: NewRegistry[model.User](),
    77  	}
    78  }
    79  

View as plain text