mirror of
https://github.com/golang/go
synced 2024-11-18 16:54:43 -07:00
go/build: do not consider "android.go" to be android-specific
A file name must have a non-empty underscore-separated prefix before its suffix matches GOOS. This is what the documentation already said but is not what the code did. Fixes #8838. This needs to be called out in the release notes. The he single affected file code.google.com/p/go.text/collate/tools/colcmp/darwin.go could use a renaming but works because it has a build tag inside. LGTM=adg, rsc R=golang-codereviews, adg, rsc CC=golang-codereviews https://golang.org/cl/147690043
This commit is contained in:
parent
55df81d37f
commit
d396b9df10
@ -1291,6 +1291,18 @@ func (ctxt *Context) goodOSArchFile(name string, allTags map[string]bool) bool {
|
||||
if dot := strings.Index(name, "."); dot != -1 {
|
||||
name = name[:dot]
|
||||
}
|
||||
|
||||
// Before Go 1.4, a file called "linux.go" would be equivalent to having a
|
||||
// build tag "linux" in that file. For Go 1.4 and beyond, we require this
|
||||
// auto-tagging to apply only to files with a non-empty prefix, so
|
||||
// "foo_linux.go" is tagged but "linux.go" is not. This allows new operating
|
||||
// sytems, such as android, to arrive without breaking existing code with
|
||||
// innocuous source code in "android.go". The easiest fix: files without
|
||||
// underscores are always included.
|
||||
if !strings.ContainsRune(name, '_') {
|
||||
return true
|
||||
}
|
||||
|
||||
l := strings.Split(name, "_")
|
||||
if n := len(l); n > 0 && l[n-1] == "test" {
|
||||
l = l[:n-1]
|
||||
|
@ -173,6 +173,10 @@ var matchFileTests = []struct {
|
||||
{ctxtAndroid, "foo_linux.go", "", true},
|
||||
{ctxtAndroid, "foo_android.go", "", true},
|
||||
{ctxtAndroid, "foo_plan9.go", "", false},
|
||||
{ctxtAndroid, "android.go", "", true},
|
||||
{ctxtAndroid, "plan9.go", "", true},
|
||||
{ctxtAndroid, "arm.s", "", true},
|
||||
{ctxtAndroid, "amd64.s", "", true},
|
||||
}
|
||||
|
||||
func TestMatchFile(t *testing.T) {
|
||||
|
Loading…
Reference in New Issue
Block a user