summaryrefslogtreecommitdiffstats
path: root/src/cmd/compile/internal/syntax/testdata/smoketest.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/compile/internal/syntax/testdata/smoketest.go')
-rw-r--r--src/cmd/compile/internal/syntax/testdata/smoketest.go73
1 files changed, 73 insertions, 0 deletions
diff --git a/src/cmd/compile/internal/syntax/testdata/smoketest.go b/src/cmd/compile/internal/syntax/testdata/smoketest.go
new file mode 100644
index 0000000..6b3593a
--- /dev/null
+++ b/src/cmd/compile/internal/syntax/testdata/smoketest.go
@@ -0,0 +1,73 @@
+// Copyright 2020 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.
+
+// This file contains basic generic code snippets.
+
+package p
+
+// type parameter lists
+type B[P any] struct{}
+type _[P interface{}] struct{}
+type _[P B] struct{}
+type _[P B[P]] struct{}
+
+type _[A, B, C any] struct{}
+type _[A, B, C B] struct{}
+type _[A, B, C B[A, B, C]] struct{}
+type _[A1, A2 B1, A3 B2, A4, A5, A6 B3] struct{}
+
+type _[A interface{}] struct{}
+type _[A, B interface{ m() }] struct{}
+
+type _[A, B, C any] struct{}
+
+// in functions
+func _[P any]()
+func _[P interface{}]()
+func _[P B]()
+func _[P B[P]]()
+
+// type instantiations
+type _ T[int]
+
+// in expressions
+var _ = T[int]{}
+
+// in embedded types
+type _ struct{ T[int] }
+
+// interfaces
+type _ interface {
+ m()
+ ~int
+}
+
+type _ interface {
+ ~int | ~float | ~string
+ ~complex128
+ underlying(underlying underlying) underlying
+}
+
+type _ interface {
+ T
+ T[int]
+}
+
+// tricky cases
+func _(T[P], T[P1, P2])
+func _(a [N]T)
+
+type _ struct {
+ T[P]
+ T[P1, P2]
+ f[N]
+}
+type _ interface {
+ m()
+
+ // instantiated types
+ T[ /* ERROR empty type argument list */ ]
+ T[P]
+ T[P1, P2]
+}