View source code
Display the source code in dmd/dsymbolsem.d from which thispage was generated on github.
Report a bug
If you spot a problem with this page, click here to create aBugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.Requires a signed-in GitHub account. This works well for small changes.If you'd like to make larger changes you may want to consider usinglocal clone.

Module dmd.dsymbolsem

Does the semantic 1 pass on the AST, which looks at symbol declarations but not initializers or function bodies.

Documentation

https://dlang.org/phobos/dmd_dsymbolsem.html

Coverage

https://codecov.io/gh/dlang/dmd/src/master/compiler/src/dmd/dsymbolsem.d

Functions

NameDescription
_foreach(sc, members, dg, 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.
_isZeroInit(exp) Determine if exp is all binary zeros.
addDeferredSemantic(s) Can't run semantic on s now, try again later.
addEnumMembersToSymtab(ed, sc, sds) Add members of EnumDeclaration to the symbol table(s).
adjustLocForMixin(input, loc, baseLoc, mixinOut) Set up loc for a parse of a mixin. Append the input text to the mixin.
apply(symbol, fp, ctx) Iterate this dsymbol or members of this scoped dsymbol, then call fp with the found symbol and params.
checkGNUABITag(sym, linkage) Called from a symbol's semantic to check if gnuAbiTag UDA can be applied to them
determineFields(ad) Find all instance fields in ad, then push them into fields.
determineSize(ad, loc) Collect all instance fields, then determine instance size.
dsymbolSemantic(dsym, sc) Does semantic analysis on the public face of declarations.
fillVtbl(bc, cd, vtbl, newinstance) Fill in vtbl[] for base class based on member functions of class cd.
followInstantiationContext(d, p1, p2) Returns true if any of the symbols p1 or p2 resides in the enclosing instantiation scope of this.
getAlignment(ad, sc) Determine the numerical value of the AlignmentDeclaration
getLocalClasses(mod, aclasses) Create array of the local classes in the Module, suitable for inclusion in ModuleInfo
hasPointers(d) Is Dsymbol a variable that contains pointers?
hasStaticCtorOrDtor(d) Return true if any of the members are static ctors or static dtors, or if any members have members that are.
isGNUABITag(e) Check if the provided expression references gnuAbiTag
isPOD(sd) Determine if struct is POD (Plain Old Data).
isRvalueConstructor(sd, ctor) Check if ctor is an rvalue constructor. A constructor that receives a single parameter of the same type as Unqual!typeof(this) is an rvalue constructor.
load(imp, sc) Load module.
loadCoreStdcConfig() A Singleton that loads core.stdc.config
loadStdMath() A Singleton that loads std.math
oneMember(d, ps, ident) Determine if this symbol is only one.
oneMembers(members, ps, ident) Same as Dsymbol::oneMember(), but look at an array of Dsymbols.
resolveAliasThis(sc, e, gag, findOnly) Find the alias this symbol of e's type.
runDeferredSemantic() Run semantic() on deferred symbols.
search(d, loc, ident, flags) Search for ident as member of d.
setScope(d, sc) Set scope for future semantic analysis so we can deal better with forward references.
size(_this, loc)
toAlias(s) If this symbol is really an alias for another, return that other. If needed, semantic() is invoked due to resolve forward reference.
toAlias2(s) Resolve recursive tuple expansion in eponymous template.
toParentP(d, p1, p2) Returns the declaration scope scope of this unless any of the symbols p1 or p2 resides in its enclosing instantiation scope then the latter is returned.

Authors

Walter Bright

License

Boost License 1.0