Skip to content

Commit

Permalink
Merge pull request microsoft#5263 from zhengbli/pr5127cr
Browse files Browse the repository at this point in the history
Address code review of microsoft#5127
  • Loading branch information
zhengbli committed Oct 20, 2015
2 parents fb97e2f + 39254b5 commit 1b36407
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 24 deletions.
6 changes: 3 additions & 3 deletions src/compiler/core.ts
Original file line number Diff line number Diff line change
Expand Up @@ -844,9 +844,9 @@ namespace ts {

export function copyListRemovingItem<T>(item: T, list: T[]) {
let copiedList: T[] = [];
for (var i = 0, len = list.length; i < len; i++) {
if (list[i] !== item) {
copiedList.push(list[i]);
for (let e of list) {
if (e !== item) {
copiedList.push(e);
}
}
return copiedList;
Expand Down
2 changes: 1 addition & 1 deletion src/compiler/sys.ts
Original file line number Diff line number Diff line change
Expand Up @@ -407,7 +407,7 @@ namespace ts {
// (ref: https://github.com/nodejs/node/pull/2649 and https://github.com/Microsoft/TypeScript/issues/4643)
return _fs.watch(
path,
{ persisten: true, recursive: !!recursive },
{ persistent: true, recursive: !!recursive },
(eventName: string, relativeFileName: string) => {
// In watchDirectory we only care about adding and removing files (when event name is
// "rename"); changes made within files are handled by corresponding fileWatchers (when
Expand Down
3 changes: 2 additions & 1 deletion src/compiler/tsc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -360,7 +360,8 @@ namespace ts {
let newFileNames = ts.map(parsedCommandLine.fileNames, compilerHost.getCanonicalFileName);
let canonicalRootFileNames = ts.map(rootFileNames, compilerHost.getCanonicalFileName);

if (!arrayStructurallyIsEqualTo(newFileNames, canonicalRootFileNames)) {
// We check if the project file list has changed. If so, we just throw away the old program and start fresh.
if (!arrayIsEqualTo(newFileNames && newFileNames.sort(), canonicalRootFileNames && canonicalRootFileNames.sort())) {
setCachedProgram(undefined);
startTimerForRecompilation();
}
Expand Down
24 changes: 6 additions & 18 deletions src/compiler/utilities.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,17 +82,17 @@ namespace ts {
return node.end - node.pos;
}

export function arrayIsEqualTo<T>(arr1: T[], arr2: T[], comparer?: (a: T, b: T) => boolean): boolean {
if (!arr1 || !arr2) {
return arr1 === arr2;
export function arrayIsEqualTo<T>(array1: T[], array2: T[], equaler?: (a: T, b: T) => boolean): boolean {
if (!array1 || !array2) {
return array1 === array2;
}

if (arr1.length !== arr2.length) {
if (array1.length !== array2.length) {
return false;
}

for (let i = 0; i < arr1.length; ++i) {
let equals = comparer ? comparer(arr1[i], arr2[i]) : arr1[i] === arr2[i];
for (let i = 0; i < array1.length; ++i) {
let equals = equaler ? equaler(array1[i], array2[i]) : array1[i] === array2[i];
if (!equals) {
return false;
}
Expand Down Expand Up @@ -2414,16 +2414,4 @@ namespace ts {
}
}
}

export function arrayStructurallyIsEqualTo<T>(array1: Array<T>, array2: Array<T>): boolean {
if (!array1 || !array2) {
return false;
}

if (array1.length !== array2.length) {
return false;
}

return arrayIsEqualTo(array1.sort(), array2.sort());
}
}
3 changes: 2 additions & 1 deletion src/server/editorServices.ts
Original file line number Diff line number Diff line change
Expand Up @@ -576,7 +576,8 @@ namespace ts.server {
let newRootFiles = projectOptions.files.map((f => this.getCanonicalFileName(f)));
let currentRootFiles = project.getRootFiles().map((f => this.getCanonicalFileName(f)));

if (!arrayStructurallyIsEqualTo(currentRootFiles, newRootFiles)) {
// We check if the project file list has changed. If so, we update the project.
if (!arrayIsEqualTo(currentRootFiles && currentRootFiles.sort(), newRootFiles && newRootFiles.sort())) {
// For configured projects, the change is made outside the tsconfig file, and
// it is not likely to affect the project for other files opened by the client. We can
// just update the current project.
Expand Down

0 comments on commit 1b36407

Please sign in to comment.