From 463887d5cc3e4cc30347f350f6cdc93f42766340 Mon Sep 17 00:00:00 2001 From: Hiro Date: Mon, 31 Jul 2023 08:50:43 +0000 Subject: [PATCH] go/types: add test cases for generic constraints, types and functions 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 TryBot-Result: Gopher Robot Reviewed-by: Robert Griesemer Run-TryBot: Robert Griesemer Auto-Submit: Robert Griesemer --- .../compile/internal/syntax/printer_test.go | 17 +++++++++++++++-- src/go/types/exprstring_test.go | 19 +++++++++++++++---- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/cmd/compile/internal/syntax/printer_test.go b/src/cmd/compile/internal/syntax/printer_test.go index ceb512ef89..99baf7f5b6 100644 --- a/src/cmd/compile/internal/syntax/printer_test.go +++ b/src/cmd/compile/internal/syntax/printer_test.go @@ -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"), diff --git a/src/go/types/exprstring_test.go b/src/go/types/exprstring_test.go index 604ceb9807..75bdc0e513 100644 --- a/src/go/types/exprstring_test.go +++ b/src/go/types/exprstring_test.go @@ -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"), -- 2.50.0