]> Cypherpunks repositories - gostls13.git/commitdiff
test: add test cases for issue47892.
authorwdvxdr <wdvxdr1123@gmail.com>
Thu, 26 Aug 2021 08:20:33 +0000 (16:20 +0800)
committerDan Scales <danscales@google.com>
Sun, 29 Aug 2021 14:10:21 +0000 (14:10 +0000)
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>

test/typeparam/issue47892.dir/a.go [new file with mode: 0644]
test/typeparam/issue47892.dir/main.go [new file with mode: 0644]
test/typeparam/issue47892.go [new file with mode: 0644]
test/typeparam/issue47892b.dir/a.go [new file with mode: 0644]
test/typeparam/issue47892b.dir/main.go [new file with mode: 0644]
test/typeparam/issue47892b.go [new file with mode: 0644]

diff --git a/test/typeparam/issue47892.dir/a.go b/test/typeparam/issue47892.dir/a.go
new file mode 100644 (file)
index 0000000..b63d604
--- /dev/null
@@ -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
+}
diff --git a/test/typeparam/issue47892.dir/main.go b/test/typeparam/issue47892.dir/main.go
new file mode 100644 (file)
index 0000000..bd610d4
--- /dev/null
@@ -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))
+}
diff --git a/test/typeparam/issue47892.go b/test/typeparam/issue47892.go
new file mode 100644 (file)
index 0000000..572f680
--- /dev/null
@@ -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
\ No newline at end of file
diff --git a/test/typeparam/issue47892b.dir/a.go b/test/typeparam/issue47892b.dir/a.go
new file mode 100644 (file)
index 0000000..5adb492
--- /dev/null
@@ -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{}
+}
diff --git a/test/typeparam/issue47892b.dir/main.go b/test/typeparam/issue47892b.dir/main.go
new file mode 100644 (file)
index 0000000..70df440
--- /dev/null
@@ -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]
+}
diff --git a/test/typeparam/issue47892b.go b/test/typeparam/issue47892b.go
new file mode 100644 (file)
index 0000000..87b4ff4
--- /dev/null
@@ -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