rename: Re-use code for isDefinedInLibraryFile (#25367)

This commit is contained in:
Andy
2018-07-02 12:25:27 -07:00
committed by GitHub
parent 7dc66e916a
commit dc2dc8d539
3 changed files with 4 additions and 16 deletions

View File

@@ -1,22 +1,11 @@
/* @internal */
namespace ts.Rename {
export function getRenameInfo(typeChecker: TypeChecker, defaultLibFileName: string, getCanonicalFileName: GetCanonicalFileName, sourceFile: SourceFile, position: number): RenameInfo {
const getCanonicalDefaultLibName = memoize(() => getCanonicalFileName(normalizePath(defaultLibFileName)));
export function getRenameInfo(program: Program, sourceFile: SourceFile, position: number): RenameInfo {
const node = getTouchingPropertyName(sourceFile, position);
const renameInfo = node && nodeIsEligibleForRename(node)
? getRenameInfoForNode(node, typeChecker, sourceFile, isDefinedInLibraryFile)
? getRenameInfoForNode(node, program.getTypeChecker(), sourceFile, declaration => program.isSourceFileDefaultLibrary(declaration.getSourceFile()))
: undefined;
return renameInfo || getRenameInfoError(Diagnostics.You_cannot_rename_this_element);
function isDefinedInLibraryFile(declaration: Node) {
if (!defaultLibFileName) {
return false;
}
const sourceFile = declaration.getSourceFile();
const canonicalName = getCanonicalFileName(normalizePath(sourceFile.fileName));
return canonicalName === getCanonicalDefaultLibName();
}
}
function getRenameInfoForNode(node: Node, typeChecker: TypeChecker, sourceFile: SourceFile, isDefinedInLibraryFile: (declaration: Node) => boolean): RenameInfo | undefined {

View File

@@ -2202,8 +2202,7 @@ namespace ts {
function getRenameInfo(fileName: string, position: number): RenameInfo {
synchronizeHostData();
const defaultLibFileName = host.getDefaultLibFileName(host.getCompilationSettings());
return Rename.getRenameInfo(program.getTypeChecker(), defaultLibFileName, getCanonicalFileName, getValidSourceFile(fileName), position);
return Rename.getRenameInfo(program, getValidSourceFile(fileName), position);
}
function getRefactorContext(file: SourceFile, positionOrRange: number | TextRange, preferences: UserPreferences, formatOptions?: FormatCodeSettings): RefactorContext {

View File

@@ -11227,7 +11227,7 @@ declare namespace ts {
function preProcessFile(sourceText: string, readImportFiles?: boolean, detectJavaScriptImports?: boolean): PreProcessedFileInfo;
}
declare namespace ts.Rename {
function getRenameInfo(typeChecker: TypeChecker, defaultLibFileName: string, getCanonicalFileName: GetCanonicalFileName, sourceFile: SourceFile, position: number): RenameInfo;
function getRenameInfo(program: Program, sourceFile: SourceFile, position: number): RenameInfo;
}
declare namespace ts.SignatureHelp {
function getSignatureHelpItems(program: Program, sourceFile: SourceFile, position: number, cancellationToken: CancellationToken): SignatureHelpItems | undefined;