1
0
mirror of https://github.com/golang/go synced 2024-11-11 19:41:36 -07:00

test: add bug437, a test that used to fail with gccgo at link time

Updates #3391.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/6177045
This commit is contained in:
Ian Lance Taylor 2012-05-03 14:25:11 -07:00
parent c8e1946f33
commit 890be5ced0
3 changed files with 56 additions and 0 deletions

View File

@ -0,0 +1,18 @@
// Copyright 2012 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 one
type I1 interface {
f()
}
type S1 struct {
}
func (s S1) f() {
}
func F1(i1 I1) {
}

View File

@ -0,0 +1,11 @@
// Copyright 2012 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 two
import "./one"
type S2 struct {
one.S1
}

27
test/fixedbugs/bug437.go Normal file
View File

@ -0,0 +1,27 @@
// $G $D/$F.dir/one.go && $G $D/$F.dir/two.go && $G $D/$F.go && $L $F.$A && ./$A.out
// Copyright 2012 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 converting a type defined in a different package to an
// interface defined in a third package, where the interface has a
// hidden method. This used to cause a link error with gccgo.
package main
import (
"./one"
"./two"
)
func F(i1 one.I1) {
switch v := i1.(type) {
case two.S2:
one.F1(v)
}
}
func main() {
F(nil)
}