1
0
mirror of https://github.com/golang/go synced 2024-09-23 21:20:13 -06: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:
Than McIntosh 2019-03-15 13:58:21 -04:00
parent 156c830bea
commit 64b1889e2d
4 changed files with 86 additions and 0 deletions

View 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() {}

View 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
}

View 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)
}
}

View 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