summaryrefslogtreecommitdiff
path: root/test/bugs
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2010-07-15 14:25:50 -0700
committerRuss Cox <rsc@golang.org>2010-07-15 14:25:50 -0700
commit1fa645626996b18cf553ac5a13dbb97a8996908c (patch)
tree27980d114c3ecdaa905b188c98dc573b33d23f2f /test/bugs
parent15f323f4e0e0a9bf94f9d6754f25d600380b27b5 (diff)
downloadgo-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.go94
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()
-*/