cmd/go: pass down testing gccgo in TestScript
authorIan Lance Taylor <ian@gcc.gnu.org>
Tue, 25 Sep 2018 14:16:32 +0000 (14:16 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Tue, 25 Sep 2018 14:16:32 +0000 (14:16 +0000)
    This permits TestScript to work when gccgo is not installed.
    Previous testing was using a previously installed gccgo, not the newly
    built one.

    This revealed that the testing of whether an internal package is
    permitted was incorrect for standard library packages, since the
    uninstalled gccgo can see internal packages in the uninstalled libgo.
    Fix the internal package tests.

    This permitted removing a couple of gccgo-specific changes in the
    testsuite.

    Reviewed-on: https://go-review.googlesource.com/137255

From-SVN: r264570

gcc/go/gofrontend/MERGE
libgo/go/cmd/go/internal/load/pkg.go
libgo/go/cmd/go/script_test.go
libgo/go/cmd/go/testdata/script/mod_internal.txt

index 175db5d42026180aba25a11afaa06790a1d986cd..65693ffebbc88c90764114e6732ec0302d22eb69 100644 (file)
@@ -1,4 +1,4 @@
-7b25b4dff4778fc4d6b5d6e10594814146b3e5dd
+1dbc5b805a1665079008d1ce341991c3554c1eeb
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
index 0579fd5ca539acfae7a6c5c0a4481f9b74fb9500..b6c903788814e8ee5deb0723d276e971cfab4cb3 100644 (file)
@@ -953,8 +953,14 @@ func disallowInternal(srcDir string, importer *Package, importerPath string, p *
        }
 
        // We can't check standard packages with gccgo.
-       if cfg.BuildContext.Compiler == "gccgo" && p.Standard {
-               return p
+       if cfg.BuildContext.Compiler == "gccgo" {
+               if importer == nil {
+                       if p.Standard {
+                               return p
+                       }
+               } else if importer.Standard || strings.HasPrefix(importerPath, "cmd/") {
+                       return p
+               }
        }
 
        // The stack includes p.ImportPath.
index 02cb17b04527b9735a84e815e815a4697f4c49d4..9e958e0c6358ae934ff6067493d3879276a75aa0 100644 (file)
@@ -78,6 +78,7 @@ var extraEnvKeys = []string{
 
        // For gccgo testing.
        "GO_TESTING_GOTOOLS",
+       "GCCGO",
        "GCCGOTOOLDIR",
 }
 
index 84e77c6d83c0f3c5a4d0ffd1ba0bdc5bc0660707..72706fdc7b4496f9fce28d27ed188abf1746b378 100644 (file)
@@ -16,11 +16,11 @@ stderr 'use of internal package golang.org/x/.* not allowed'
 
 # Internal packages in the standard library should not leak into modules.
 ! go build ./fromstd
-[!gccgo] stderr 'use of internal package internal/testenv not allowed'
+stderr 'use of internal package internal/testenv not allowed'
 
 # Packages found via standard-library vendoring should not leak.
 ! go build ./fromstdvendor
-[!gccgo] stderr 'use of vendored package golang_org/x/net/http/httpguts not allowed'
+stderr 'use of vendored package golang_org/x/net/http/httpguts not allowed'
 
 env GO111MODULE=off
 ! go build ./fromstdvendor