mirror of https://github.com/golang/go.git
allow parens to disambiguate types.
examples:
chan <- (chan int)
chan (<- chan int)
(map[string]func())("a": main)
R=ken
OCL=25151
CL=25151
This commit is contained in:
parent
6950491b4f
commit
ebc10db3e1
|
|
@ -1004,6 +1004,10 @@ convtype:
|
|||
$$->type = $5;
|
||||
}
|
||||
| structtype
|
||||
| '(' type ')'
|
||||
{
|
||||
$$ = $2;
|
||||
}
|
||||
|
||||
/*
|
||||
* to avoid parsing conflicts, type is split into
|
||||
|
|
@ -1031,6 +1035,10 @@ Btype:
|
|||
| Bchantype
|
||||
| Bfntype
|
||||
| Bothertype
|
||||
| '(' type ')'
|
||||
{
|
||||
$$ = $2;
|
||||
}
|
||||
|
||||
non_name_type:
|
||||
chantype
|
||||
|
|
@ -1052,6 +1060,10 @@ Bnon_chan_type:
|
|||
nametype
|
||||
| Bfntype
|
||||
| Bothertype
|
||||
| '(' Btype ')'
|
||||
{
|
||||
$$ = $2;
|
||||
}
|
||||
|
||||
Anon_fn_type:
|
||||
Achantype
|
||||
|
|
@ -1062,7 +1074,6 @@ Bnon_fn_type:
|
|||
| Bchantype
|
||||
| Bothertype
|
||||
|
||||
|
||||
nametype:
|
||||
LATYPE
|
||||
{
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
// $G $D/$F.go
|
||||
|
||||
// Copyright 2009 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
|
||||
|
||||
func f(interface{})
|
||||
func g() {}
|
||||
func main() {
|
||||
f(map[string]string("a":"b","c":"d"));
|
||||
f((map[string]string)("a":"b","c":"d"));
|
||||
f((map[string]func())("a":g,"c":g));
|
||||
f(make(chan(<-chan int)));
|
||||
f(make(chan<-(chan int)));
|
||||
}
|
||||
Loading…
Reference in New Issue