@@ -369,6 +369,7 @@ import {
369369 tokenIsIdentifierOrKeywordOrGreaterThan,
370370 tokenToString,
371371 tracing,
372+ transferSourceFileChildren,
372373 TransformFlags,
373374 TryStatement,
374375 TupleTypeNode,
@@ -9969,6 +9970,7 @@ namespace IncrementalParser {
99699970 aggressiveChecks,
99709971 );
99719972 result.impliedNodeFormat = sourceFile.impliedNodeFormat;
9973+ transferSourceFileChildren(sourceFile, result);
99729974 return result;
99739975 }
99749976
@@ -10021,9 +10023,9 @@ namespace IncrementalParser {
1002110023 }
1002210024 }
1002310025
10024- function moveElementEntirelyPastChangeRange(element: Node, isArray: false, delta: number, oldText: string, newText: string, aggressiveChecks: boolean): void;
10025- function moveElementEntirelyPastChangeRange(element: NodeArray<Node>, isArray: true, delta: number, oldText: string, newText: string, aggressiveChecks: boolean): void;
10026- function moveElementEntirelyPastChangeRange(element: Node | NodeArray<Node>, isArray: boolean, delta: number, oldText: string, newText: string, aggressiveChecks: boolean) {
10026+ function moveElementEntirelyPastChangeRange(element: Node, origSourceFile: SourceFile, isArray: false, delta: number, oldText: string, newText: string, aggressiveChecks: boolean): void;
10027+ function moveElementEntirelyPastChangeRange(element: NodeArray<Node>, origSourceFile: SourceFile, isArray: true, delta: number, oldText: string, newText: string, aggressiveChecks: boolean): void;
10028+ function moveElementEntirelyPastChangeRange(element: Node | NodeArray<Node>, origSourceFile: SourceFile, isArray: boolean, delta: number, oldText: string, newText: string, aggressiveChecks: boolean) {
1002710029 if (isArray) {
1002810030 visitArray(element as NodeArray<Node>);
1002910031 }
@@ -10040,7 +10042,7 @@ namespace IncrementalParser {
1004010042
1004110043 // Ditch any existing LS children we may have created. This way we can avoid
1004210044 // moving them forward.
10043- unsetNodeChildren(node);
10045+ unsetNodeChildren(node, origSourceFile );
1004410046
1004510047 setTextRangePosEnd(node, node.pos + delta, node.end + delta);
1004610048
@@ -10187,7 +10189,7 @@ namespace IncrementalParser {
1018710189 if (child.pos > changeRangeOldEnd) {
1018810190 // Node is entirely past the change range. We need to move both its pos and
1018910191 // end, forward or backward appropriately.
10190- moveElementEntirelyPastChangeRange(child, /*isArray*/ false, delta, oldText, newText, aggressiveChecks);
10192+ moveElementEntirelyPastChangeRange(child, sourceFile, /*isArray*/ false, delta, oldText, newText, aggressiveChecks);
1019110193 return;
1019210194 }
1019310195
@@ -10197,7 +10199,7 @@ namespace IncrementalParser {
1019710199 const fullEnd = child.end;
1019810200 if (fullEnd >= changeStart) {
1019910201 markAsIntersectingIncrementalChange(child);
10200- unsetNodeChildren(child);
10202+ unsetNodeChildren(child, sourceFile );
1020110203
1020210204 // Adjust the pos or end (or both) of the intersecting element accordingly.
1020310205 adjustIntersectingElement(child, changeStart, changeRangeOldEnd, changeRangeNewEnd, delta);
@@ -10220,7 +10222,7 @@ namespace IncrementalParser {
1022010222 if (array.pos > changeRangeOldEnd) {
1022110223 // Array is entirely after the change range. We need to move it, and move any of
1022210224 // its children.
10223- moveElementEntirelyPastChangeRange(array, /*isArray*/ true, delta, oldText, newText, aggressiveChecks);
10225+ moveElementEntirelyPastChangeRange(array, sourceFile, /*isArray*/ true, delta, oldText, newText, aggressiveChecks);
1022410226 return;
1022510227 }
1022610228
0 commit comments