bool term_is_observable_for_special_reasons(Term* term) { return (is_output_placeholder(term) || (term->function == FUNCS.function_decl) || (term->function == FUNCS.loop_iterator) || (is_loop(term->owningBlock) && is_output_placeholder(term)) || (term_get_bool_prop(term, s_LocalStateResult, false))); }
void write_block_contents(SourceWriter* writer, Block* block) { for (int i=0; i < block->length(); i++) { Term* term = block->get(i); if (is_input_placeholder(term) || is_output_placeholder(term)) continue; write_term(writer, term); } }
void Term__is_output(VM* vm) { Term* t = as_term_ref(vm->input(0)); set_bool(vm->output(), t != NULL && is_output_placeholder(t)); }