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.