mirror of
https://github.com/golang/go.git
synced 2025-05-05 15:43:04 +00:00
test: add new test case for 51219 that triggers the types2 issue
The existing test for 51219 didn't actually trigger the types2 issue - I hadn't been able to minimize the test case yet properly. This new test case issue51219b.go now does trigger the types2 issue (it's only slightly different). Updates #51219 Change-Id: Iaba8144b4702ff4fefec86c899b8acef127b10dc Reviewed-on: https://go-review.googlesource.com/c/go/+/387814 Trust: Dan Scales <danscales@google.com> Reviewed-by: Robert Findley <rfindley@google.com>
This commit is contained in:
parent
a064a4f29a
commit
57dda9795d
@ -18,42 +18,3 @@ type IConstraint interface {
|
||||
|
||||
type I[T IConstraint] struct {
|
||||
}
|
||||
|
||||
// The following types form an even more complex recursion (through two type
|
||||
// constraints), and model the actual types in the issue (#51219) more closely.
|
||||
// However, they don't reveal any new issue. But it seems useful to leave this
|
||||
// complex set of types in a test in case it might be broken by future changes.
|
||||
|
||||
type Message struct {
|
||||
Interaction *Interaction[JsonRaw] `json:"interaction,omitempty"`
|
||||
}
|
||||
|
||||
type ResolvedDataConstraint interface {
|
||||
User | Message
|
||||
}
|
||||
|
||||
type Snowflake uint64
|
||||
|
||||
type ResolvedData[T ResolvedDataConstraint] map[Snowflake]T
|
||||
|
||||
type User struct {
|
||||
}
|
||||
|
||||
type Resolved struct {
|
||||
Users ResolvedData[User] `json:"users,omitempty"`
|
||||
}
|
||||
|
||||
type resolvedInteractionWithOptions struct {
|
||||
Resolved Resolved `json:"resolved,omitempty"`
|
||||
}
|
||||
|
||||
type UserCommandInteractionData struct {
|
||||
resolvedInteractionWithOptions
|
||||
}
|
||||
|
||||
type InteractionDataConstraint interface {
|
||||
JsonRaw | UserCommandInteractionData
|
||||
}
|
||||
|
||||
type Interaction[DataT InteractionDataConstraint] struct {
|
||||
}
|
||||
|
@ -6,13 +6,11 @@ package main
|
||||
|
||||
import (
|
||||
"a"
|
||||
"b"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var x a.I[a.JsonRaw]
|
||||
var y b.InteractionRequest[a.JsonRaw]
|
||||
|
||||
fmt.Printf("%v %v\n", x, y)
|
||||
fmt.Printf("%v\n", x)
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
{} {{}}
|
||||
{}
|
||||
|
37
test/typeparam/issue51219b.dir/a.go
Normal file
37
test/typeparam/issue51219b.dir/a.go
Normal file
@ -0,0 +1,37 @@
|
||||
// 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 a
|
||||
|
||||
type Interaction[DataT InteractionDataConstraint] struct {
|
||||
}
|
||||
|
||||
type InteractionDataConstraint interface {
|
||||
[]byte |
|
||||
UserCommandInteractionData
|
||||
}
|
||||
|
||||
type UserCommandInteractionData struct {
|
||||
resolvedInteractionWithOptions
|
||||
}
|
||||
|
||||
type resolvedInteractionWithOptions struct {
|
||||
Resolved Resolved `json:"resolved,omitempty"`
|
||||
}
|
||||
|
||||
type Resolved struct {
|
||||
Users ResolvedData[User] `json:"users,omitempty"`
|
||||
}
|
||||
|
||||
type ResolvedData[T ResolvedDataConstraint] map[uint64]T
|
||||
|
||||
type ResolvedDataConstraint interface {
|
||||
User | Message
|
||||
}
|
||||
|
||||
type User struct{}
|
||||
|
||||
type Message struct {
|
||||
Interaction *Interaction[[]byte] `json:"interaction,omitempty"`
|
||||
}
|
@ -4,8 +4,11 @@
|
||||
|
||||
package b
|
||||
|
||||
import "a"
|
||||
import (
|
||||
"./a"
|
||||
)
|
||||
|
||||
// InteractionRequest is an incoming request Interaction
|
||||
type InteractionRequest[T a.InteractionDataConstraint] struct {
|
||||
a.Interaction[T]
|
||||
}
|
14
test/typeparam/issue51219b.dir/p.go
Normal file
14
test/typeparam/issue51219b.dir/p.go
Normal file
@ -0,0 +1,14 @@
|
||||
// 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
|
||||
|
||||
import (
|
||||
"./b"
|
||||
)
|
||||
|
||||
// ResponseWriterMock mocks corde's ResponseWriter interface
|
||||
type ResponseWriterMock struct {
|
||||
x b.InteractionRequest[[]byte]
|
||||
}
|
7
test/typeparam/issue51219b.go
Normal file
7
test/typeparam/issue51219b.go
Normal file
@ -0,0 +1,7 @@
|
||||
// compiledir -G=3
|
||||
|
||||
// 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 ignored
|
Loading…
x
Reference in New Issue
Block a user