Skip to content

Commit fa4980a

Browse files
authored
fix(code-placeholders): make python bare-placeholder classification and tagged-template edits linear (#8611)
1 parent f87c4c8 commit fa4980a

2 files changed

Lines changed: 361 additions & 83 deletions

File tree

‎apps/sim/lib/execution/code-placeholders/javascript.ts‎

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
CodePlaceholderCompileError,
55
createCodePlaceholderCompilationContext,
66
createOffsetRangeLookup,
7+
partitionPoint,
78
type SourceEdit,
89
} from '@/lib/execution/code-placeholders/shared'
910
import type {
@@ -762,12 +763,19 @@ export async function compileJavaScriptPlaceholders(
762763
if (ts.isTemplateExpression(node.template)) {
763764
for (const span of node.template.templateSpans) visit(span.expression)
764765
}
765-
const nestedEdits = edits.splice(nestedEditStart)
766+
// A stable sort: applySourceEdits keeps input order among edits with equal bounds.
767+
const nestedEdits = edits
768+
.splice(nestedEditStart)
769+
.sort((left, right) => left.start - right.start)
766770
const transformedNodeText = (child: ts.Node): string => {
767771
const childStart = child.getStart(sourceFile)
768772
const childEnd = child.getEnd()
769773
const childEdits = nestedEdits
770-
.filter((edit) => edit.start >= childStart && edit.end <= childEnd)
774+
.slice(
775+
partitionPoint(nestedEdits, (edit) => edit.start < childStart),
776+
partitionPoint(nestedEdits, (edit) => edit.start <= childEnd)
777+
)
778+
.filter((edit) => edit.end <= childEnd)
771779
.map((edit) => ({
772780
...edit,
773781
start: edit.start - childStart,

0 commit comments

Comments
 (0)