Changeset 8481cc5 in OpenModelica
- Timestamp:
- 2019-01-14T15:13:35+01:00 (5 years ago)
- Branches:
- Added-citation-metadata, maintenance/v1.14, maintenance/v1.15, maintenance/v1.16, maintenance/v1.17, maintenance/v1.18, maintenance/v1.19, maintenance/v1.20, maintenance/v1.21, maintenance/v1.22, maintenance/v1.23, master, omlib-staging
- Children:
- d681d71
- Parents:
- 3c1d34e
- git-author:
- Per Östlund <per.ostlund@…> (01/14/19 15:13:35)
- git-committer:
- hudson <openmodelica@…> (01/14/19 15:13:35)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Compiler/NFFrontEnd/NFCeval.mo
rc8cc40e r8481cc5 2708 2708 e := evalExpPartial(exp); 2709 2709 (e, ranges, iters) := createIterationRanges(e, iterators); 2710 result := evalArrayConstructor2(e, ty,ranges, iters);2710 result := evalArrayConstructor2(e, ranges, iters); 2711 2711 end evalArrayConstructor; 2712 2712 … … 2732 2732 function evalArrayConstructor2 2733 2733 input Expression exp; 2734 input Type ty;2735 2734 input list<Expression> ranges; 2736 2735 input list<Mutable<Expression>> iterators; 2737 2736 output Expression result; 2738 2737 protected 2739 Expression range ;2738 Expression range, e; 2740 2739 list<Expression> ranges_rest, expl = {}; 2741 2740 Mutable<Expression> iter; … … 2743 2742 ExpressionIterator range_iter; 2744 2743 Expression value; 2745 Type el_ty;2744 Type ty; 2746 2745 algorithm 2747 2746 if listEmpty(ranges) then … … 2751 2750 iter :: iters_rest := iterators; 2752 2751 range_iter := ExpressionIterator.fromExp(range); 2753 el_ty := Type.unliftArray(ty);2754 2752 2755 2753 while ExpressionIterator.hasNext(range_iter) loop 2756 2754 (range_iter, value) := ExpressionIterator.next(range_iter); 2757 2755 Mutable.update(iter, value); 2758 expl := evalArrayConstructor2(exp, el_ty,ranges_rest, iters_rest) :: expl;2756 expl := evalArrayConstructor2(exp, ranges_rest, iters_rest) :: expl; 2759 2757 end while; 2760 2758 2759 if listEmpty(expl) then 2760 ty := Type.unliftArray(Expression.typeOf(exp)); 2761 else 2762 ty := Expression.typeOf(listHead(expl)); 2763 end if; 2764 2765 ty := Type.liftArrayLeft(ty, Dimension.fromInteger(listLength(expl))); 2761 2766 result := Expression.makeArray(ty, listReverseInPlace(expl), literal = true); 2762 2767 end if;
Note: See TracChangeset
for help on using the changeset viewer.