Compiler implementation of the D programming language.

Walter Bright
Boost License 1.0
Module entrypoint;

DMD-generated module __entrypoint where the C main resides

Module rootHasMain;

Module in which the D main is

struct Compiler;

A data structure that describes a back-end compiler and implements compiler-specific actions.

static void genCmain(Scope* sc);

Generate C main() in response to seeing D main().

This function will generate a module called __entrypoint, and set the globals entrypoint and rootHasMain.

This used to be in druntime, but contained a reference to Dmain which didn't work when druntime was made into a dll and was linked to a program, such as a C++ program, that didn't have a Dmain.

Scope* sc Scope which triggered the generation of the C main, used to get the module where the D main is.
static Expression paintAsType(UnionExp* pue, Expression e, Type type);

Encode the given expression, which is assumed to be an rvalue literal as another type for use in CTFE. This corresponds roughly to the idiom *(Type *)&e.

static void loadModule(Module m);

For the given module, perform any post parsing analysis. Certain compiler backends (ie: GDC) have special placeholder modules whose source are empty, but code gets injected immediately after loading.

static bool onImport(Module m);

A callback function that is called once an imported module is parsed. If the callback returns true, then it tells the frontend that the driver intends on compiling the import.

© 1999–2019 The D Language Foundation
Licensed under the Boost License 1.0.