MCPcopy Create free account
hub / github.com/Snapchat/Valdi / flattenBlocks

Method flattenBlocks

compiler/companion/src/JSXProcessor.ts:1207–1234  ·  view source on GitHub ↗

* Merge any added blocks into the statements list

(
    node: ts.Node,
    previousStatements: ts.NodeArray<ts.Node> | ts.Node[],
    newStatements: ts.Statement[],
  )

Source from the content-addressed store, hash-verified

1205 * Merge any added blocks into the statements list
1206 */
1207 private flattenBlocks(
1208 node: ts.Node,
1209 previousStatements: ts.NodeArray<ts.Node> | ts.Node[],
1210 newStatements: ts.Statement[],
1211 ): ts.Statement[] {
1212 if (newStatements.length !== previousStatements.length) {
1213 this.onError(
1214 node,
1215 `Invalid output statements, had length ${previousStatements.length} new length ${newStatements.length}`,
1216 );
1217 }
1218
1219 const out: ts.Statement[] = [];
1220
1221 for (let i = 0; i < previousStatements.length; i++) {
1222 const oldStatement = previousStatements[i];
1223 const newStatement = newStatements[i];
1224
1225 if (ts.isBlock(newStatement) && !ts.isBlock(oldStatement)) {
1226 // We created a block, merge its content into the statements
1227 out.push(...newStatement.statements);
1228 } else {
1229 out.push(newStatement);
1230 }
1231 }
1232
1233 return out;
1234 }
1235
1236 private doUpdateSourceFileNode(
1237 node: ts.SourceFile,

Callers 3

outputJSXChildrenMethod · 0.95
transformSourceFileMethod · 0.95
transformNodeMethod · 0.95

Calls 2

onErrorMethod · 0.95
pushMethod · 0.45

Tested by

no test coverage detected