From 322ce34d77b4e2d8c6d721b156c02496d105741f Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Wed, 18 Nov 2015 11:30:54 -0800 Subject: 2458 - edit/: recipe side free of sandbox errors This is happening because of our recent generic changes, which trigger some post-processing transforms on all recipes even if we processed them before. We could clear 'interactive' inside 'reload' to avoid this, but random 'run' blocks in scenarios can still pick up errors from sandboxes earlier in a scenario. The right place to clear the 'interactive' recipe is right after we use it, in run_code_end(). --- 091run_interactive.cc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to '091run_interactive.cc') diff --git a/091run_interactive.cc b/091run_interactive.cc index 25e02836..a883a5ae 100644 --- a/091run_interactive.cc +++ b/091run_interactive.cc @@ -107,6 +107,7 @@ bool run_interactive(long long int address) { } void run_code_begin() { +//? cerr << "loading new trace\n"; // stuff to undo later, in run_code_end() Hide_warnings = true; Hide_errors = true; @@ -119,6 +120,7 @@ void run_code_begin() { } void run_code_end() { +//? cerr << "back to old trace\n"; Hide_warnings = false; Hide_errors = false; Disable_redefine_warnings = false; @@ -127,6 +129,7 @@ void run_code_end() { Save_trace_stream = NULL; Trace_file = Save_trace_file; Save_trace_file.clear(); + Recipe.erase(get(Recipe_ordinal, "interactive")); // keep past sandboxes from inserting errors } :(before "End Load Recipes") @@ -417,6 +420,7 @@ case RELOAD: { } :(before "End Primitive Recipe Implementations") case RELOAD: { +//? cerr << "== reload\n"; // clear any containers in advance for (long long int i = 0; i < SIZE(recently_added_types); ++i) { Type_ordinal.erase(get(Type, recently_added_types.at(i)).name); @@ -427,15 +431,17 @@ case RELOAD: { routine* save_current_routine = Current_routine; Current_routine = NULL; vector recipes_reloaded = load(code); - for (long long int i = 0; i < SIZE(recipes_reloaded); ++i) { + // clear a few things from previous runs + // ad hoc list; we've probably missed a few + for (long long int i = 0; i < SIZE(recipes_reloaded); ++i) Name.erase(recipes_reloaded.at(i)); - } transform_all(); Trace_stream->newline(); // flush trace Current_routine = save_current_routine; products.resize(1); products.at(0).push_back(trace_error_warning_contents()); run_code_end(); // wait until we're done with the trace contents +//? cerr << "reload done\n"; break; } -- cgit 1.4.1-2-gfad0