public override void Accept(SuperCallExpression super) { string[] subclass = super.Parent.Base [0].Split('.'); super.Arguments.Visit(this); methodBuilder.EmitInstruction(super.Location, Opcode.LoadGlobal, methodBuilder.Module.DefineConstant(new IodineName(subclass [0]))); for (int i = 1; i < subclass.Length; i++) { methodBuilder.EmitInstruction(super.Location, Opcode.LoadAttribute, methodBuilder.Module.DefineConstant(new IodineName(subclass [0]))); } methodBuilder.EmitInstruction(super.Location, Opcode.InvokeSuper, super.Arguments.Children.Count); for (int i = 1; i < super.Parent.Base.Count; i++) { string[] contract = super.Parent.Base [i].Split('.'); methodBuilder.EmitInstruction(super.Location, Opcode.LoadGlobal, methodBuilder.Module.DefineConstant(new IodineName(contract [0]))); for (int j = 1; j < contract.Length; j++) { methodBuilder.EmitInstruction(super.Location, Opcode.LoadAttribute, methodBuilder.Module.DefineConstant(new IodineName(contract [0]))); } methodBuilder.EmitInstruction(super.Location, Opcode.InvokeSuper, 0); } }
public override void Accept(SuperCallExpression super) { super.VisitChildren(this); }
public override void Accept(SuperCallExpression super) { errorLog.AddError(ErrorType.ParserError, super.Location, "statement can not exist inside pattern!"); }
public virtual void Accept(SuperCallExpression super) { }