summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cmd/gc/go.y31
-rw-r--r--test/fixedbugs/bug277.go (renamed from test/bugs/bug277.go)0
2 files changed, 10 insertions, 21 deletions
diff --git a/src/cmd/gc/go.y b/src/cmd/gc/go.y
index 2af6057e7..8128e8608 100644
--- a/src/cmd/gc/go.y
+++ b/src/cmd/gc/go.y
@@ -70,7 +70,7 @@
%type <list> interfacedcl_list vardcl vardcl_list structdcl structdcl_list
%type <list> common_dcl constdcl constdcl1 constdcl_list typedcl_list
-%type <node> convtype dotdotdot
+%type <node> convtype comptype dotdotdot
%type <node> indcl interfacetype structtype ptrtype
%type <node> recvchantype non_recvchantype othertype fnret_type fntype
@@ -822,7 +822,7 @@ pexpr:
$$ = nod(OCALL, $1, N);
$$->list = list1($3);
}
-| convtype lbrace braced_keyval_list '}'
+| comptype lbrace braced_keyval_list '}'
{
// composite expression
$$ = nod(OCOMPLIT, N, $1);
@@ -886,7 +886,7 @@ sym:
LNAME
name:
- sym
+ sym %prec NotParen
{
$$ = oldname($1);
if($$->pack != N)
@@ -896,24 +896,6 @@ name:
labelname:
new_name
-convtype:
- '[' oexpr ']' ntype
- {
- // array literal
- $$ = nod(OTARRAY, $2, $4);
- }
-| '[' LDDD ']' ntype
- {
- // array literal of nelem
- $$ = nod(OTARRAY, nod(ODDD, N, N), $4);
- }
-| LMAP '[' ntype ']' ntype
- {
- // map literal
- $$ = nod(OTMAP, $3, $5);
- }
-| structtype
-
/*
* to avoid parsing conflicts, type is split into
* channel types
@@ -963,6 +945,13 @@ non_recvchantype:
$$ = $2;
}
+convtype:
+ fntype
+| othertype
+
+comptype:
+ othertype
+
fnret_type:
recvchantype
| fntype
diff --git a/test/bugs/bug277.go b/test/fixedbugs/bug277.go
index 22b2908c9..22b2908c9 100644
--- a/test/bugs/bug277.go
+++ b/test/fixedbugs/bug277.go