test: add test cases for issue47892.

This issue has been fixed in https://golang.org/cl/345411

Fixes: #47892

Change-Id: I13dd3814650913da065e5f24a0c61d30adb0633a
Reviewed-on: https://go-review.googlesource.com/c/go/+/345229
Reviewed-by: Dan Scales <danscales@google.com>
Trust: Dan Scales <danscales@google.com>
Trust: Keith Randall <khr@golang.org>
Trust: Alberto Donizetti <alb.donizetti@gmail.com>
Run-TryBot: Alberto Donizetti <alb.donizetti@gmail.com>
TryBot-Result: Go Bot <gobot@golang.org>
This commit is contained in:
wdvxdr 2021-08-26 16:20:33 +08:00 committed by Dan Scales
parent f4cd001b57
commit f29abccd8a
6 changed files with 98 additions and 0 deletions

View file

@ -0,0 +1,17 @@
// Copyright 2021 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 a
type Index[T any] interface {
G() T
}
type I1[T any] struct {
a T
}
func (i *I1[T]) G() T {
return i.a
}

View file

@ -0,0 +1,21 @@
// Copyright 2021 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 main
import "a"
type Model[T any] struct {
index a.Index[T]
}
func NewModel[T any](index a.Index[T]) Model[T] {
return Model[T]{
index: index,
}
}
func main() {
_ = NewModel[int]((*a.I1[int])(nil))
}

View file

@ -0,0 +1,7 @@
// rundir -G=3
// Copyright 2021 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 ignored

View file

@ -0,0 +1,29 @@
// Copyright 2021 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 a
type T struct{ p *int64 }
type i struct{}
func G() *T { return &T{nil} }
func (j i) F(a, b *T) *T {
n := *a.p + *b.p
return &T{&n}
}
func (j i) G() *T {
return &T{}
}
type I[Idx any] interface {
G() Idx
F(a, b Idx) Idx
}
func Gen() I[*T] {
return i{}
}

View file

@ -0,0 +1,17 @@
// Copyright 2021 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 main
import "a"
type S[Idx any] struct {
A string
B Idx
}
type O[Idx any] struct {
A int
B a.I[Idx]
}

View file

@ -0,0 +1,7 @@
// compiledir -G=3
// Copyright 2021 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 ignored