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

Some small change based on linter from dart-code.

For golang/go#76331

Change-Id: I1c0d550b2df04a62c00ba06bc6cebc945425d44d
Reviewed-on: https://go-review.googlesource.com/c/vscode-go/+/786123
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>
Reviewed-by: Madeline Kalil <mkalil@google.com>
diff --git a/extension/src/language/form.ts b/extension/src/language/form.ts
index 75a5eea..1065c01 100644
--- a/extension/src/language/form.ts
+++ b/extension/src/language/form.ts
@@ -5,15 +5,15 @@
  *--------------------------------------------------------*/
 
 import * as vscode from 'vscode';
-import { InitializeParams } from 'vscode-languageserver-protocol';
 import {
 	ExecuteCommandSignature,
 	LanguageClient,
-	RequestType,
-	ServerOptions,
 	LanguageClientOptions,
-	Middleware
+	Middleware,
+	RequestType,
+	ServerOptions
 } from 'vscode-languageclient/node';
+import { InitializeParams } from 'vscode-languageserver-protocol';
 
 // ----------------------------------------------------------------------------
 // Form Field Type Definitions
@@ -687,9 +687,7 @@
 
 		const answers: FormAnswer[] = [];
 
-		for (let i = 0; i < formFields.length; i++) {
-			const field = formFields[i];
-
+		for (const field of formFields) {
 			const previousAnswer = previousAnswers.get(field.id);
 			if (previousAnswer !== undefined && field.error === undefined) {
 				answers.push({ id: field.id, value: previousAnswer } as FormAnswer);
@@ -778,7 +776,7 @@
 			});
 
 			quickPick.show();
-			search(''); // Initial Trigger
+			void search(''); // Initial Trigger
 		});
 	}
 
@@ -855,17 +853,23 @@
 					}
 				}
 
+				let filters: { [name: string]: string[] } | undefined;
+				if (fieldType.filters && fieldType.filters.length > 0) {
+					filters = {
+						'Supported Files': fieldType.filters
+					};
+				}
+
 				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.
+						// 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;
@@ -878,13 +882,15 @@
 						canSelectMany: false,
 						openLabel: 'Select',
 						defaultUri: defaultUri,
+						filters: canSelectFiles ? filters : undefined,
 						title: field.description || 'Select Existing File'
 					} as vscode.OpenDialogOptions);
-					return uri && uri[0] ? uri[0].toString() : undefined;
+					return uri?.[0] ? uri[0].toString() : undefined;
 				} else {
 					const uri = await vscode.window.showSaveDialog({
 						defaultUri: defaultUri,
 						saveLabel: 'Select',
+						filters: filters,
 						title: field.description || 'Create New File'
 					} as vscode.SaveDialogOptions);
 					return uri ? uri.toString() : undefined;