static void CheckFree(Block block, Definition def) { { UnitDefinition existingUnit; if (block.Units.TryGetValue(def.Name, out existingUnit)) throw new SemanticError(def, "Already defined: " + existingUnit.Name, existingUnit); } { VarDefinition existingVar; if (block.Variables.TryGetValue(def.Name, out existingVar)) throw new SemanticError(def, "Already defined: " + existingVar.Name, existingVar); } { ConstDefinition existingConst; if (block.Constants.TryGetValue(def.Name, out existingConst)) throw new SemanticError(def, "Already defined: " + existingConst.Name, existingConst); } { FuncDefinition existingFunc; if (block.Functions.TryGetValue(def.Name, out existingFunc)) throw new SemanticError(def, "Already defined: " + existingFunc.Name, existingFunc); } }
public SemanticError(Definition unit, string message, Definition existing = null) : base(unit.CodeRange, message) { }