diff --git a/OMCompiler/Compiler/NFFrontEnd/NFFlatten.mo b/OMCompiler/Compiler/NFFrontEnd/NFFlatten.mo index 5486e61a8e2..9b369e5a8fb 100644 --- a/OMCompiler/Compiler/NFFrontEnd/NFFlatten.mo +++ b/OMCompiler/Compiler/NFFrontEnd/NFFlatten.mo @@ -1021,7 +1021,7 @@ algorithm exp :: list(Dimension.sizeExp(d) for d in dims), Binding.variability(binding), Purity.PURE, binding_ty); else - iters := list((Subscript.toIterator(s), Dimension.toRange(d)) threaded for s in subs, d in dims); + iters := listReverse((Subscript.toIterator(s), Dimension.toRange(d)) threaded for s in subs, d in dims); array_call := Call.TYPED_ARRAY_CONSTRUCTOR(binding_ty, Expression.variability(exp), Expression.purity(exp), exp, iters); diff --git a/testsuite/flattening/modelica/scodeinst/Makefile b/testsuite/flattening/modelica/scodeinst/Makefile index 3573d8f2437..621b896b97c 100644 --- a/testsuite/flattening/modelica/scodeinst/Makefile +++ b/testsuite/flattening/modelica/scodeinst/Makefile @@ -1111,6 +1111,7 @@ usertype3.mo \ usertype4.mo \ usertype5.mo \ usertype6.mo \ +VectorizeBindings1.mo \ VectorTest.mo \ Visibility1.mo \ Visibility2.mo \ diff --git a/testsuite/flattening/modelica/scodeinst/VectorizeBindings1.mo b/testsuite/flattening/modelica/scodeinst/VectorizeBindings1.mo new file mode 100644 index 00000000000..1d7db6c503e --- /dev/null +++ b/testsuite/flattening/modelica/scodeinst/VectorizeBindings1.mo @@ -0,0 +1,23 @@ +// name: VectorizeBindings1 +// keywords: +// status: correct +// cflags: -d=newInst,-nfScalarize,vectorizeBindings +// + +model M + parameter Real p = 1; + parameter Real q = 2; +end M; + +model VectorizeBindings1 + parameter Real p = 2; + M m[2,3](each p = 2*p); +end VectorizeBindings1; + +// Result: +// class VectorizeBindings1 +// parameter Real p = 2.0; +// parameter Real[2, 3] m.q = fill(2.0, 2, 3); +// parameter Real[2, 3] m.p = array(array(2.0 * p for $m2 in 1:3) for $m1 in 1:2); +// end VectorizeBindings1; +// endResult