Skip to content

Commit 80b40a6

Browse files
committed
[NF] Improve Ceval.evalRecordElement.
- Handle binding records in Ceval.evalRecordElement.
1 parent c6029d1 commit 80b40a6

File tree

1 file changed

+16
-10
lines changed

1 file changed

+16
-10
lines changed

OMCompiler/Compiler/NFFrontEnd/NFCeval.mo

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3290,18 +3290,24 @@ algorithm
32903290
Expression.RECORD_ELEMENT(recordExp = e, index = index) := exp;
32913291
e := evalExp_impl(e, target);
32923292

3293-
result := match e
3294-
case Expression.RECORD()
3295-
then listGet(e.elements, index);
3293+
try
3294+
result := Expression.bindingExpMap(e, function evalRecordElement2(index = index));
3295+
else
3296+
Error.assertion(false, getInstanceName() + " could not evaluate " +
3297+
Expression.toString(exp), sourceInfo());
3298+
end try;
3299+
end evalRecordElement;
32963300

3297-
else
3298-
algorithm
3299-
Error.assertion(false, getInstanceName() + " could not evaluate " +
3300-
Expression.toString(exp), sourceInfo());
3301-
then
3302-
fail();
3301+
function evalRecordElement2
3302+
input Expression exp;
3303+
input Integer index;
3304+
output Expression result;
3305+
algorithm
3306+
result := match exp
3307+
case Expression.RECORD()
3308+
then listGet(exp.elements, index);
33033309
end match;
3304-
end evalRecordElement;
3310+
end evalRecordElement2;
33053311

33063312
protected
33073313

0 commit comments

Comments
 (0)