@@ -561,13 +561,11 @@ public
561561 case InstNode . COMPONENT_NODE ()
562562 algorithm
563563 // Set the component's parent and create a unique instance for it.
564- node := InstNode . setParent(instance, c);
565- comp := InstNode . component(node);
566- node := InstNode . replaceComponent(comp, node);
564+ node := InstNode . cloneComponent(c, instance);
567565
568566 // If the component is outer, link it with the corresponding
569567 // inner component.
570- if Component . isOuter(comp ) then
568+ if InstNode . isOuter(node ) then
571569 try
572570 node := linkInnerOuter(node, inst_scope);
573571 else
@@ -623,15 +621,7 @@ public
623621 case Class . PARTIAL_BUILTIN (elements = tree as FLAT_TREE (components = old_comps))
624622 algorithm
625623 instance := if InstNode . isEmpty(instance) then clsNode else instance;
626- old_comps := arrayCopy(old_comps);
627-
628- for i in 1 :arrayLength(old_comps) loop
629- node := old_comps[i];
630- node := InstNode . setParent(instance, node);
631- old_comps[i] := InstNode . replaceComponent(InstNode . component(node), node);
632- end for ;
633-
634- tree. components := old_comps;
624+ tree. components := Array . map(old_comps, function InstNode . cloneComponent(newParent = instance));
635625 cls. elements := tree;
636626 compCount := arrayLength(old_comps);
637627 then
0 commit comments