src/util.ts: allow getGoVersion when there is no active text editor

vscode.window.activeTextEditor can be undefined.

Change-Id: Ia332860095f5fb9ec66b0fa56eaa202960b3db64
Reviewed-on: https://go-review.googlesource.com/c/vscode-go/+/254422
Reviewed-by: Suzy Mueller <suzmue@golang.org>
diff --git a/src/util.ts b/src/util.ts
index b405ada..fa94f7b 100644
--- a/src/util.ts
+++ b/src/util.ts
@@ -341,7 +341,7 @@
 	}
 	try {
 		const env = toolExecutionEnvironment();
-		const docUri = vscode.window.activeTextEditor.document.uri;
+		const docUri = vscode.window.activeTextEditor?.document.uri;
 		const cwd = getWorkspaceFolderPath(docUri && docUri.fsPath.endsWith('.go') ? docUri : undefined);
 		const execFile = util.promisify(cp.execFile);
 		const { stdout, stderr } = await execFile(goRuntimePath, ['version'], {env, cwd});
@@ -896,7 +896,7 @@
 	}
 }
 
-export function getWorkspaceFolderPath(fileUri?: vscode.Uri): string {
+export function getWorkspaceFolderPath(fileUri?: vscode.Uri): string|undefined {
 	if (fileUri) {
 		const workspace = vscode.workspace.getWorkspaceFolder(fileUri);
 		if (workspace) {
@@ -909,6 +909,7 @@
 	if (folders && folders.length) {
 		return fixDriveCasingInWindows(folders[0].uri.fsPath);
 	}
+	return undefined;
 }
 
 export function makeMemoizedByteOffsetConverter(buffer: Buffer): (byteOffset: number) => number {