Replace template symbol module fix with more localized hack.

This reverts commit c4adbedcc, which would have fixed the
problem at its roots, but caused strange template function
attribute inference failures in D-YAML, presumably due to
the different order of semantic3 execution on the templates.
This commit is contained in:
David Nadlinger
2012-12-31 02:39:47 +01:00
parent 2898e5cac3
commit 39e3e3a678
8 changed files with 32 additions and 52 deletions

View File

@@ -968,6 +968,16 @@ struct FuncLiteralDeclaration : FuncDeclaration
FuncLiteralDeclaration *isFuncLiteralDeclaration() { return this; }
const char *kind();
#if IN_LLVM
// If this is only used as alias parameter to a template instantiation,
// keep track of which one, as the function will only be codegen'ed in the
// module the template instance is pushed to, which is not always the same
// as this->module because of the importedFrom check in
// TemplateInstance::semantic and the fact that importedFrom is only set
// once for the first module.
TemplateInstance *owningTemplate;
#endif
};
struct CtorDeclaration : FuncDeclaration