mirror of
https://github.com/golang/go
synced 2024-09-15 22:20:06 +00:00
68152359fd
The existing approach (alias name stands for generic type name) is an exception: it's the only place where a generic type could be used without explicit instantiation. The correct solution is currently under discussion (see proposal issue #46477). This CL requires that the RHS of an alias type declaration be an instantiated non-generic type. If #46477 is accepted, the implementation will require proper representation of alias types. Change-Id: Ie85b923213a64f39837e56e38e14757458272b93 Reviewed-on: https://go-review.googlesource.com/c/go/+/346294 Trust: Robert Griesemer <gri@golang.org> Reviewed-by: Robert Findley <rfindley@google.com>
42 lines
707 B
Go
42 lines
707 B
Go
// 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.
|
|
|
|
package main
|
|
|
|
import "a"
|
|
|
|
type R[T any] struct {
|
|
F T
|
|
}
|
|
|
|
// type S = R // disallowed for now
|
|
|
|
type Sint = R[int]
|
|
|
|
// type Simp = a.Rimp // disallowed for now
|
|
|
|
// type SimpString Simp[string] // disallowed for now
|
|
type SimpString a.Rimp[string]
|
|
|
|
func main() {
|
|
// var s S[int] // disallowed for now
|
|
var s R[int]
|
|
if s.F != 0 {
|
|
panic(s.F)
|
|
}
|
|
var s2 Sint
|
|
if s2.F != 0 {
|
|
panic(s2.F)
|
|
}
|
|
// var s3 Simp[string] // disallowed for now
|
|
var s3 a.Rimp[string]
|
|
if s3.F != "" {
|
|
panic(s3.F)
|
|
}
|
|
var s4 SimpString
|
|
if s4.F != "" {
|
|
panic(s4.F)
|
|
}
|
|
}
|