Skip to content

Commit 4b7baef

Browse files
committed
fix: improve isPartialReplacement logic
1 parent 16bb86e commit 4b7baef

File tree

1 file changed

+28
-3
lines changed

1 file changed

+28
-3
lines changed

build/logic/generate.ts

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -335,9 +335,11 @@ function isPartialReplacement(
335335
const rhc = replacementDecl.heritageClauses;
336336
if (
337337
interfaceDecl.heritageClauses.some((heritageClause, index) => {
338-
return (
339-
heritageClause.getFullText(originalFile) !==
340-
rhc[index].getFullText(betterFile)
338+
return !heritageClauseEquals(
339+
heritageClause,
340+
rhc[index],
341+
originalFile,
342+
betterFile,
341343
);
342344
})
343345
) {
@@ -352,6 +354,29 @@ function isPartialReplacement(
352354
return true;
353355
}
354356

357+
function heritageClauseEquals(
358+
left: ts.HeritageClause,
359+
right: ts.HeritageClause,
360+
leftSourceFile: ts.SourceFile,
361+
rightSourceFile: ts.SourceFile,
362+
): boolean {
363+
if (left.token !== right.token) {
364+
return false;
365+
}
366+
if (left.types.length !== right.types.length) {
367+
return false;
368+
}
369+
for (let i = 0; i < left.types.length; i++) {
370+
if (
371+
left.types[i].getFullText(leftSourceFile).trim() !==
372+
right.types[i].getFullText(rightSourceFile).trim()
373+
) {
374+
return false;
375+
}
376+
}
377+
return true;
378+
}
379+
355380
/**
356381
* Print an interface declaration where members may be from
357382
* mixed source files.

0 commit comments

Comments
 (0)