From 3c0eaed66f504db516cb9187dfd4a80cdab69eab Mon Sep 17 00:00:00 2001 From: Thomas Weber Date: Sun, 2 Aug 2020 21:46:04 -0500 Subject: [PATCH] Fix procedure dependencies breaking with caching --- src/compiler/astgen.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/compiler/astgen.js b/src/compiler/astgen.js index 83540a19..64e0dd0b 100644 --- a/src/compiler/astgen.js +++ b/src/compiler/astgen.js @@ -1213,10 +1213,8 @@ class ASTGenerator { this.procedures = {}; } - generateScriptTree (generator, topBlockId) { - const result = generator.generate(topBlockId); - - for (const procedureCode of generator.dependedProcedures) { + addProcedureDependencies (dependencies) { + for (const procedureCode of dependencies) { if (this.procedures.hasOwnProperty(procedureCode)) { continue; } @@ -1229,7 +1227,11 @@ class ASTGenerator { const definition = this.blocks.getProcedureDefinition(procedureCode); this.uncompiledProcedures.set(procedureCode, definition); } + } + generateScriptTree (generator, topBlockId) { + const result = generator.generate(topBlockId); + this.addProcedureDependencies(result.dependedProcedures); return result; } @@ -1263,9 +1265,10 @@ class ASTGenerator { } if (this.blocks._cache.compiledProcedures[procedureCode]) { - this.procedures[procedureCode] = this.blocks._cache.compiledProcedures[procedureCode]; + const result = this.blocks._cache.compiledProcedures[procedureCode]; + this.procedures[procedureCode] = result; + this.addProcedureDependencies(result.dependedProcedures); } else { - console.log('parsing AST for', procedureCode); const generator = new ScriptTreeGenerator(this.thread); generator.setProcedureCode(procedureCode); if (isWarp) generator.enableWarp();