Skip to content

Commit 5c03ad3

Browse files
Merge pull request #2438 from ven-k/vkb/if-else-defaults
Fix updating default value metadata of conditional parameters
2 parents faef328 + c65f288 commit 5c03ad3

File tree

2 files changed

+19
-8
lines changed

2 files changed

+19
-8
lines changed

src/systems/model_parsing.jl

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,11 @@ function parse_variable_def!(dict, mod, arg, varclass, kwargs;
162162
Base.remove_linenums!(b)
163163
def, meta = parse_default(mod, b)
164164
var, def = parse_variable_def!(dict, mod, a, varclass, kwargs; def, type)
165-
dict[varclass][getname(var)][:default] = def
165+
if dict[varclass] isa Vector
166+
dict[varclass][1][getname(var)][:default] = def
167+
else
168+
dict[varclass][getname(var)][:default] = def
169+
end
166170
if meta !== nothing
167171
for (type, key) in metatypes
168172
if (mt = get(meta, key, nothing)) !== nothing
@@ -185,7 +189,6 @@ function parse_variable_def!(dict, mod, arg, varclass, kwargs;
185189
for (type, key) in metatypes
186190
if (mt = get(meta, key, nothing)) !== nothing
187191
key == VariableConnectType && (mt = nameof(mt))
188-
# @info dict 164
189192
if dict[varclass] isa Vector
190193
dict[varclass][1][getname(var)][type] = mt
191194
else

test/model_parsing.jl

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -393,11 +393,11 @@ end
393393
@parameters begin
394394
eq = flag == 1 ? 1 : 0
395395
if flag == 1
396-
if_parameter
396+
if_parameter = 100
397397
elseif flag == 2
398-
elseif_parameter
398+
elseif_parameter = 101
399399
else
400-
else_parameter
400+
else_parameter = 102
401401
end
402402
end
403403
@components begin
@@ -434,6 +434,10 @@ end
434434
@test getname.(parameters(elseif_in_sys)) == [:elseif_parameter, :eq]
435435
@test getname.(parameters(else_in_sys)) == [:else_parameter, :eq]
436436

437+
@test getdefault(if_in_sys.if_parameter) == 100
438+
@test getdefault(elseif_in_sys.elseif_parameter) == 101
439+
@test getdefault(else_in_sys.else_parameter) == 102
440+
437441
@test nameof.(get_systems(if_in_sys)) == [:if_sys, :default_sys]
438442
@test nameof.(get_systems(elseif_in_sys)) == [:elseif_sys, :default_sys]
439443
@test nameof.(get_systems(else_in_sys)) == [:else_sys, :default_sys]
@@ -479,7 +483,7 @@ end
479483

480484
if condition == 1
481485
@parameters begin
482-
if_parameter
486+
if_parameter = 100
483487
end
484488
@equations begin
485489
if_parameter ~ 0
@@ -489,7 +493,7 @@ end
489493
end
490494
elseif condition == 2
491495
@parameters begin
492-
elseif_parameter
496+
elseif_parameter = 101
493497
end
494498
@equations begin
495499
elseif_parameter ~ 0
@@ -499,7 +503,7 @@ end
499503
end
500504
else
501505
@parameters begin
502-
else_parameter
506+
else_parameter = 102
503507
end
504508
@equations begin
505509
else_parameter ~ 0
@@ -523,6 +527,10 @@ end
523527
@test getname.(parameters(elseif_out_sys)) == [:elseif_parameter, :default_parameter]
524528
@test getname.(parameters(else_out_sys)) == [:else_parameter, :default_parameter]
525529

530+
@test getdefault(if_out_sys.if_parameter) == 100
531+
@test getdefault(elseif_out_sys.elseif_parameter) == 101
532+
@test getdefault(else_out_sys.else_parameter) == 102
533+
526534
@test nameof.(get_systems(if_out_sys)) == [:if_sys, :default_sys]
527535
@test nameof.(get_systems(elseif_out_sys)) == [:elseif_sys, :default_sys]
528536
@test nameof.(get_systems(else_out_sys)) == [:else_sys, :default_sys]

0 commit comments

Comments
 (0)