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"); }
public static T IncreaseAndGet <T>(ref T value) => PrefixIncrement <T> .Invoke(ref value);
public void VisitPrefixIncrement(PrefixIncrement node) => InferSimpleType(node.Operand);