]> Cypherpunks repositories - gostls13.git/commitdiff
go/types: add test cases for generic constraints, types and functions
authorHiro <laciferin@gmail.com>
Mon, 31 Jul 2023 08:50:43 +0000 (08:50 +0000)
committerGopher Robot <gobot@golang.org>
Mon, 31 Jul 2023 17:08:18 +0000 (17:08 +0000)
Dups: #60856
For #60817

Change-Id: Ic0710758e170d6ceed66649fec08ef8054be4d6b
GitHub-Last-Rev: 8bbc76aaa704f102f9eabdfead45da452e1ea6e6
GitHub-Pull-Request: golang/go#61664
Reviewed-on: https://go-review.googlesource.com/c/go/+/514255
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Robert Griesemer <gri@google.com>
Run-TryBot: Robert Griesemer <gri@google.com>
Auto-Submit: Robert Griesemer <gri@google.com>

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

index ceb512ef894dbd15af7dd687a4d09a668c916c4a..99baf7f5b63c96741701a18c03e8ca99a68c597e 100644 (file)
@@ -169,6 +169,7 @@ var exprTests = [][2]string{
        dup(`'a'`),
        dup(`"foo"`),
        dup("`bar`"),
+       dup("any"),
 
        // func and composite literals
        dup("func() {}"),
@@ -197,12 +198,18 @@ var exprTests = [][2]string{
        // new interfaces
        dup("interface{int}"),
        dup("interface{~int}"),
-       dup("interface{~int}"),
+
+       // generic constraints
+       dup("interface{~a | ~b | ~c; ~int | ~string; float64; m()}"),
        dup("interface{int | string}"),
        dup("interface{~int | ~string; float64; m()}"),
-       dup("interface{~a | ~b | ~c; ~int | ~string; float64; m()}"),
        dup("interface{~T[int, string] | string}"),
 
+       // generic types
+       dup("x[T]"),
+       dup("x[N | A | S]"),
+       dup("x[N, A]"),
+
        // non-type expressions
        dup("(x)"),
        dup("x.f"),
@@ -250,6 +257,12 @@ var exprTests = [][2]string{
        dup("f(s...)"),
        dup("f(a, s...)"),
 
+       // generic functions
+       dup("f[T]()"),
+       dup("f[T](T)"),
+       dup("f[T, T1]()"),
+       dup("f[T, T1](T, T1)"),
+
        dup("*x"),
        dup("&x"),
        dup("x + y"),
index 604ceb98072ae14f5a496730edf5259390872945..75bdc0e513d3a7fca7fb0ed3b1a5f1dc74b639de 100644 (file)
@@ -21,6 +21,7 @@ var testExprs = []testEntry{
        dup(`'a'`),
        dup(`"foo"`),
        dup("`bar`"),
+       dup("any"),
 
        // func and composite literals
        {"func(){}", "(func() literal)"},
@@ -46,14 +47,18 @@ var testExprs = []testEntry{
        // new interfaces
        dup("interface{int}"),
        dup("interface{~int}"),
-       dup("interface{~int}"),
+
+       // generic constraints
+       dup("interface{~a | ~b | ~c; ~int | ~string; float64; m()}"),
        dup("interface{int | string}"),
        dup("interface{~int | ~string; float64; m()}"),
-
-       // See above.
-       // dup("interface{type a, b, c; ~int | ~string; float64; m()}"),
        dup("interface{~T[int, string] | string}"),
 
+       // generic types
+       dup("x[T]"),
+       dup("x[N | A | S]"),
+       dup("x[N, A]"),
+
        // non-type expressions
        dup("(x)"),
        dup("x.f"),
@@ -101,6 +106,12 @@ var testExprs = []testEntry{
        dup("f(s...)"),
        dup("f(a, s...)"),
 
+       // generic functions
+       dup("f[T]()"),
+       dup("f[T](T)"),
+       dup("f[T, T1]()"),
+       dup("f[T, T1](T, T1)"),
+
        dup("*x"),
        dup("&x"),
        dup("x + y"),