go/build: rename WorkingDir to Dir

Fixes #36168

Change-Id: If2b7368671e83657a3a74dd030e66e7c68bf2361
Reviewed-on: https://go-review.googlesource.com/c/go/+/211657
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Jay Conrod <jayconrod@google.com>
diff --git a/api/go1.14.txt b/api/go1.14.txt
index 9146eec..af962ec 100644
--- a/api/go1.14.txt
+++ b/api/go1.14.txt
@@ -144,7 +144,7 @@
 pkg encoding/asn1, const TagBMPString = 30
 pkg encoding/asn1, const TagBMPString ideal-int
 pkg encoding/json, method (*Decoder) InputOffset() int64
-pkg go/build, type Context struct, WorkingDir string
+pkg go/build, type Context struct, Dir string
 pkg go/doc, func NewFromFiles(*token.FileSet, []*ast.File, string, ...interface{}) (*Package, error)
 pkg go/doc, type Example struct, Suffix string
 pkg go/doc, type Func struct, Examples []*Example
diff --git a/src/go/build/build.go b/src/go/build/build.go
index a1ea8af..e89aa77 100644
--- a/src/go/build/build.go
+++ b/src/go/build/build.go
@@ -36,13 +36,13 @@
 	GOROOT string // Go root
 	GOPATH string // Go path
 
-	// WorkingDir is the caller's working directory, or the empty string to use
+	// Dir is the caller's working directory, or the empty string to use
 	// the current directory of the running process. In module mode, this is used
 	// to locate the main module.
 	//
-	// If WorkingDir is non-empty, directories passed to Import and ImportDir must
+	// If Dir is non-empty, directories passed to Import and ImportDir must
 	// be absolute.
-	WorkingDir string
+	Dir string
 
 	CgoEnabled  bool   // whether cgo files are included
 	UseAllFiles bool   // use files regardless of +build lines, file names
@@ -1041,8 +1041,8 @@
 		var absSrcDir string
 		if filepath.IsAbs(srcDir) {
 			absSrcDir = srcDir
-		} else if ctxt.WorkingDir != "" {
-			return fmt.Errorf("go/build: WorkingDir is non-empty, so relative srcDir is not allowed: %v", srcDir)
+		} else if ctxt.Dir != "" {
+			return fmt.Errorf("go/build: Dir is non-empty, so relative srcDir is not allowed: %v", srcDir)
 		} else {
 			// Find the absolute source directory. hasSubdir does not handle
 			// relative paths (and can't because the callbacks don't support this).
@@ -1076,16 +1076,16 @@
 			parent string
 			err    error
 		)
-		if ctxt.WorkingDir == "" {
+		if ctxt.Dir == "" {
 			parent, err = os.Getwd()
 			if err != nil {
 				// A nonexistent working directory can't be in a module.
 				return errNoModules
 			}
 		} else {
-			parent, err = filepath.Abs(ctxt.WorkingDir)
+			parent, err = filepath.Abs(ctxt.Dir)
 			if err != nil {
-				// If the caller passed a bogus WorkingDir explicitly, that's materially
+				// If the caller passed a bogus Dir explicitly, that's materially
 				// different from not having modules enabled.
 				return err
 			}
@@ -1105,8 +1105,8 @@
 
 	cmd := exec.Command("go", "list", "-e", "-compiler="+ctxt.Compiler, "-tags="+strings.Join(ctxt.BuildTags, ","), "-installsuffix="+ctxt.InstallSuffix, "-f={{.Dir}}\n{{.ImportPath}}\n{{.Root}}\n{{.Goroot}}\n{{if .Error}}{{.Error}}{{end}}\n", "--", path)
 
-	if ctxt.WorkingDir != "" {
-		cmd.Dir = ctxt.WorkingDir
+	if ctxt.Dir != "" {
+		cmd.Dir = ctxt.Dir
 	}
 
 	var stdout, stderr strings.Builder
diff --git a/src/go/build/build_test.go b/src/go/build/build_test.go
index b5c813b..9e850fa 100644
--- a/src/go/build/build_test.go
+++ b/src/go/build/build_test.go
@@ -328,7 +328,7 @@
 	defer os.RemoveAll(emptyDir)
 
 	ctxt.GOPATH = emptyDir
-	ctxt.WorkingDir = emptyDir
+	ctxt.Dir = emptyDir
 
 	tests := []struct {
 		label        string
@@ -459,7 +459,7 @@
 	os.Setenv("GOPATH", gopath)
 	ctxt := Default
 	ctxt.GOPATH = gopath
-	ctxt.WorkingDir = filepath.Join(gopath, "src/example.com/p")
+	ctxt.Dir = filepath.Join(gopath, "src/example.com/p")
 
 	want := "cannot find module providing package"
 	if _, err := ctxt.Import("example.com/p", gopath, FindOnly); err == nil {
@@ -519,7 +519,7 @@
 	os.Setenv("GONOPROXY", "none")
 
 	ctxt := Default
-	ctxt.WorkingDir = tmp
+	ctxt.Dir = tmp
 
 	pkgPath := "example.com/hello"
 	_, err = ctxt.Import(pkgPath, tmp, FindOnly)