internal/imports: fix setting default options

This fixes a nil pointer bug that occurs when opt is nil.

If nil is provide as opt to the internal/imports package, use the
default options settings.

Also check separately that Env is non-nil, as this would also cause
a crash.

Change-Id: I9a43b219b31ba80b7cb8111437f211cb72f1ca18
Reviewed-on: https://go-review.googlesource.com/c/tools/+/189939
Reviewed-by: Heschi Kreinick <heschi@google.com>
diff --git a/internal/imports/imports.go b/internal/imports/imports.go
index acf1461..e466dfb 100644
--- a/internal/imports/imports.go
+++ b/internal/imports/imports.go
@@ -108,17 +108,14 @@
 func initialize(filename string, src []byte, opt *Options) ([]byte, error) {
 	// Use defaults if opt is nil.
 	if opt == nil {
-		opt = &Options{
-			Env: &ProcessEnv{
-				GOPATH: build.Default.GOPATH,
-				GOROOT: build.Default.GOROOT,
-			},
-			AllErrors:  opt.AllErrors,
-			Comments:   opt.Comments,
-			FormatOnly: opt.FormatOnly,
-			Fragment:   opt.Fragment,
-			TabIndent:  opt.TabIndent,
-			TabWidth:   opt.TabWidth,
+		opt = &Options{Comments: true, TabIndent: true, TabWidth: 8}
+	}
+
+	// Set the env if the user has not provided it.
+	if opt.Env == nil {
+		opt.Env = &ProcessEnv{
+			GOPATH: build.Default.GOPATH,
+			GOROOT: build.Default.GOROOT,
 		}
 	}