mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-17 02:51:36 -05:00
Fix crash when opening SQL diff input (#15183)
* Fix crash when opening SQL diff input * fix compile * Fix tests
This commit is contained in:
@@ -19,6 +19,7 @@ import { UntitledTextEditorInput } from 'vs/workbench/services/untitled/common/u
|
|||||||
import { isThenable } from 'vs/base/common/async';
|
import { isThenable } from 'vs/base/common/async';
|
||||||
import { withNullAsUndefined } from 'vs/base/common/types';
|
import { withNullAsUndefined } from 'vs/base/common/types';
|
||||||
import { DiffEditorInput } from 'vs/workbench/common/editor/diffEditorInput';
|
import { DiffEditorInput } from 'vs/workbench/common/editor/diffEditorInput';
|
||||||
|
import { mixin } from 'vs/base/common/objects';
|
||||||
|
|
||||||
const languageAssociationRegistry = Registry.as<ILanguageAssociationRegistry>(LanguageAssociationExtensions.LanguageAssociations);
|
const languageAssociationRegistry = Registry.as<ILanguageAssociationRegistry>(LanguageAssociationExtensions.LanguageAssociations);
|
||||||
|
|
||||||
@@ -69,7 +70,16 @@ export class EditorReplacementContribution implements IWorkbenchContribution {
|
|||||||
editor.setMode(defaultInputCreator[0]);
|
editor.setMode(defaultInputCreator[0]);
|
||||||
const newInput = defaultInputCreator[1].convertInput(editor);
|
const newInput = defaultInputCreator[1].convertInput(editor);
|
||||||
if (newInput) {
|
if (newInput) {
|
||||||
return { override: isThenable(newInput) ? newInput.then(input => this.editorService.openEditor(input ?? editor, options, group)) : this.editorService.openEditor(newInput, options, group) };
|
return {
|
||||||
|
// If the new input is a thenable which resolves to undefined (no input to convert)
|
||||||
|
// then don't allow further overriding since otherwise we could get in an infinite loop
|
||||||
|
// (openEditor calls onEditorOpening handler and we keep repeating this process). This
|
||||||
|
// is replicating the behavior for the non-Thenable returns where we just let the openEditor
|
||||||
|
// continue on
|
||||||
|
override: isThenable(newInput) ?
|
||||||
|
newInput.then(input => this.editorService.openEditor(input ?? editor, mixin(options, { override: input ? options?.override : false }), group)) :
|
||||||
|
this.editorService.openEditor(newInput, options, group)
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -77,7 +87,16 @@ export class EditorReplacementContribution implements IWorkbenchContribution {
|
|||||||
if (inputCreator) {
|
if (inputCreator) {
|
||||||
const newInput = inputCreator.convertInput(editor);
|
const newInput = inputCreator.convertInput(editor);
|
||||||
if (newInput) {
|
if (newInput) {
|
||||||
return { override: isThenable(newInput) ? newInput.then(input => this.editorService.openEditor(input ?? editor, options, group)) : this.editorService.openEditor(newInput, options, group) };
|
return {
|
||||||
|
// If the new input is a thenable which resolves to undefined (no input to convert)
|
||||||
|
// then don't allow further overriding since otherwise we could get in an infinite loop
|
||||||
|
// (openEditor calls onEditorOpening handler and we keep repeating this process). This
|
||||||
|
// is replicating the behavior for the non-Thenable returns where we just let the openEditor
|
||||||
|
// continue on
|
||||||
|
override: isThenable(newInput) ?
|
||||||
|
newInput.then(input => this.editorService.openEditor(input ?? editor, mixin(options, { override: input ? options?.override : false }), group))
|
||||||
|
: this.editorService.openEditor(newInput, options, group)
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user