/** * Creates a deep clone of this {@link AApplyObjectDesignatorIR} node while putting all * old node-new node relations in the map {@code oldToNewMap}. * @param oldToNewMap the map filled with the old node-new node relation * @return a deep clone of this {@link AApplyObjectDesignatorIR} node */ public AApplyObjectDesignatorIR clone(Map<INode,INode> oldToNewMap) { AApplyObjectDesignatorIR node = new AApplyObjectDesignatorIR( _sourceNode, _tag, _metaData, cloneNode(_object, oldToNewMap), cloneList(_args, oldToNewMap) ); oldToNewMap.put(this, node); return node; }
/** * Returns a deep clone of this {@link AApplyObjectDesignatorIR} node. * @return a deep clone of this {@link AApplyObjectDesignatorIR} node */ public AApplyObjectDesignatorIR clone() { return new AApplyObjectDesignatorIR( _sourceNode, _tag, _metaData, cloneNode(_object), cloneList(_args) ); }
@Override public SObjectDesignatorIR caseAApplyObjectDesignator( AApplyObjectDesignator node, IRInfo question) throws AnalysisException { PObjectDesignator obj = node.getObject(); SObjectDesignatorIR objCg = obj.apply(question.getObjectDesignatorVisitor(), question); AApplyObjectDesignatorIR applyObjDesignator = new AApplyObjectDesignatorIR(); applyObjDesignator.setObject(objCg); LinkedList<SExpIR> newExpArgs = applyObjDesignator.getArgs(); for (PExp arg : node.getArgs()) { SExpIR argCg = arg.apply(question.getExpVisitor(), question); if (argCg != null) { newExpArgs.add(argCg); } else { return null; } } return applyObjDesignator; }