src/vs/workbench/contrib/mergeEditor/browser/mergeEditorInput.ts/MergeEditorInput/confirm
class MergeEditorInput:	override async confirm(editors?: ReadonlyArray<IEditorIdentifier>): Promise<ConfirmResult> {

		const inputs: MergeEditorInput[] = [this];
		if (editors) {
			for (const { editor } of editors) {
				if (editor instanceof MergeEditorInput) {
					inputs.push(editor);
				}
			}
		}

		const inputsWithUnhandledConflicts = inputs
			.filter(input => input._model && input._model.hasUnhandledConflicts.get());

		if (inputsWithUnhandledConflicts.length === 0) {
			return ConfirmResult.SAVE;
		}

		const actions: string[] = [];
		const options = {
			cancelId: 0,
			detail: inputs.length > 1
				? localize('unhandledConflicts.detailN', 'Merge conflicts in {0} editors will remain unhandled.', inputs.length)
				: localize('unhandledConflicts.detail1', 'Merge conflicts in this editor will remain unhandled.')
		};

		const isAnyAutoSave = this._filesConfigurationService.getAutoSaveMode() !== AutoSaveMode.OFF;
		if (!isAnyAutoSave) {
			// manual-save: FYI and discard
			actions.push(
				localize('unhandledConflicts.manualSaveIgnore', "Save and Continue with Conflicts"), // 0
				localize('unhandledConflicts.manualSaveNoSave', "Don't Save") // 1
			);

		} else {
			// auto-save: only FYI
			actions.push(
				localize('unhandledConflicts.ignore', "Continue with Conflicts"), // 0
			);
		}

		actions.push(localize('unhandledConflicts.cancel', "Cancel"));
		options.cancelId = actions.length - 1;

		const { choice } = await this._dialogService.show(
			Severity.Info,
			localize('unhandledConflicts.msg', 'Do you want to continue with unhandled conflicts?'), // 1
			actions,
			options
		);

		if (choice === options.cancelId) {
			// cancel: stay in editor
			return ConfirmResult.CANCEL;
		}

		// save or revert: in both cases we tell the inputs to ignore unhandled conflicts
		// for the dirty state computation.
		for (const input of inputs) {
			input._ignoreUnhandledConflictsForDirtyState = true;
		}

		if (choice === 0) {
			// conflicts: continue with remaining conflicts
			return ConfirmResult.SAVE;
		}

		// don't save
		return ConfirmResult.DONT_SAVE;
	}