- accept
void accept(Visitor v)
Undocumented in source. Be warned that the author may not have intended to support it.
- 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.
- 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.
- expandMembers
void expandMembers(Scope* sc2)
Undocumented in source. Be warned that the author may not have intended to support it.
- findBestMatch
bool findBestMatch(Scope* sc, Expressions* fargs)
Undocumented in source. Be warned that the author may not have intended to support it.
- findTempDecl
bool findTempDecl(Scope* sc, WithScopeSymbol* pwithsym)
Find template declaration corresponding to template instance.
- 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.
- getIdent
Identifier getIdent()
Lazily generate identifier for template instance.
This is because 75% of the ident's are never needed.
- 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;
- isDiscardable
bool isDiscardable()
- isTemplateInstance
inout(TemplateInstance) isTemplateInstance()
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.
- needsCodegen
bool needsCodegen()
Returns true if this is not instantiated in non-root module, and
is a part of non-speculative instantiatiation.
- 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.
- oneMember
bool oneMember(Dsymbol* ps, Identifier ident)
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.
- semanticTiargs
bool semanticTiargs(Scope* sc)
Run semantic on the elements of tiargs.
Input:
sc
- 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.
- toChars
const(char)* toChars()
Undocumented in source. Be warned that the author may not have intended to support it.
- toHash
size_t toHash()
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.
- 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.
- 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
- 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.
- 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.
- nest
ushort nest [@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.
- nestUp
void nestUp [@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.
- members
Dsymbols* members;
Undocumented in source.
- symtab
DsymbolTable symtab;
Undocumented in source.
- endlinnum
uint endlinnum;
Undocumented in source.
- syntaxCopy
ScopeDsymbol syntaxCopy(Dsymbol s)
Undocumented in source. Be warned that the author may not have intended to support it.
- search
Dsymbol search(Loc loc, Identifier ident, int flags)
This function is #1 on the list of functions that eat cpu time.
Be very, very careful about slowing it down.
- importScope
void importScope(Dsymbol s, Visibility visibility)
Undocumented in source. Be warned that the author may not have intended to support it.
- addAccessiblePackage
void addAccessiblePackage(Package p, Visibility visibility)
Undocumented in source. Be warned that the author may not have intended to support it.
- isPackageAccessible
bool isPackageAccessible(Package p, Visibility visibility, int flags)
Undocumented in source. Be warned that the author may not have intended to support it.
- isforwardRef
bool isforwardRef()
Undocumented in source. Be warned that the author may not have intended to support it.
- multiplyDefined
void multiplyDefined(Loc loc, Dsymbol s1, Dsymbol s2)
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.
- findGetMembers
FuncDeclaration findGetMembers()
Look for member of the form:
const(MemberInfo)[] getMembers(string);
Returns NULL if not found
- symtabInsert
Dsymbol symtabInsert(Dsymbol s)
Undocumented in source. Be warned that the author may not have intended to support it.
- symtabLookup
Dsymbol symtabLookup(Dsymbol s, Identifier id)
Look up identifier in symbol table.
- hasStaticCtorOrDtor
bool hasStaticCtorOrDtor()
Return true if any of the members are static ctors or static dtors, or if
any members have members that are.
- ForeachDg
alias ForeachDg = int delegate(size_t idx, Dsymbol s)
Undocumented in source.
- _foreach
int _foreach(Scope* sc, Dsymbols* members, ForeachDg dg, size_t* pn)
Expands attribute declarations in members in depth first
order. Calls dg(size_t symidx, Dsymbol *sym) for each
member.
If dg returns !=0, stops and returns that value else returns 0.
Use this function to avoid the O(N + N^2/2) complexity of
calculating dim and calling N times getNth.
- isScopeDsymbol
inout(ScopeDsymbol) isScopeDsymbol()
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.html#explicit_tmp_instantiation
Given: foo!(args) => name = foo tiargs = args