diff --git a/src/vs/workbench/api/node/extHostLanguageFeatures.ts b/src/vs/workbench/api/node/extHostLanguageFeatures.ts index 29d85130731..135dfdcc0b4 100644 --- a/src/vs/workbench/api/node/extHostLanguageFeatures.ts +++ b/src/vs/workbench/api/node/extHostLanguageFeatures.ts @@ -469,7 +469,7 @@ class NavigateTypeAdapter { } interface RenameProvider2 extends vscode.RenameProvider { - resolveInitialRenameValue?(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken): vscode.ProviderResult; + resolveInitialRenameValue?(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken): vscode.ProviderResult; } class RenameAdapter { @@ -522,10 +522,17 @@ class RenameAdapter { let doc = this._documents.getDocumentData(resource).document; let pos = TypeConverters.toPosition(position); - return asWinJsPromise(token => this._provider.resolveInitialRenameValue(doc, pos, token)).then((value) => { + return asWinJsPromise(token => this._provider.resolveInitialRenameValue(doc, pos, token)).then(value => { + if (!value) { + return undefined; + } + if (!value.range.contains(pos)) { + console.warn('INVALID rename information, must contain the request-position'); + return undefined; + } return { range: TypeConverters.fromRange(value.range), - text: value.text + text: value.text || doc.getText(value.range) }; }); }