extension/src/language: utilize file type filter in file field

For golang/go#76331

Change-Id: I17caa398f14769380028fce8d61dc98583dc25f4
Reviewed-on: https://go-review.googlesource.com/c/vscode-go/+/786122
Reviewed-by: Madeline Kalil <mkalil@google.com>
LUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Danny Tuppeny <danny@tuppeny.com>
diff --git a/extension/src/language/form.ts b/extension/src/language/form.ts
index 53ed92b..75a5eea 100644
--- a/extension/src/language/form.ts
+++ b/extension/src/language/form.ts
@@ -856,9 +856,25 @@
 				}
 
 				if (actionTarget === 'open') {
+					let canSelectFiles = true;
+					let canSelectFolders = true;
+
+					if (fieldType.type !== undefined) {
+						canSelectFiles = (fieldType.type & FileType.Regular) !== 0;
+						canSelectFolders = (fieldType.type & FileType.Directory) !== 0;
+
+						// Safe fallback: if the constraint evaluates to allowing neither
+						// (which is likely a bug/misconfiguration in the language server),
+						// allow both so the file picker dialog is not completely disabled.
+						if (!canSelectFiles && !canSelectFolders) {
+							canSelectFiles = true;
+							canSelectFolders = true;
+						}
+					}
+
 					const uri = await vscode.window.showOpenDialog({
-						canSelectFiles: true,
-						canSelectFolders: true,
+						canSelectFiles: canSelectFiles,
+						canSelectFolders: canSelectFolders,
 						canSelectMany: false,
 						openLabel: 'Select',
 						defaultUri: defaultUri,