Commit 7743ffea authored by Russ Cox's avatar Russ Cox

disallow interface { x, y() }

R=ken
OCL=35042
CL=35044
parent 2e5a136e
...@@ -54,7 +54,7 @@ ...@@ -54,7 +54,7 @@
%type <node> expr_or_type %type <node> expr_or_type
%type <node> fndcl fnliteral %type <node> fndcl fnliteral
%type <node> for_body for_header for_stmt if_header if_stmt %type <node> for_body for_header for_stmt if_header if_stmt
%type <node> keyval labelname name %type <node> interfacedcl keyval labelname name
%type <node> name_or_type non_expr_type %type <node> name_or_type non_expr_type
%type <node> new_name dcl_name oexpr typedclname %type <node> new_name dcl_name oexpr typedclname
%type <node> onew_name %type <node> onew_name
...@@ -67,7 +67,7 @@ ...@@ -67,7 +67,7 @@
%type <list> xdcl fnbody fnres switch_body loop_body dcl_name_list %type <list> xdcl fnbody fnres switch_body loop_body dcl_name_list
%type <list> new_name_list expr_list keyval_list braced_keyval_list expr_or_type_list xdcl_list %type <list> new_name_list expr_list keyval_list braced_keyval_list expr_or_type_list xdcl_list
%type <list> oexpr_list oexpr_or_type_list caseblock_list stmt_list oarg_type_list arg_type_list %type <list> oexpr_list oexpr_or_type_list caseblock_list stmt_list oarg_type_list arg_type_list
%type <list> interfacedcl_list interfacedcl vardcl vardcl_list structdcl structdcl_list %type <list> interfacedcl_list vardcl vardcl_list structdcl structdcl_list
%type <list> common_dcl constdcl constdcl1 constdcl_list typedcl_list %type <list> common_dcl constdcl constdcl1 constdcl_list typedcl_list
%type <node> convtype dotdotdot %type <node> convtype dotdotdot
...@@ -1226,9 +1226,12 @@ structdcl_list: ...@@ -1226,9 +1226,12 @@ structdcl_list:
interfacedcl_list: interfacedcl_list:
interfacedcl interfacedcl
{
$$ = list1($1);
}
| interfacedcl_list ';' interfacedcl | interfacedcl_list ';' interfacedcl
{ {
$$ = concat($1, $3); $$ = list($1, $3);
} }
structdcl: structdcl:
...@@ -1284,17 +1287,13 @@ embed: ...@@ -1284,17 +1287,13 @@ embed:
} }
interfacedcl: interfacedcl:
new_name_list indcl new_name indcl
{ {
NodeList *l; $$ = nod(ODCLFIELD, $1, $2);
for(l=$1; l; l=l->next)
l->n = nod(ODCLFIELD, l->n, $2);
$$ = $1;
} }
| packname | packname
{ {
$$ = list1(nod(ODCLFIELD, N, oldname($1))); $$ = nod(ODCLFIELD, N, oldname($1));
} }
indcl: indcl:
......
...@@ -9,7 +9,10 @@ package main ...@@ -9,7 +9,10 @@ package main
type T func() type T func()
type I interface { type I interface {
f, g (); f, g (); // ERROR "syntax|signature"
}
type J interface {
h T; // ERROR "syntax|signature" h T; // ERROR "syntax|signature"
} }
...@@ -10,12 +10,12 @@ package main ...@@ -10,12 +10,12 @@ package main
type type
I interface I interface
{ {
test1, test1() int;
test2, test2() int;
test3, test3() int;
test4, test4() int;
test5, test5() int;
test6, test6() int;
test7() int; test7() int;
}; };
......
...@@ -18,7 +18,8 @@ type I1 interface ...@@ -18,7 +18,8 @@ type I1 interface
type I2 interface type I2 interface
{ {
g,f ()int; g() int;
f() int;
} }
func func
......
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