ILVariable RegisterVariable(VariableKind kind, IType type, StackType stackType, string name = null) { var variable = new ILVariable(kind, type, stackType); if (string.IsNullOrWhiteSpace(name)) { name = "I_" + (helperVariableCount++); variable.HasGeneratedName = true; } variable.Name = name; Variables.Add(variable); return(variable); }
public ILVariable RegisterVariable(VariableKind kind, IType type, string name = null) { int index = Variables.Where(v => v.Kind == kind).MaxOrDefault(v => v.Index, -1) + 1; var variable = new ILVariable(kind, type, index); if (string.IsNullOrWhiteSpace(name)) { switch (kind) { case VariableKind.Local: case VariableKind.ForeachLocal: name = "V_"; break; case VariableKind.Parameter: name = "P_"; break; case VariableKind.Exception: name = "E_"; break; case VariableKind.StackSlot: name = "S_"; break; case VariableKind.InitializerTarget: name = "I_"; break; default: throw new ArgumentOutOfRangeException(nameof(kind)); } name += index; variable.HasGeneratedName = true; } variable.Name = name; Variables.Add(variable); return(variable); }