jbe@214: function execute._initializers(initializer_path_element) jbe@277: local yieldvalue1 = {} jbe@277: local yieldvalue2 = {} jbe@214: local coro = coroutine.wrap(function() jbe@214: execute.multi_wrapped( jbe@214: execute._create_sorted_execution_list( jbe@214: function(add_by_path) jbe@214: add_by_path(initializer_path_element) jbe@316: add_by_path(WEBMCP_APP_NAME, initializer_path_element) jbe@214: end, jbe@214: function(full_path, relative_path) jbe@214: execute.file_path{ file_path = full_path } jbe@214: end jbe@214: ), jbe@214: function() jbe@277: coroutine.yield(yieldvalue1) jbe@214: end jbe@214: ) jbe@277: return yieldvalue2 jbe@214: end) jbe@277: local yieldvalue = coro() jbe@277: if yieldvalue == yieldvalue2 then jbe@277: error("Initializers failed to call execute.inner()") jbe@277: elseif yieldvalue ~= yieldvalue1 then jbe@277: error("Unexpected yield in initializers") jbe@214: end jbe@277: execute._finalizers[#execute._finalizers+1] = function() jbe@277: assert(coro() == yieldvalue2, "Unexpected yield in finalizers") jbe@277: end jbe@214: end