vector<FunctionDeclaration *> &decls = declarations[key];
if(func.definition==&func)
{
- if(stage_decl && stage_decl->definition)
+ if(stage_decl && stage_decl->definition && stage_decl->definition!=&func)
{
if(!func.overrd)
stage->diagnostics.push_back(Diagnostic(Diagnostic::WARN, func.source, func.line,
f->body.body.clear();
}
}
- else
+ else if(stage_decl)
{
- FunctionDeclaration *definition = (stage_decl ? stage_decl->definition : nullptr);
- r_any_resolved |= (definition!=func.definition);
- func.definition = definition;
-
- if(!stage_decl)
- stage_decl = &func;
+ r_any_resolved |= (stage_decl->definition!=func.definition);
+ func.definition = stage_decl->definition;
}
+ else
+ stage_decl = &func;
decls.push_back(&func);
TraversingVisitor::visit(func);