Commit 82e41cc5 authored by Russ Cox's avatar Russ Cox

allow trailing comma in braced initialized list

R=ken
OCL=17141
CL=17143
parent 5933dbda
......@@ -60,7 +60,7 @@
%type <node> interfacedcl_list_r interfacedcl
%type <node> structdcl_list_r structdcl
%type <node> fnres Afnres Bfnres fnliteral xfndcl fndcl fnbody
%type <node> keyexpr_list keyval_list_r keyval
%type <node> keyexpr_list braced_keyexpr_list keyval_list_r keyval
%type <type> typedclname new_type
%type <type> type Atype Btype
......@@ -871,7 +871,7 @@ pexpr:
$$ = nod(OCONV, $3, N);
$$->type = oldtype($1);
}
| convtype '{' keyexpr_list '}'
| convtype '{' braced_keyexpr_list '}'
{
// composite literal
$$ = rev($3);
......@@ -1598,7 +1598,32 @@ keyexpr_list:
{
$$ = rev($1);
}
| oexpr_list
| expr_list
/*
* have to spell this out using _r lists to avoid yacc conflict
*/
braced_keyexpr_list:
{
$$ = N;
}
| keyval_list_r
{
$$ = rev($1);
}
| keyval_list_r ','
{
$$ = rev($1);
}
| expr_list_r
{
$$ = rev($1);
}
| expr_list_r ','
{
$$ = rev($1);
}
/*
* the one compromise of a
......
// $G $F.go && $L $F.$A && ./$A.out
// 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
var a = []int { 1, 2, }
var b = [5]int { }
var c = []int { 1 }
func main() {
if len(a) != 2 { panicln("len a", len(a)) }
if len(b) != 5 { panicln("len b", len(b)) }
if len(c) != 1 { panicln("len a", len(a)) }
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment