Commit 6aa85d1c authored by Eoghan Sherry's avatar Eoghan Sherry Committed by Russ Cox

gc: fix method offsets of anonymous interfaces

Fixes #1290.

R=rsc
CC=golang-dev
https://golang.org/cl/3259043
parent cd319092
......@@ -844,6 +844,8 @@ dostruct(NodeList *l, int et)
t->broke = 1;
return t;
}
if(et == TINTER)
t = sortinter(t);
if(!funarg)
checkwidth(t);
return t;
......
......@@ -1726,7 +1726,6 @@ hidden_type_misc:
| LINTERFACE '{' ohidden_interfacedcl_list '}'
{
$$ = dostruct($3, TINTER);
$$ = sortinter($$);
}
| '*' hidden_type
{
......
......@@ -263,7 +263,6 @@ reswitch:
n->type = dostruct(n->list, TINTER);
if(n->type == T)
goto error;
n->type = sortinter(n->type);
break;
case OTFUNC:
......
// $G $D/$F.go && $L $F.$A && ./$A.out || echo BUG: bug314
// 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.
// Used to call wrong methods; issue 1290.
package main
type S struct {
}
func (S) a() int{
return 0
}
func (S) b() int{
return 1
}
func main() {
var i interface {
b() int
a() int
} = S{}
if i.a() != 0 {
panic("wrong method called")
}
if i.b() != 1 {
panic("wrong method called")
}
}
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