Esempio n. 1
0
 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);
     }
 }
Esempio n. 2
0
 public override void Accept(SuperCallExpression super)
 {
     super.VisitChildren(this);
 }
Esempio n. 3
0
 public override void Accept(SuperCallExpression super)
 {
     errorLog.AddError(ErrorType.ParserError, super.Location,
                       "statement can not exist inside pattern!");
 }
Esempio n. 4
0
 public virtual void Accept(SuperCallExpression super)
 {
 }