mirror of
https://github.com/golang/go
synced 2024-11-25 12:17:56 -07:00
do not set t->recur on basic types.
the comment talked about printing, but now t->recur is only used for typehash. in typehash it is important to compute different hashes for the different basic types. add test that makes sure an interface { X() int8 } cannot be used as interface { X() int64 } R=ken OCL=17396 CL=17396
This commit is contained in:
parent
ab9db8a5f8
commit
5fe4cd83a8
@ -1120,7 +1120,6 @@ lexinit(void)
|
||||
}
|
||||
|
||||
t->sym = s;
|
||||
t->recur = 1; // supresses printing beyond name
|
||||
|
||||
dowidth(t);
|
||||
types[etype] = t;
|
||||
|
@ -34,6 +34,14 @@ Faulting address: 0x0
|
||||
pc: xxx
|
||||
|
||||
|
||||
=========== ./interface3.go
|
||||
cannot convert type S to interface I2: missing method Name
|
||||
throw: interface conversion
|
||||
SIGSEGV: segmentation violation
|
||||
Faulting address: 0x0
|
||||
pc: xxx
|
||||
|
||||
|
||||
=========== ./peano.go
|
||||
0! = 1
|
||||
1! = 1
|
||||
|
23
test/interface3.go
Normal file
23
test/interface3.go
Normal file
@ -0,0 +1,23 @@
|
||||
// $G $D/$F.go && $L $F.$A && (! ./$A.out || echo BUG: should not succeed)
|
||||
|
||||
// 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 S struct { a int }
|
||||
type T struct { b string }
|
||||
|
||||
func (s *S) Name() int8 { return 1 }
|
||||
func (t *T) Name() int64 { return 64 }
|
||||
|
||||
type I1 interface { Name() int8 }
|
||||
type I2 interface { Name() int64 }
|
||||
|
||||
func main() {
|
||||
var i1 I1;
|
||||
var s *S;
|
||||
i1 = s;
|
||||
print(i1.(I2).Name())
|
||||
}
|
Loading…
Reference in New Issue
Block a user