LittleDemon WebShell


Linux in-mum-web1499.main-hosting.eu 5.14.0-503.40.1.el9_5.x86_64 #1 SMP PREEMPT_DYNAMIC Mon May 5 06:06:04 EDT 2025 x86_64
Path : /opt/golang/1.22.0/src/internal/types/testdata/fixedbugs/
File Upload :
Command :
Current File : //opt/golang/1.22.0/src/internal/types/testdata/fixedbugs/issue50426.go

// Copyright 2022 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package p

type A1 [2]uint64
type A2 [2]uint64

func (a A1) m() A1 { return a }
func (a A2) m() A2 { return a }

func f[B any, T interface {
	A1 | A2
	m() T
}](v T) {
}

func _() {
	var v A2
	// Use function type inference to infer type A2 for T.
	// Don't use constraint type inference before function
	// type inference for typed arguments, otherwise it would
	// infer type [2]uint64 for T which doesn't have method m
	// (was the bug).
	f[int](v)
}

// Keep using constraint type inference before function type
// inference for untyped arguments so we infer type float64
// for E below, and not int (which would not work).
func g[S ~[]E, E any](S, E) {}

func _() {
	var s []float64
	g[[]float64](s, 0)
}

// Keep using constraint type inference after function
// type inference for untyped arguments so we infer
// missing type arguments for which we only have the
// untyped arguments as starting point.
func h[E any, R []E](v E) R { return R{v} }
func _() []int              { return h(0) }

LittleDemon - FACEBOOK
[ KELUAR ]