Commit 8c2bc441 authored by Russ Cox's avatar Russ Cox

gc: fix shift/reduce conflict in go.y export syntax

Fixes #771.

R=ken2
CC=golang-dev
https://golang.org/cl/1267042
parent 9fc9246b
...@@ -74,6 +74,8 @@ ...@@ -74,6 +74,8 @@
%type <node> indcl interfacetype structtype ptrtype %type <node> indcl interfacetype structtype ptrtype
%type <node> recvchantype non_recvchantype othertype fnret_type fntype %type <node> recvchantype non_recvchantype othertype fnret_type fntype
%type <val> hidden_tag
%type <sym> hidden_importsym hidden_pkg_importsym %type <sym> hidden_importsym hidden_pkg_importsym
%type <node> hidden_constant hidden_literal hidden_dcl %type <node> hidden_constant hidden_literal hidden_dcl
...@@ -1709,12 +1711,12 @@ hidden_dcl: ...@@ -1709,12 +1711,12 @@ hidden_dcl:
} }
hidden_structdcl: hidden_structdcl:
sym hidden_type oliteral sym hidden_type hidden_tag
{ {
$$ = nod(ODCLFIELD, newname($1), typenod($2)); $$ = nod(ODCLFIELD, newname($1), typenod($2));
$$->val = $3; $$->val = $3;
} }
| '?' hidden_type oliteral | '?' hidden_type hidden_tag
{ {
Sym *s; Sym *s;
...@@ -1728,6 +1730,15 @@ hidden_structdcl: ...@@ -1728,6 +1730,15 @@ hidden_structdcl:
$$->val = $3; $$->val = $3;
} }
hidden_tag:
{
$$.ctype = CTxxx;
}
| ':' LLITERAL // extra colon avoids conflict with "" looking like beginning of "".typename
{
$$ = $2;
}
hidden_interfacedcl: hidden_interfacedcl:
sym '(' ohidden_funarg_list ')' ohidden_funres sym '(' ohidden_funarg_list ')' ohidden_funres
{ {
......
...@@ -1295,8 +1295,12 @@ Tpretty(Fmt *fp, Type *t) ...@@ -1295,8 +1295,12 @@ Tpretty(Fmt *fp, Type *t)
fmtprint(fp, "... %T", t->type->type); fmtprint(fp, "... %T", t->type->type);
} else } else
fmtprint(fp, "%T", t->type); fmtprint(fp, "%T", t->type);
if(t->note) if(t->note) {
fmtprint(fp, " \"%Z\"", t->note); fmtprint(fp, " ");
if(exporting)
fmtprint(fp, ":");
fmtprint(fp, "\"%Z\"", t->note);
}
return 0; return 0;
case TFORW: case TFORW:
......
// Copyright 2010 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 p1
type T struct {
f func() "x"
}
// Copyright 2010 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 p2
import _ "./p1"
// $G $D/$F.dir/p1.go && $G $D/$F.dir/p2.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.
ignored
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