Skip to content

Commit 463887d

Browse files
Hirogopherbot
Hiro
authored andcommitted
go/types: add test cases for generic constraints, types and functions
Dups: #60856 For #60817 Change-Id: Ic0710758e170d6ceed66649fec08ef8054be4d6b GitHub-Last-Rev: 8bbc76a GitHub-Pull-Request: #61664 Reviewed-on: https://go-review.googlesource.com/c/go/+/514255 Reviewed-by: Matthew Dempsky <[email protected]> TryBot-Result: Gopher Robot <[email protected]> Reviewed-by: Robert Griesemer <[email protected]> Run-TryBot: Robert Griesemer <[email protected]> Auto-Submit: Robert Griesemer <[email protected]>
1 parent be910bf commit 463887d

File tree

2 files changed

+30
-6
lines changed

2 files changed

+30
-6
lines changed

src/cmd/compile/internal/syntax/printer_test.go

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ var exprTests = [][2]string{
169169
dup(`'a'`),
170170
dup(`"foo"`),
171171
dup("`bar`"),
172+
dup("any"),
172173

173174
// func and composite literals
174175
dup("func() {}"),
@@ -197,12 +198,18 @@ var exprTests = [][2]string{
197198
// new interfaces
198199
dup("interface{int}"),
199200
dup("interface{~int}"),
200-
dup("interface{~int}"),
201+
202+
// generic constraints
203+
dup("interface{~a | ~b | ~c; ~int | ~string; float64; m()}"),
201204
dup("interface{int | string}"),
202205
dup("interface{~int | ~string; float64; m()}"),
203-
dup("interface{~a | ~b | ~c; ~int | ~string; float64; m()}"),
204206
dup("interface{~T[int, string] | string}"),
205207

208+
// generic types
209+
dup("x[T]"),
210+
dup("x[N | A | S]"),
211+
dup("x[N, A]"),
212+
206213
// non-type expressions
207214
dup("(x)"),
208215
dup("x.f"),
@@ -250,6 +257,12 @@ var exprTests = [][2]string{
250257
dup("f(s...)"),
251258
dup("f(a, s...)"),
252259

260+
// generic functions
261+
dup("f[T]()"),
262+
dup("f[T](T)"),
263+
dup("f[T, T1]()"),
264+
dup("f[T, T1](T, T1)"),
265+
253266
dup("*x"),
254267
dup("&x"),
255268
dup("x + y"),

src/go/types/exprstring_test.go

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ var testExprs = []testEntry{
2121
dup(`'a'`),
2222
dup(`"foo"`),
2323
dup("`bar`"),
24+
dup("any"),
2425

2526
// func and composite literals
2627
{"func(){}", "(func() literal)"},
@@ -46,14 +47,18 @@ var testExprs = []testEntry{
4647
// new interfaces
4748
dup("interface{int}"),
4849
dup("interface{~int}"),
49-
dup("interface{~int}"),
50+
51+
// generic constraints
52+
dup("interface{~a | ~b | ~c; ~int | ~string; float64; m()}"),
5053
dup("interface{int | string}"),
5154
dup("interface{~int | ~string; float64; m()}"),
52-
53-
// See above.
54-
// dup("interface{type a, b, c; ~int | ~string; float64; m()}"),
5555
dup("interface{~T[int, string] | string}"),
5656

57+
// generic types
58+
dup("x[T]"),
59+
dup("x[N | A | S]"),
60+
dup("x[N, A]"),
61+
5762
// non-type expressions
5863
dup("(x)"),
5964
dup("x.f"),
@@ -101,6 +106,12 @@ var testExprs = []testEntry{
101106
dup("f(s...)"),
102107
dup("f(a, s...)"),
103108

109+
// generic functions
110+
dup("f[T]()"),
111+
dup("f[T](T)"),
112+
dup("f[T, T1]()"),
113+
dup("f[T, T1](T, T1)"),
114+
104115
dup("*x"),
105116
dup("&x"),
106117
dup("x + y"),

0 commit comments

Comments
 (0)