1
0
mirror of https://github.com/golang/go synced 2024-09-24 17:20:12 -06:00

bug183 - embedded vs non-embedded struct field in eqtype

R=ken
OCL=32888
CL=32888
This commit is contained in:
Russ Cox 2009-08-07 13:23:09 -07:00
parent 468f244416
commit aa7bd48389
2 changed files with 27 additions and 0 deletions

View File

@ -1537,6 +1537,8 @@ eqtype1(Type *t1, Type *t2, int d, int names)
return 0; return 0;
if(t1 == T) if(t1 == T)
return 1; return 1;
if(t1->embedded != t2->embedded)
return 0;
if(t1->nname != N && t1->nname->sym != S) { if(t1->nname != N && t1->nname->sym != S) {
if(t2->nname == N || t2->nname->sym == S) if(t2->nname == N || t2->nname->sym == S)
return 0; return 0;

25
test/fixedbugs/bug183.go Normal file
View File

@ -0,0 +1,25 @@
//errchk $G $D/$F.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.
package main
type T int
func f() {
var x struct { T };
var y struct { T T };
x = y // ERROR "cannot"
}
type T1 struct { T }
type T2 struct { T T }
func g() {
var x T1;
var y T2;
x = y // ERROR "cannot"
}