mirror of
https://github.com/golang/go
synced 2024-11-26 04:07:59 -07:00
[dev.typeparams] cmd/compile/internal/syntax: accept embedded type literals
The parser accepted embedded elements but the first term of an element had to be a ~-term or a type name. This CL fixes that. Change-Id: I013b6cdc5963fb228867ca6597f9139db2be7ec5 Reviewed-on: https://go-review.googlesource.com/c/go/+/321109 Trust: Robert Griesemer <gri@golang.org> Run-TryBot: Robert Griesemer <gri@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Robert Findley <rfindley@google.com>
This commit is contained in:
parent
f3fc8b5779
commit
81b22480cf
@ -1443,6 +1443,18 @@ func (p *parser) interfaceType() *InterfaceType {
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
default:
|
||||
if p.mode&AllowGenerics != 0 {
|
||||
pos := p.pos()
|
||||
if t := p.typeOrNil(); t != nil {
|
||||
f := new(Field)
|
||||
f.pos = pos
|
||||
f.Type = t
|
||||
typ.MethodList = append(typ.MethodList, p.embeddedElem(f))
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if p.mode&AllowGenerics != 0 {
|
||||
|
@ -25,7 +25,6 @@ type _ interface {
|
||||
~int | ~string
|
||||
}
|
||||
|
||||
|
||||
type _ interface {
|
||||
m()
|
||||
~int
|
||||
@ -34,3 +33,48 @@ type _ interface {
|
||||
~int | ~string
|
||||
type bool, int, float64
|
||||
}
|
||||
|
||||
type _ interface {
|
||||
int
|
||||
[]byte
|
||||
[10]int
|
||||
struct{}
|
||||
*int
|
||||
func()
|
||||
interface{}
|
||||
map[string]int
|
||||
chan T
|
||||
chan<- T
|
||||
<-chan T
|
||||
T[int]
|
||||
}
|
||||
|
||||
type _ interface {
|
||||
int | string
|
||||
[]byte | string
|
||||
[10]int | string
|
||||
struct{} | string
|
||||
*int | string
|
||||
func() | string
|
||||
interface{} | string
|
||||
map[string]int | string
|
||||
chan T | string
|
||||
chan<- T | string
|
||||
<-chan T | string
|
||||
T[int] | string
|
||||
}
|
||||
|
||||
type _ interface {
|
||||
~int | string
|
||||
~[]byte | string
|
||||
~[10]int | string
|
||||
~struct{} | string
|
||||
~*int | string
|
||||
~func() | string
|
||||
~interface{} | string
|
||||
~map[string]int | string
|
||||
~chan T | string
|
||||
~chan<- T | string
|
||||
~<-chan T | string
|
||||
~T[int] | string
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user