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,