sync: Merge microsoft/vscode-go@134a1a0417 to master

Change-Id: I71e6172c25326b7b03fd834fc79b50f95a6d133a
diff --git a/package.json b/package.json
index 796e0ee..b08c3a0 100644
--- a/package.json
+++ b/package.json
@@ -147,8 +147,8 @@
       },
       {
         "command": "go.locate.tools",
-        "title": "Go: Locate Configured Tools",
-        "description": "List all configured tools."
+        "title": "Go: Locate Configured Go Tools",
+        "description": "List all the Go tools being used by this extension along with their locations."
       },
       {
         "command": "go.test.cursor",
@@ -1573,4 +1573,4 @@
       ]
     }
   }
-}
\ No newline at end of file
+}
diff --git a/src/debugAdapter/goDebug.ts b/src/debugAdapter/goDebug.ts
index 98bdbd0..5ddfc90 100644
--- a/src/debugAdapter/goDebug.ts
+++ b/src/debugAdapter/goDebug.ts
@@ -483,7 +483,7 @@
 
 				const currentGOWorkspace = getCurrentGoWorkspaceFromGOPATH(env['GOPATH'], dirname);
 				dlvArgs.push(mode || 'debug');
-				if (mode === 'exec') {
+				if (mode === 'exec' || (mode === 'debug' && !isProgramDirectory)) {
 					dlvArgs.push(program);
 				} else if (currentGOWorkspace && !launchArgs.packagePathToGoModPathMap[dirname]) {
 					dlvArgs.push(dirname.substr(currentGOWorkspace.length + 1));
diff --git a/src/goMain.ts b/src/goMain.ts
index 3d58fe2..b80aeb9 100644
--- a/src/goMain.ts
+++ b/src/goMain.ts
@@ -5,7 +5,6 @@
 
 'use strict';
 
-import fs = require('fs');
 import * as path from 'path';
 import vscode = require('vscode');
 import { browsePackages } from './goBrowsePackage';
@@ -225,13 +224,13 @@
 			allTools.forEach((tool) => {
 				const toolPath = getBinPath(tool.name);
 				// TODO(hyangah): print alternate tool info if set.
-				fs.exists(toolPath, (exists) => {
-					let msg = 'not found';
-					if (exists) {
-						msg = 'installed';
-					}
-					outputChannel.appendLine(`   ${tool.name}: ${toolPath} ${msg}`);
-				});
+				let msg = 'not installed';
+				if (path.isAbsolute(toolPath)) {
+					// getBinPath returns the absolute path is the tool exists.
+					// (See getBinPathWithPreferredGopath which is called underneath)
+					msg = 'installed';
+				}
+				outputChannel.appendLine(`   ${tool.name}: ${toolPath} ${msg}`);
 			});
 		})
 	);