From 38cecb22903415b34991ce76efe725f47aaf21a3 Mon Sep 17 00:00:00 2001 From: Matthew Dempsky Date: Fri, 16 Sep 2022 13:11:49 -0700 Subject: [PATCH] test: add regress test for issue 55101 This test case already works with GOEXPERIMENT=unified, and it never worked with Go 1.18 or Go 1.19. So this CL simply adds a regress test to make sure it continues working. Fixes #55101. Change-Id: I7e06bfdc136ce124f65cdcf02d20a1050b841d42 Reviewed-on: https://go-review.googlesource.com/c/go/+/431455 Run-TryBot: Matthew Dempsky Reviewed-by: Cherry Mui TryBot-Result: Gopher Robot Reviewed-by: Cuong Manh Le --- src/go/internal/gcimporter/gcimporter_test.go | 1 + test/run.go | 1 + test/typeparam/issue55101.go | 16 ++++++++++++++++ 3 files changed, 18 insertions(+) create mode 100644 test/typeparam/issue55101.go diff --git a/src/go/internal/gcimporter/gcimporter_test.go b/src/go/internal/gcimporter/gcimporter_test.go index dd41c2550c..54fda86208 100644 --- a/src/go/internal/gcimporter/gcimporter_test.go +++ b/src/go/internal/gcimporter/gcimporter_test.go @@ -179,6 +179,7 @@ func TestImportTypeparamTests(t *testing.T) { "issue50417.go": "inconsistent interface member sorting", "issue53419.go": "fails to compile", "issue53477.go": "fails to compile", + "issue55101.go": "fails to compile", } for _, entry := range list { diff --git a/test/run.go b/test/run.go index 3c5b10ad32..f4d24c597b 100644 --- a/test/run.go +++ b/test/run.go @@ -1987,6 +1987,7 @@ var go118Failures = setOf( "typeparam/issue51521.go", // 1.18 compiler produces bad panic message and link error "typeparam/issue54456.go", // 1.18 compiler fails to distinguish local generic types "typeparam/issue54497.go", // 1.18 compiler is more conservative about inlining due to repeated issues + "typeparam/issue55101.go", // 1.18 compiler ICEs writing export data "typeparam/mdempsky/16.go", // 1.18 compiler uses interface shape type in failed type assertions "typeparam/mdempsky/17.go", // 1.18 compiler mishandles implicit conversions from range loops "typeparam/mdempsky/18.go", // 1.18 compiler mishandles implicit conversions in select statements diff --git a/test/typeparam/issue55101.go b/test/typeparam/issue55101.go new file mode 100644 index 0000000000..2d45c87a28 --- /dev/null +++ b/test/typeparam/issue55101.go @@ -0,0 +1,16 @@ +// compile + +// 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 + +func F() *Cache[error] { return nil } + +type Cache[T any] struct{ l *List[entry[T]] } +type entry[T any] struct{ value T } +type List[T any] struct{ len int } + +func (c *Cache[V]) Len() int { return c.l.Len() } +func (l *List[T]) Len() int { return l.len } -- 2.48.1