diff --git a/src/clientSideScene/sceneEntities.ts b/src/clientSideScene/sceneEntities.ts index 02de3e2aa4..0d9d55d217 100644 --- a/src/clientSideScene/sceneEntities.ts +++ b/src/clientSideScene/sceneEntities.ts @@ -2471,9 +2471,9 @@ function prepareTruncatedMemoryAndAst( body: [structuredClone(_ast.body[bodyIndex])], } - // Grab all the TagDeclarators and TagIdentifiers from memory. + // Ignore anything in memory declared later than the sketch. let start = _node.node.start - const programMemoryOverride = programMemory.filterVariables(true, (value) => { + const programMemoryOverride = programMemory.filterVariables((value) => { if ( !('__meta' in value) || value.__meta === undefined || @@ -2483,12 +2483,15 @@ function prepareTruncatedMemoryAndAst( return false } - if (value.__meta[0].sourceRange[0] >= start) { + if ( + value.__meta[0].sourceRange[2] == 0 && + value.__meta[0].sourceRange[0] >= start + ) { // We only want things before our start point. return false } - return value.type === 'TagIdentifier' + return true }) if (err(programMemoryOverride)) return programMemoryOverride diff --git a/src/lang/wasm.ts b/src/lang/wasm.ts index cdb5764dec..fb663dc717 100644 --- a/src/lang/wasm.ts +++ b/src/lang/wasm.ts @@ -442,21 +442,11 @@ export class ProgramMemory { * Note: Return value of the returned ProgramMemory is always null. */ filterVariables( - keepPrelude: boolean, predicate: (value: KclValue) => boolean ): ProgramMemory | Error { const environments: Environment[] = [] for (const [i, env] of this.environments.entries()) { - let bindings: Memory - if (i === ROOT_ENVIRONMENT_REF && keepPrelude) { - // Get prelude definitions. Create these first so that they're always - // first in iteration order. - const memoryOrError = programMemoryInit() - if (err(memoryOrError)) return memoryOrError - bindings = memoryOrError.environments[0].bindings - } else { - bindings = emptyEnvironment().bindings - } + let bindings = emptyEnvironment().bindings for (const [name, value] of Object.entries(env.bindings)) { if (value === undefined) continue