| env GO111MODULE=on |
| |
| go list -e -f '{{.Incomplete}}' runbad1.go |
| stdout true |
| ! go run runbad1.go |
| stderr 'use of internal package m/x/internal not allowed' |
| |
| go list -e -f '{{.Incomplete}}' runbad2.go |
| stdout true |
| ! go run runbad2.go |
| stderr 'use of internal package m/x/internal/y not allowed' |
| |
| go list -e -f '{{.Incomplete}}' runok.go |
| stdout false |
| go run runok.go |
| |
| -- go.mod -- |
| module m |
| |
| -- x/internal/internal.go -- |
| package internal |
| |
| -- x/internal/y/y.go -- |
| package y |
| |
| -- internal/internal.go -- |
| package internal |
| |
| -- internal/z/z.go -- |
| package z |
| |
| -- runbad1.go -- |
| package main |
| import _ "m/x/internal" |
| func main() {} |
| |
| -- runbad2.go -- |
| package main |
| import _ "m/x/internal/y" |
| func main() {} |
| |
| -- runok.go -- |
| package main |
| import _ "m/internal" |
| import _ "m/internal/z" |
| func main() {} |