module volt.semantic.classresolver

Code Map

module volt.semantic.classresolver;


fn actualizeInterface(lp: LanguagePass, i: ir._Interface) { }
fn actualizeClass(lp: LanguagePass, c: ir.Class) { }
fn rewriteThis(ctx: Context, e: ir.Exp, ident: ir.IdentifierExp, isCall: bool) ir.Type { }
fn rewriteThisCall(ctx: Context, e: ir.Exp, ident: ir.IdentifierExp, thisVar: ir.Variable, thisRef: ir.Exp) ir.Type { }
fn rewriteSuper(ctx: Context, e: ir.Exp, ident: ir.IdentifierExp, isCall: bool, isIdentifier: bool) ir.Type { }
fn rewriteSuperIdentifier(e: ir.Exp, _class: ir.Class) ir.Type { }
fn rewriteSuperCall(ctx: Context, e: ir.Exp, _class: ir.Class) ir.Type { }
//! Fills in _Interface.layoutStruct.
fn fillInInterfaceLayoutIfNeeded(lp: LanguagePass, i: ir._Interface) { }
//! Fills in Class.layoutStruct and Class.vtableStruct.
fn fillInClassLayoutIfNeeded(lp: LanguagePass, c: ir.Class) { }
fn fillInParentIfNeeded(lp: LanguagePass, c: ir.Class) { }
fn fillInInterfacesIfNeeded(lp: LanguagePass, c: ir.Class) { }
fn getClassFields(lp: LanguagePass, _class: ir.Class, offset: size_t) ir.Variable[] { }
fn generateDefaultConstructor(lp: LanguagePass, current: ir.Scope, _class: ir.Class) ir.Function { }
//! Get all the functions in an inheritance chain -- ignore overloading.
fn getClassMethods(lp: LanguagePass, current: ir.Scope, _class: ir.Class) ir.Function[][] { }
fn appendClassMethods(lp: LanguagePass, current: ir.Scope, _class: ir.Class, methods: FunctionArraySink) { }
fn appendInterfaceMethods(lp: LanguagePass, iface: ir._Interface, functions: FunctionSink) { }
fn appendClassMethodFunctions(lp: LanguagePass, _class: ir.Class, outMethods: FunctionSink) { }
//! Returns all functions in functions that have the same name as
//! considerFunction.
fn appendPotentialOverrideFunctions(functions: ir.Function[], considerFunction: ir.Function, _out: FunctionSink) { }
fn appendPotentialOverrideFunctions(functions: FunctionSink, considerFunction: ir.Function, _out: FunctionSink) { }
fn appendPotentialOverrideFunctions(func: ir.Function, considerFunction: ir.Function, _out: FunctionSink) { }
//! Replace an overriden function in parentSet with childFunction if
//! appropriate. Returns true if a function is replaced, false otherwise.
fn overrideFunctionsIfNeeded(lp: LanguagePass, childFunction: ir.Function, parentSet: FunctionSink) bool { }
fn getClassMethodTypeVariables(lp: LanguagePass, _class: ir.Class) ir.Variable[] { }
fn getInterfaceLayoutStruct(iface: ir._Interface, lp: LanguagePass) ir.Struct { }
fn getClassLayoutStruct(_class: ir.Class, lp: LanguagePass) ir.Struct { }
//! Given a class, return a family list of classes, with the given class as
//! the last member, and Object as the first.
fn getInheritanceChain(_class: ir.Class) ir.Class[] { }
fn getTypeInfos(classes: ir.Class[]) ir.Exp[] { }
//! For a given interface, return every function that needs to be
//! implemented by an implementor.
fn appendInterfaceFunctions(lp: LanguagePass, iface: ir._Interface, _out: FunctionSink) { }
//! Get a struct literal with an implementation of an interface from a
//! given class.
fn getInterfaceStructAssign(lp: LanguagePass, _class: ir.Class, _scope: ir.Scope, iface: ir._Interface, ifaceIndex: size_t) ir.Exp { }
fn buildInstanceVariable(lp: LanguagePass, _class: ir.Class) { }
fn emitVtableVariable(lp: LanguagePass, _class: ir.Class) { }
fn fillInInterfaceLayoutIfNeeded(lp: LanguagePass, i: ir._Interface)

Fills in _Interface.layoutStruct.

fn fillInClassLayoutIfNeeded(lp: LanguagePass, c: ir.Class)

Fills in Class.layoutStruct and Class.vtableStruct.

fn getClassMethods(lp: LanguagePass, current: ir.Scope, _class: ir.Class) ir.Function[][]

Get all the functions in an inheritance chain -- ignore overloading.

fn appendPotentialOverrideFunctions(functions: ir.Function[], considerFunction: ir.Function, _out: FunctionSink)

Returns all functions in functions that have the same name as considerFunction.

fn overrideFunctionsIfNeeded(lp: LanguagePass, childFunction: ir.Function, parentSet: FunctionSink) bool

Replace an overriden function in parentSet with childFunction if appropriate. Returns true if a function is replaced, false otherwise.

fn getInheritanceChain(_class: ir.Class) ir.Class[]

Given a class, return a family list of classes, with the given class as the last member, and Object as the first.

fn appendInterfaceFunctions(lp: LanguagePass, iface: ir._Interface, _out: FunctionSink)

For a given interface, return every function that needs to be implemented by an implementor.

fn getInterfaceStructAssign(lp: LanguagePass, _class: ir.Class, _scope: ir.Scope, iface: ir._Interface, ifaceIndex: size_t) ir.Exp

Get a struct literal with an implementation of an interface from a given class.