deps_only(false)
{ }
-const string &InlineContentInjector::apply(Stage &stage, FunctionDeclaration &target_func, Block &tgtb, const NodeList<Statement>::iterator &ins_pt, FunctionDeclaration &src)
+const string &InlineContentInjector::apply(Stage &stage, FunctionDeclaration &target_func, Block &tgt_blk, const NodeList<Statement>::iterator &ins_pt, FunctionDeclaration &src)
{
- target_block = &tgtb;
+ target_block = &tgt_blk;
source_func = &src;
for(NodeList<Statement>::iterator i=src.body.body.begin(); i!=src.body.body.end(); ++i)
{
SetFlag set_remap(remap_names);
r_inlined_statement->visit(*this);
- tgtb.body.insert(ins_pt, r_inlined_statement);
+ tgt_blk.body.insert(ins_pt, r_inlined_statement);
}
NodeReorderer().apply(stage, target_func, dependencies);
if(assignment_target)
r_assign_to_subfield = true;
binary.left->visit(*this);
- SetForScope<bool> set(assignment_target, false);
+ SetFlag set(assignment_target, false);
binary.right->visit(*this);
}
else
void UnusedVariableRemover::visit(Assignment &assign)
{
{
- SetForScope<bool> set(assignment_target, !assign.self_referencing);
+ SetFlag set(assignment_target, !assign.self_referencing);
assign.left->visit(*this);
}
assign.right->visit(*this);
BlockVariableMap &block_variables = variables.back();
for(BlockVariableMap::iterator i=block_variables.begin(); i!=block_variables.end(); ++i)
- i->second.conditionally_assigned = true;
+ if(!i->second.local)
+ i->second.conditionally_assigned = true;
for(NodeArray<VariableDeclaration>::iterator i=func.parameters.begin(); i!=func.parameters.end(); ++i)
block_variables[i->get()].referenced = true;
merge_down_variables();