diff --git a/src/cmd/go/internal/cfg/cfg.go b/src/cmd/go/internal/cfg/cfg.go index a8daa2dfc369ea..d5600e87f226cc 100644 --- a/src/cmd/go/internal/cfg/cfg.go +++ b/src/cmd/go/internal/cfg/cfg.go @@ -84,6 +84,7 @@ var ( BuildPkgdir string // -pkgdir flag BuildRace bool // -race flag BuildToolexec []string // -toolexec flag + BuildCheckError bool // -checkerr flag BuildToolchainName string BuildToolchainCompiler func() string BuildToolchainLinker func() string diff --git a/src/cmd/go/internal/work/action.go b/src/cmd/go/internal/work/action.go index a59072e591d354..5f50bb97efa756 100644 --- a/src/cmd/go/internal/work/action.go +++ b/src/cmd/go/internal/work/action.go @@ -428,7 +428,7 @@ func (b *Builder) cacheAction(mode string, p *load.Package, f func() *Action) *A // AutoAction returns the "right" action for go build or go install of p. func (b *Builder) AutoAction(mode, depMode BuildMode, p *load.Package) *Action { - if p.Name == "main" { + if !cfg.BuildCheckError && p.Name == "main" { return b.LinkAction(mode, depMode, p) } return b.CompileAction(mode, depMode, p) diff --git a/src/cmd/go/internal/work/build.go b/src/cmd/go/internal/work/build.go index 408edb51193d35..6ebbfd9469f912 100644 --- a/src/cmd/go/internal/work/build.go +++ b/src/cmd/go/internal/work/build.go @@ -242,6 +242,7 @@ func init() { AddBuildFlags(CmdBuild, DefaultBuildFlags) AddBuildFlags(CmdInstall, DefaultBuildFlags) + CmdInstall.Flag.BoolVar(&cfg.BuildCheckError, "checkerr", false, "set to true to validate only compilation errors and skip binary generation") if cfg.Experiment != nil && cfg.Experiment.CoverageRedesign { AddCoverFlags(CmdBuild, nil) AddCoverFlags(CmdInstall, nil)