示例#1
0
        public override void GenCode(ICodeGenerator cg)
        {
            LValue.GenCode(cg);
            var expType   = LValue.ReturnType.PrimitiveType.ILType; //Obtengo el tipo del LValue
            var fieldInfo = expType.GetField(FieldName);            //Obtengo el tipo del campo

            cg.GetGenerator.Emit(OpCodes.Ldfld, fieldInfo);
        }
示例#2
0
        public override void GenCode(ICodeGenerator cg)
        {
            var       gen       = cg.GetGenerator;
            ArrayType arrayType = (LValue.ReturnType.PrimitiveType as ArrayType);

            LValue.GenCode(cg);
            IndexInstruction.GenCode(cg);
            gen.Emit(OpCodes.Ldelem, arrayType.BaseType.ILType);
        }
示例#3
0
        public void AssignValue(ICodeGenerator cg)
        {
            var          gen       = cg.GetGenerator;
            ArrayType    arrayType = (LValue.ReturnType.PrimitiveType as ArrayType);
            LocalBuilder aux       = gen.DeclareLocal(arrayType.BaseType.ILType);

            gen.Emit(OpCodes.Stloc, aux);
            LValue.GenCode(cg);
            IndexInstruction.GenCode(cg);
            gen.Emit(OpCodes.Ldloc, aux);
            gen.Emit(OpCodes.Stelem, arrayType.BaseType.ILType);
        }
示例#4
0
        public void AssignValue(ICodeGenerator cg)
        {
            var gen   = cg.GetGenerator;
            var value = gen.DeclareLocal(ReturnType.PrimitiveType.ILType);

            gen.Emit(OpCodes.Stloc, value);

            //Ponemos losvalores necesarios en la pila
            LValue.GenCode(cg);
            gen.Emit(OpCodes.Ldloc, value);

            var expType   = LValue.ReturnType.PrimitiveType.ILType; //Obtengo el tipo del LValue
            var fieldInfo = expType.GetField(FieldName);            //Obtengo el tipo del campo

            gen.Emit(OpCodes.Stfld, fieldInfo);                     //pongo el valor de la pila en el campo del record
        }