1
0
mirror of https://github.com/golang/go synced 2024-09-30 17:38:33 -06:00
go/test/fixedbugs/issue29612.dir/main.go
Bryan C. Mills 91b8b130dd test: make runindir tests pass regardless of whether module mode is in use
The "runindir" tests used "go run", but relied on relative imports
(which are not supported by "go run" in module mode). Instead, such
tests must use fully-qualified imports, which require either a go.mod
file (in module mode) or that the package be in an appropriate
subdirectory of GOPATH/src (in GOPATH mode).

To set up such a directory, we use yet another copy of the same
overlayDir function currently found in the misc subdirectory of this
repository.

Fixes #33912
Updates #30228

Change-Id: If3d7ea2f7942ba496d98aaaf24a90bcdcf4df9f7
Reviewed-on: https://go-review.googlesource.com/c/go/+/225205
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2020-03-25 14:19:25 +00:00

50 lines
845 B
Go

// run
// 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.
// Do not panic on conversion to anonymous interface, which
// is similar-looking interface types in different packages.
package main
import (
"fmt"
ssa1 "issue29612.dir/p1/ssa"
ssa2 "issue29612.dir/p2/ssa"
)
func main() {
v1 := &ssa1.T{}
_ = v1
v2 := &ssa2.T{}
ssa2.Works(v2)
ssa2.Panics(v2) // This call must not panic
swt(v1, 1)
swt(v2, 2)
}
//go:noinline
func swt(i interface{}, want int) {
var got int
switch i.(type) {
case *ssa1.T:
got = 1
case *ssa2.T:
got = 2
case int8, int16, int32, int64:
got = 3
case uint8, uint16, uint32, uint64:
got = 4
}
if got != want {
panic(fmt.Sprintf("switch %v: got %d, want %d", i, got, want))
}
}