Esempio n. 1
0
        public void VisitPrefixIncrement(PrefixIncrement node)
        {
            if (node.Operand is VarAccess)
            {
                var varDef = GetVarDefinition((VarAccess)node.Operand);

                _emitter.Emit(OpCodes.Ldloc, varDef);
                _emitter.Emit(OpCodes.Ldc_I4_1);
                _emitter.Emit(OpCodes.Add);

                if (!node.IsStatementExpression)
                {
                    _emitter.Emit(OpCodes.Dup);
                }

                _emitter.Emit(OpCodes.Stloc, varDef);
                return;
            }

            throw new SemanticException("Prefix increment is supported only for variables");
        }
Esempio n. 2
0
 public static T IncreaseAndGet <T>(ref T value)
 => PrefixIncrement <T> .Invoke(ref value);
Esempio n. 3
0
 public void VisitPrefixIncrement(PrefixIncrement node) => InferSimpleType(node.Operand);