1
0
mirror of https://github.com/golang/go synced 2024-11-24 23:17:57 -07:00

gc: bug327

Fixes #1674.

R=ken2
CC=golang-dev
https://golang.org/cl/4368057
This commit is contained in:
Russ Cox 2011-04-07 18:53:47 -04:00
parent 62c24811e7
commit 35c880b1e2
2 changed files with 21 additions and 2 deletions

View File

@ -1889,8 +1889,9 @@ assignop(Type *src, Type *dst, char **why)
return OCONVNOP;
// 2. src and dst have identical underlying types
// and either src or dst is not a named type.
if(eqtype(src->orig, dst->orig) && (src->sym == S || dst->sym == S))
// and either src or dst is not a named type or
// both are interface types.
if(eqtype(src->orig, dst->orig) && (src->sym == S || dst->sym == S || src->etype == TINTER))
return OCONVNOP;
// 3. dst is an interface type and src implements dst.

18
test/fixedbugs/bug327.go Normal file
View File

@ -0,0 +1,18 @@
// $G $D/$F.go && $L $F.$A && ./$A.out
// Copyright 2011 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
type (
a interface{}
b interface{}
)
func main() {
x := a(1)
z := b(x)
_ = z
}