@@ -282,9 +282,21 @@ function generate_var(a, varclass;
282282 var
283283end
284284
285+ singular (sym) = last (string (sym)) == ' s' ? Symbol (string (sym)[1 : (end - 1 )]) : sym
286+
287+ function check_name_uniqueness (dict, a, newvarclass)
288+ for varclass in [:variables , :parameters , :structural_parameters , :constants ]
289+ dvarclass = get (dict, varclass, nothing )
290+ if dvarclass != = nothing && a in keys (dvarclass)
291+ error (" Cannot create a $(singular (newvarclass)) `$(a) ` because there is already a $(singular (varclass)) with that name" )
292+ end
293+ end
294+ end
295+
285296function generate_var! (dict, a, varclass;
286297 indices:: Union{Vector{UnitRange{Int}}, Nothing} = nothing ,
287298 type = Real)
299+ check_name_uniqueness (dict, a, varclass)
288300 vd = get! (dict, varclass) do
289301 Dict {Symbol, Dict{Symbol, Any}} ()
290302 end
@@ -302,6 +314,7 @@ function generate_var!(dict, a, b, varclass, mod;
302314 iv
303315 end
304316 @assert isequal (iv, prev_iv) " Multiple independent variables are used in the model"
317+ check_name_uniqueness (dict, a, varclass)
305318 vd = get! (dict, varclass) do
306319 Dict {Symbol, Dict{Symbol, Any}} ()
307320 end
0 commit comments