- accept
void accept(Visitor v)
Undocumented in source. Be warned that the author may not have intended to support it.
- findTempDecl
bool findTempDecl(Scope* sc)
Undocumented in source. Be warned that the author may not have intended to support it.
- hasPointers
bool hasPointers()
Undocumented in source. Be warned that the author may not have intended to support it.
- isTemplateMixin
inout(TemplateMixin) isTemplateMixin()
Undocumented in source. Be warned that the author may not have intended to support it.
- kind
const(char)* kind()
Undocumented in source. Be warned that the author may not have intended to support it.
- oneMember
bool oneMember(Dsymbol* ps, Identifier ident)
Undocumented in source. Be warned that the author may not have intended to support it.
- setFieldOffset
void setFieldOffset(AggregateDeclaration ad, uint* poffset, bool isunion)
Undocumented in source. Be warned that the author may not have intended to support it.
- syntaxCopy
TemplateInstance syntaxCopy(Dsymbol s)
Undocumented in source. Be warned that the author may not have intended to support it.
- toChars
const(char)* toChars()
Undocumented in source. Be warned that the author may not have intended to support it.
- name
Identifier name;
Undocumented in source.
- tiargs
Objects* tiargs;
Undocumented in source.
- tdtypes
Objects tdtypes;
Undocumented in source.
- importedModules
Modules importedModules;
Undocumented in source.
- tempdecl
Dsymbol tempdecl;
Undocumented in source.
- enclosing
Dsymbol enclosing;
Undocumented in source.
- aliasdecl
Dsymbol aliasdecl;
Undocumented in source.
- inst
TemplateInstance inst;
Undocumented in source.
- argsym
ScopeDsymbol argsym;
Undocumented in source.
- hash
size_t hash;
Undocumented in source.
- fargs
Expressions* fargs;
Undocumented in source.
- deferred
TemplateInstances* deferred;
Undocumented in source.
- memberOf
Module memberOf;
Undocumented in source.
- tinst
TemplateInstance tinst;
Undocumented in source.
- tnext
TemplateInstance tnext;
Undocumented in source.
- minst
Module minst;
Undocumented in source.
- inuse
ubyte inuse;
Undocumented in source.
- nest
ushort nest [@property getter]
Undocumented in source. Be warned that the author may not have intended to support it.
- nestUp
void nestUp [@property getter]
Undocumented in source. Be warned that the author may not have intended to support it.
- nestDown
void nestDown [@property getter]
Undocumented in source. Be warned that the author may not have intended to support it.
- semantictiargsdone
bool semantictiargsdone [@property getter]
has semanticTiargs() been done?
- semantictiargsdone
bool semantictiargsdone [@property setter]
Undocumented in source. Be warned that the author may not have intended to support it.
- havetempdecl
bool havetempdecl [@property getter]
if used second constructor
- havetempdecl
bool havetempdecl [@property setter]
Undocumented in source. Be warned that the author may not have intended to support it.
- gagged
bool gagged [@property getter]
if the instantiation is done with error gagging
- gagged
bool gagged [@property setter]
Undocumented in source. Be warned that the author may not have intended to support it.
- arraySyntaxCopy
Objects* arraySyntaxCopy(Objects* objs)
Undocumented in source. Be warned that the author may not have intended to support it.
- syntaxCopy
TemplateInstance syntaxCopy(Dsymbol s)
Undocumented in source. Be warned that the author may not have intended to support it.
- toAlias
Dsymbol toAlias()
Undocumented in source. Be warned that the author may not have intended to support it.
- kind
const(char)* kind()
Undocumented in source. Be warned that the author may not have intended to support it.
- oneMember
bool oneMember(Dsymbol* ps, Identifier ident)
Undocumented in source. Be warned that the author may not have intended to support it.
- toChars
const(char)* toChars()
Undocumented in source. Be warned that the author may not have intended to support it.
- toPrettyCharsHelper
const(char)* toPrettyCharsHelper()
Undocumented in source. Be warned that the author may not have intended to support it.
- printInstantiationTrace
void printInstantiationTrace(Classification cl)
Given an error instantiating the TemplateInstance,
give the nested TemplateInstance instantiations that got
us here. Those are a list threaded into the nested scopes.
- getIdent
Identifier getIdent()
Lazily generate identifier for template instance.
This is because 75% of the ident's are never needed.
- equalsx
bool equalsx(TemplateInstance ti)
Compare proposed template instantiation with existing template instantiation.
Note that this is not commutative because of the auto ref check.
- toHash
size_t toHash()
Undocumented in source. Be warned that the author may not have intended to support it.
- isDiscardable
bool isDiscardable()
- needsCodegen
bool needsCodegen()
Returns true if this is not instantiated in non-root module, and
is a part of non-speculative instantiatiation.
- findTempDecl
bool findTempDecl(Scope* sc, WithScopeSymbol* pwithsym)
Find template declaration corresponding to template instance.
- updateTempDecl
bool updateTempDecl(Scope* sc, Dsymbol s)
Confirm s is a valid template, then store it.
Input:
sc
s candidate symbol of template. It may be:
TemplateDeclaration
FuncDeclaration with findTemplateDeclRoot() != NULL
OverloadSet which contains candidates
- semanticTiargs
bool semanticTiargs(Loc loc, Scope* sc, Objects* tiargs, int flags)
Run semantic of tiargs as arguments of template.
Input:
loc
sc
tiargs array of template arguments
flags 1: replace const variables with their initializers
2: don't devolve Parameter to Type
- semanticTiargs
bool semanticTiargs(Scope* sc)
Run semantic on the elements of tiargs.
Input:
sc
- findBestMatch
bool findBestMatch(Scope* sc, Expressions* fargs)
Undocumented in source. Be warned that the author may not have intended to support it.
- needsTypeInference
bool needsTypeInference(Scope* sc, int flag)
Determine if template instance is really a template function,
and that template function needs to infer types from the function
arguments.
- hasNestedArgs
bool hasNestedArgs(Objects* args, bool isstatic)
Determines if a TemplateInstance will need a nested
generation of the TemplateDeclaration.
Sets enclosing property if so, and returns != 0;
- appendToModuleMember
Dsymbols* appendToModuleMember()
Append 'this' to the specific module members[]
- declareParameters
void declareParameters(Scope* sc)
Declare parameters of template instance, initialize them with the
template instance arguments.
- genIdent
Identifier genIdent(Objects* args)
This instance needs an identifier for name mangling purposes.
Create one by taking the template declaration name and adding
the type signature for it.
- expandMembers
void expandMembers(Scope* sc2)
Undocumented in source. Be warned that the author may not have intended to support it.
- tryExpandMembers
void tryExpandMembers(Scope* sc2)
Undocumented in source. Be warned that the author may not have intended to support it.
- trySemantic3
void trySemantic3(Scope* sc2)
Undocumented in source. Be warned that the author may not have intended to support it.
- isTemplateInstance
inout(TemplateInstance) isTemplateInstance()
Undocumented in source. Be warned that the author may not have intended to support it.
- accept
void accept(Visitor v)
Undocumented in source. Be warned that the author may not have intended to support it.
https://dlang.org/spec/template-mixin.html
Syntax: mixin MixinTemplateName TemplateArguments Identifier;