mirror of
https://github.com/golang/go
synced 2024-11-11 21:20:21 -07:00
test: new test for issue 30862
New test case, inspired by gccgo issue 30862. Updates #30862. Change-Id: I5e494b877e4fd142b8facb527471fe1fdef39c61 Reviewed-on: https://go-review.googlesource.com/c/go/+/167744 Run-TryBot: Than McIntosh <thanm@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
This commit is contained in:
parent
156c830bea
commit
64b1889e2d
15
test/fixedbugs/issue30862.dir/a.go
Normal file
15
test/fixedbugs/issue30862.dir/a.go
Normal file
@ -0,0 +1,15 @@
|
||||
// Copyright 2019 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 a
|
||||
|
||||
var pl int
|
||||
|
||||
type NoitfStruct struct {
|
||||
F int
|
||||
G int
|
||||
}
|
||||
|
||||
//go:nointerface
|
||||
func (t *NoitfStruct) NoInterfaceMethod() {}
|
29
test/fixedbugs/issue30862.dir/b.go
Normal file
29
test/fixedbugs/issue30862.dir/b.go
Normal file
@ -0,0 +1,29 @@
|
||||
// Copyright 2019 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 b
|
||||
|
||||
import "./a"
|
||||
|
||||
type EmbedImported struct {
|
||||
a.NoitfStruct
|
||||
}
|
||||
|
||||
func Test() []string {
|
||||
bad := []string{}
|
||||
x := interface{}(new(a.NoitfStruct))
|
||||
if _, ok := x.(interface {
|
||||
NoInterfaceMethod()
|
||||
}); ok {
|
||||
bad = append(bad, "fail 1")
|
||||
}
|
||||
|
||||
x = interface{}(new(EmbedImported))
|
||||
if _, ok := x.(interface {
|
||||
NoInterfaceMethod()
|
||||
}); ok {
|
||||
bad = append(bad, "fail 2")
|
||||
}
|
||||
return bad
|
||||
}
|
28
test/fixedbugs/issue30862.dir/main.go
Normal file
28
test/fixedbugs/issue30862.dir/main.go
Normal file
@ -0,0 +1,28 @@
|
||||
// Copyright 2019 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
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"./b"
|
||||
)
|
||||
|
||||
// Test case for issue 30862.
|
||||
|
||||
// Be aware that unless GOEXPERIMENT=fieldtrack is set when building
|
||||
// the compiler, this test will fail if executed with a regular GC
|
||||
// compiler.
|
||||
|
||||
func main() {
|
||||
bad := b.Test()
|
||||
if len(bad) > 0 {
|
||||
for _, s := range bad {
|
||||
fmt.Fprintf(os.Stderr, "test failed: %s\n", s)
|
||||
}
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
14
test/fixedbugs/issue30862.go
Normal file
14
test/fixedbugs/issue30862.go
Normal file
@ -0,0 +1,14 @@
|
||||
// rundir
|
||||
|
||||
// Copyright 2019 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 30862. This test as written will
|
||||
// fail for the main 'gc' compiler unless GOEXPERIMENT=fieldtrack
|
||||
// is set when building it, whereas gccgo has field tracking
|
||||
// enabled by default (hence the build tag below).
|
||||
|
||||
// +build gccgo
|
||||
|
||||
package ignored
|
Loading…
Reference in New Issue
Block a user