protected virtual void EmitLocalVar(ILGenerator IL, List <ZCLocalVar> localList) { BuilderUtil.EmitLocalVar(this.GetContextProc(), this.ClassContext.IsStatic(), IL, localList); //localList.Reverse(); //for (int i = 0; i < localList.Count; i++) //{ // ZCLocalVar varSymbol = localList[i]; // varSymbol.VarBuilder = IL.DeclareLocal(ZTypeUtil.GetTypeOrBuilder(varSymbol.GetZType())); // varSymbol.VarBuilder.SetLocalSymInfo(varSymbol.ZName); //} //for (int i = 0; i < localList.Count; i++) //{ // ZCLocalVar varSymbol = localList[i]; // if(varSymbol.IsNestedClassInstance) // { // LocalBuilder lanmbdaLocalBuilder = this.GetContextProc().NestedInstance.VarBuilder; // ConstructorBuilder newBuilder = this.GetContextProc().GetNestedClassContext().DefaultConstructorBuilder; // IL.Emit(OpCodes.Newobj, newBuilder); // EmitHelper.StormVar(IL, lanmbdaLocalBuilder); // if(! this.ClassContext.IsStatic() ) // { // ILGeneratorUtil.LoadLocal(IL, lanmbdaLocalBuilder); // IL.Emit(OpCodes.Ldarg_0); // EmitSymbolHelper.EmitStorm(IL, this.GetContextProc().GetNestedClassContext().MasterClassField); // } // } //} }
public void EmitBody() { var IL = this.NestedMethodContext.GetILGenerator(); List <ZCLocalVar> localList = this.NestedMethodContext.LocalManager.LocalVarList; BuilderUtil.EmitLocalVar(NestedMethodContext, false, IL, localList); //EmitLocalVar(IL, localList); ActionExp.Emit(); //if (!ZTypeUtil.IsVoid(this.RetZType)) //{ // IL.Emit(OpCodes.Ldloc_0); //} if (this.RetSymbol == null) { if (!ZTypeUtil.IsVoid(this.ActionExp.RetType)) { IL.Emit(OpCodes.Pop); } } else { EmitHelper.StormVar(IL, this.RetSymbol.VarBuilder); } IL.Emit(OpCodes.Ret); //CreateNestedType(); }