module volt.semantic.context

Code Map

module volt.semantic.context;


class Context
{
public:
	lp: LanguagePass;
	extyper: Visitor;
	isVarAssign: bool;
	overrideType: ir.Type;


public:
	this(lp: LanguagePass, extyper: Visitor) { }
	//! Setup the context from a empty state.
	fn setupFromScope(_scope: ir.Scope) { }
	//! Reset the context allowing it to be resued.
	fn reset() { }
	fn current() ir.Scope { }
	fn parentFunction() ir.Function { }
	fn currentFunction() ir.Function { }
	//! Returns how many functions deep this context currently is.
	fn functionDepth() u32 { }
	fn withExps() ir.Exp[] { }
	fn isNested() bool { }
	fn isFunction() bool { }
	fn lastIndexChild() ir.Exp { }
	fn enter(m: ir.Module) { }
	fn enter(s: ir.Struct) { }
	fn enter(u: ir.Union) { }
	fn enter(c: ir.Class) { }
	fn enter(i: ir._Interface) { }
	fn enter(e: ir.Enum) { }
	fn enter(func: ir.Function) { }
	fn enter(ti: ir.TemplateInstance) { }
	fn enter(bs: ir.BlockStatement) { }
	fn leave(m: ir.Module) { }
	fn leave(s: ir.Struct) { }
	fn leave(u: ir.Union) { }
	fn leave(c: ir.Class) { }
	fn leave(i: ir._Interface) { }
	fn leave(e: ir.Enum) { }
	fn leave(func: ir.Function) { }
	fn leave(ti: ir.TemplateInstance) { }
	fn leave(bs: ir.BlockStatement) { }
	//! Keep track of with statements and switch withs.
	fn pushWith(exp: ir.Exp) { }
	//! Keep track of with statements and switch withs.
	fn popWith(exp: ir.Exp) { }
	fn enter(postfix: ir.Postfix) { }
	fn leave(postfix: ir.Postfix) { }
	fn enter(unary: ir.Unary) { }
	fn leave(unary: ir.Unary) { }
	fn enter(bin: ir.BuiltinExp) { }
	fn leave(bin: ir.BuiltinExp) { }
}