module volt.semantic.irverifier

Code Map

module volt.semantic.irverifier;


//! This verifier is design to catch faulty IR (from the view of the
//! backends) that the LanguagePass generate.
class IrVerifier : ScopeManager, Pass
{
public:
	this(errSink: ErrorSink) { }
	fn transform(m: ir.Module) { }
	fn close() { }
	fn enter(v: ir.Variable) Status { }
	fn enter(st: ir.StorageType) Status { }
	fn visit(tr: ir.TypeReference) Status { }
	fn enter(ct: ir.FunctionType) Status { }
	fn enter(ct: ir.DelegateType) Status { }
	fn enter(tlb: ir.TopLevelBlock) Status { }
	fn enter(bs: ir.BlockStatement) Status { }
	fn visit(exp: ir.Exp, ie: ir.IdentifierExp) Status { }
	fn leave(tlb: ir.TopLevelBlock) Status { }
	fn leave(bs: ir.BlockStatement) Status { }
	fn enter(n: ir.Class) Status { }
	fn enter(n: ir.Struct) Status { }
	fn enter(n: ir.Union) Status { }
	fn enter(n: ir.Enum) Status { }
	fn enter(n: ir._Interface) Status { }
	fn check(a: ir.Aggregate) { }
	fn checkStorage(t: ir.Type) { }
	fn checkDepth(_scope: ir.Scope) { }
	fn checkNode(n: ir.Node) Status { }
	fn enter(m: ir.Module) Status { }
	fn enter(i: ir.Import) Status { }
	fn enter(u: ir.Unittest) Status { }
	fn enter(fp: ir.FunctionParam) Status { }
	fn enter(c: ir.Condition) Status { }
	fn enter(ctl: ir.ConditionTopLevel) Status { }
	fn enter(mf: ir.MixinFunction) Status { }
	fn enter(mt: ir.MixinTemplate) Status { }
	fn visit(qname: ir.QualifiedName) Status { }
	fn visit(name: ir.Identifier) Status { }
	fn enter(e: ir.ExpStatement) Status { }
	fn enter(ret: ir.ReturnStatement) Status { }
	fn enter(a: ir.AsmStatement) Status { }
	fn enter(i: ir.IfStatement) Status { }
	fn enter(w: ir.WhileStatement) Status { }
	fn enter(d: ir.DoStatement) Status { }
	fn enter(f: ir.ForStatement) Status { }
	fn enter(fes: ir.ForeachStatement) Status { }
	fn enter(ls: ir.LabelStatement) Status { }
	fn enter(ss: ir.SwitchStatement) Status { }
	fn enter(c: ir.SwitchCase) Status { }
	fn enter(gs: ir.GotoStatement) Status { }
	fn enter(ws: ir.WithStatement) Status { }
	fn enter(ss: ir.SynchronizedStatement) Status { }
	fn enter(ts: ir.TryStatement) Status { }
	fn enter(ts: ir.ThrowStatement) Status { }
	fn enter(ss: ir.ScopeStatement) Status { }
	fn enter(ps: ir.PragmaStatement) Status { }
	fn enter(cs: ir.ConditionStatement) Status { }
	fn enter(ms: ir.MixinStatement) Status { }
	fn enter(as: ir.AssertStatement) Status { }
	fn visit(bs: ir.BreakStatement) Status { }
	fn visit(cs: ir.ContinueStatement) Status { }
	fn enter(pointer: ir.PointerType) Status { }
	fn enter(array: ir.ArrayType) Status { }
	fn enter(array: ir.StaticArrayType) Status { }
	fn enter(array: ir.AmbiguousArrayType) Status { }
	fn enter(func: ir.Function) Status { }
	fn enter(attr: ir.Attribute) Status { }
	fn enter(a: ir.Alias) Status { }
	fn enter(typeOf: ir.TypeOf) Status { }
	fn enter(ed: ir.EnumDeclaration) Status { }
	fn visit(it: ir.PrimitiveType) Status { }
	fn visit(nt: ir.NullType) Status { }
	fn visit(at: ir.AutoType) Status { }
	fn visit(at: ir.NoType) Status { }
	fn visit(td: ir.TemplateDefinition) Status { }
	fn enter(e: ir.Exp, ir.Postfix) Visitor.Status { }
	fn enter(e: ir.Exp, ir.Unary) Visitor.Status { }
	fn enter(e: ir.Exp, ir.BinOp) Visitor.Status { }
	fn enter(e: ir.Exp, ir.Ternary) Visitor.Status { }
	fn enter(e: ir.Exp, ir.ArrayLiteral) Visitor.Status { }
	fn enter(e: ir.Exp, ir.AssocArray) Visitor.Status { }
	fn enter(e: ir.Exp, ir.Assert) Visitor.Status { }
	fn enter(e: ir.Exp, ir.StringImport) Visitor.Status { }
	fn enter(e: ir.Exp, ir.Typeid) Visitor.Status { }
	fn enter(e: ir.Exp, ir.IsExp) Visitor.Status { }
	fn enter(e: ir.Exp, ir.FunctionLiteral) Visitor.Status { }
	fn enter(e: ir.Exp, ir.StructLiteral) Visitor.Status { }
	fn enter(e: ir.Exp, ir.UnionLiteral) Visitor.Status { }
	fn enter(e: ir.Exp, ir.ClassLiteral) Visitor.Status { }
	fn enter(e: ir.Exp, ir.Constant) Visitor.Status { }
	fn enter(e: ir.Exp, ir.TypeExp) Visitor.Status { }
	fn enter(e: ir.Exp, ir.StatementExp) Visitor.Status { }
	fn enter(e: ir.Exp, ir.VaArgExp) Visitor.Status { }
	fn enter(e: ir.Exp, ir.PropertyExp) Visitor.Status { }
	fn enter(e: ir.Exp, ir.BuiltinExp) Visitor.Status { }
	fn enter(e: ir.Exp, ir.AccessExp) Visitor.Status { }
	fn enter(e: ir.Exp, ir.RunExp) Visitor.Status { }
	fn enter(e: ir.Exp, ir.ComposableString) Visitor.Status { }
	fn visit(e: ir.Exp, ir.ExpReference) Visitor.Status { }
	fn visit(e: ir.Exp, ir.TokenExp) Visitor.Status { }
	fn visit(e: ir.Exp, ir.StoreExp) Visitor.Status { }
}
class IrVerifier : ScopeManager, Pass

This verifier is design to catch faulty IR (from the view of the backends) that the LanguagePass generate.

Such as implicit casts or parser nodes that should have been cleaned or uninitialized fields (such as magnedName).