Skip to content

Commit 8bc1fd9

Browse files
committed
fix: allow vector defaults in @mtkmodel
1 parent b0c4b2b commit 8bc1fd9

File tree

2 files changed

+38
-0
lines changed

2 files changed

+38
-0
lines changed

src/systems/model_parsing.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,9 @@ function parse_default(mod, a)
340340
(expr, nothing)
341341
end
342342
Expr(:if, condition, x, y) => (a, nothing)
343+
Expr(:vect, x...) => begin
344+
(a, nothing)
345+
end
343346
_ => error("Cannot parse default $a $(typeof(a))")
344347
end
345348
end

test/model_parsing.jl

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -817,3 +817,38 @@ end
817817
@test defs[ordermodel.c] == 2
818818
@test defs[ordermodel.d] == 1
819819
end
820+
821+
@testset "Vector defaults" begin
822+
@mtkmodel VectorDefaultWithMetadata begin
823+
@parameters begin
824+
n[1:3] = [1, 2, 3], [description = "Vector defaults"]
825+
end
826+
end
827+
828+
@named vec = VectorDefaultWithMetadata()
829+
for i in 1:3
830+
@test getdefault(vec.n[i]) == i
831+
end
832+
833+
@mtkmodel VectorConditionalDefault begin
834+
@structural_parameters begin
835+
flag = true
836+
end
837+
@parameters begin
838+
n[1:3] = if flag
839+
[2, 2, 2]
840+
else
841+
1
842+
end
843+
end
844+
end
845+
846+
@named vec_true = VectorConditionalDefault()
847+
for i in 1:3
848+
@test getdefault(vec_true.n[i]) == 2
849+
end
850+
@named vec_false = VectorConditionalDefault(flag = false)
851+
for i in 1:3
852+
@test getdefault(vec_false.n[i]) == 1
853+
end
854+
end

0 commit comments

Comments
 (0)