Lines 2674-2679
FuncDeclaration::toObjFile (int)
Link Here
|
2674 |
irs->emitLocalVar (v_arguments_var, true); |
2674 |
irs->emitLocalVar (v_arguments_var, true); |
2675 |
|
2675 |
|
2676 |
fbody->toIR (irs); |
2676 |
fbody->toIR (irs); |
|
|
2677 |
|
2678 |
// Find all template instances that are nested in this scope and emit |
2679 |
Module * module = getModule(); |
2680 |
if (module->members) |
2681 |
{ |
2682 |
for (size_t i = 0; i < module->members->dim; i++) |
2683 |
{ |
2684 |
Dsymbol *dsym = (*module->members)[i]; |
2685 |
if(dsym->isTemplateInstance() && dsym->parent == this) |
2686 |
{ |
2687 |
dsym->toObjFile (false); |
2688 |
} |
2689 |
} |
2690 |
} |
2677 |
|
2691 |
|
2678 |
// Process all deferred nested functions. |
2692 |
// Process all deferred nested functions. |
2679 |
for (size_t i = 0; i < this_sym->deferredNestedFuncs.dim; ++i) |
2693 |
for (size_t i = 0; i < this_sym->deferredNestedFuncs.dim; ++i) |
Lines 2820-2826
Module::genobjfile (int multiobj)
Link Here
|
2820 |
for (size_t i = 0; i < members->dim; i++) |
2834 |
for (size_t i = 0; i < members->dim; i++) |
2821 |
{ |
2835 |
{ |
2822 |
Dsymbol *dsym = (*members)[i]; |
2836 |
Dsymbol *dsym = (*members)[i]; |
2823 |
dsym->toObjFile (multiobj); |
2837 |
//TemplateInstances in functions are emitted from that function |
|
|
2838 |
if(!dsym->isTemplateInstance() || !dsym->parent || !dsym->parent->isFuncDeclaration()) |
2839 |
dsym->toObjFile (multiobj); |
2840 |
} |
2841 |
|
2842 |
//It's possible that we didn't catch all TemplateInstances in functions |
2843 |
for (size_t i = 0; i < members->dim; i++) |
2844 |
{ |
2845 |
Dsymbol *dsym = (*members)[i]; |
2846 |
if(dsym->isTemplateInstance() && dsym->parent && dsym->parent->isFuncDeclaration()) |
2847 |
dsym->toObjFile (multiobj); |
2824 |
} |
2848 |
} |
2825 |
} |
2849 |
} |
2826 |
|
2850 |
|