diff options
author | Russ Cox <rsc@golang.org> | 2010-07-15 14:25:50 -0700 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2010-07-15 14:25:50 -0700 |
commit | 1fa645626996b18cf553ac5a13dbb97a8996908c (patch) | |
tree | 27980d114c3ecdaa905b188c98dc573b33d23f2f /test/bugs | |
parent | 15f323f4e0e0a9bf94f9d6754f25d600380b27b5 (diff) | |
download | go-1fa645626996b18cf553ac5a13dbb97a8996908c.tar.gz |
gc: fix handling of types inside function bodies
Fixes issue 849.
Fixes issue 920.
R=ken2
CC=golang-dev
http://codereview.appspot.com/1841042
Diffstat (limited to 'test/bugs')
-rw-r--r-- | test/bugs/bug286.go | 94 |
1 files changed, 0 insertions, 94 deletions
diff --git a/test/bugs/bug286.go b/test/bugs/bug286.go deleted file mode 100644 index 94423be81..000000000 --- a/test/bugs/bug286.go +++ /dev/null @@ -1,94 +0,0 @@ -// $G $D/$F.go && $L $F.$A && ./$A.out || echo BUG: bug286 failed - -// 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. - -// Test case for issue 849. - -package main - -type I interface { - f() -} - - -var callee string -var error bool - -type T int - -func (t *T) f() { callee = "f" } -func (i *T) g() { callee = "g" } - - -// test1 and test2 are the same except that in the interface J -// the entries are swapped. test2 and test3 are the same except -// that in test3 the interface J is declared outside the function. -// -// Error: test2 calls g instead of f - -func test1(x I) { - type J interface { - I - g() - } - x.(J).f() - if callee != "f" { - println("test1 called", callee) - error = true - } -} - - -func test2(x I) { - type J interface { - g() - I - } - x.(J).f() - if callee != "f" { - println("test2 called", callee) - error = true - } -} - - -type J interface { - g() - I -} - -func test3(x I) { - x.(J).f() - if callee != "f" { - println("test3 called", callee) - error = true - } -} - -func main() { - x := new(T) - test1(x) - test2(x) - test3(x) - if error { - panic("wrong method called") - } -} - -/* -6g bug286.go && 6l bug286.6 && 6.out -test2 called g -panic: wrong method called - -panic PC=0x24e040 -runtime.panic+0x7c /home/gri/go1/src/pkg/runtime/proc.c:1012 - runtime.panic(0x0, 0x24e0a0) -main.main+0xef /home/gri/go1/test/bugs/bug286.go:76 - main.main() -mainstart+0xf /home/gri/go1/src/pkg/runtime/amd64/asm.s:60 - mainstart() -goexit /home/gri/go1/src/pkg/runtime/proc.c:145 - goexit() -*/ |