/** * Creates a deep clone of this {@link ATypeMultipleBindIR} 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 ATypeMultipleBindIR} node */ public ATypeMultipleBindIR clone(Map<INode,INode> oldToNewMap) { ATypeMultipleBindIR node = new ATypeMultipleBindIR( _sourceNode, _tag, _metaData, cloneList(_patterns, oldToNewMap), cloneNode(_type, oldToNewMap) ); oldToNewMap.put(this, node); return node; }
/** * Returns a deep clone of this {@link ATypeMultipleBindIR} node. * @return a deep clone of this {@link ATypeMultipleBindIR} node */ public ATypeMultipleBindIR clone() { return new ATypeMultipleBindIR( _sourceNode, _tag, _metaData, cloneList(_patterns), cloneNode(_type) ); }
@Override public SMultipleBindIR caseATypeMultipleBind(ATypeMultipleBind node, IRInfo question) throws AnalysisException { List<PPattern> patterns = node.getPlist(); PType boundType = node.getType(); List<SPatternIR> patternsCg = new LinkedList<SPatternIR>(); for (PPattern pattern : patterns) { SPatternIR patternTempCg = pattern.apply(question.getPatternVisitor(), question); if (patternTempCg != null) { patternsCg.add(patternTempCg); } else { return null; } } STypeIR boundTypeCg = boundType.apply(question.getTypeVisitor(), question); ATypeMultipleBindIR multipleSetBind = new ATypeMultipleBindIR(); multipleSetBind.setPatterns(patternsCg); multipleSetBind.setType(boundTypeCg); return multipleSetBind; }
ATypeMultipleBindIR multipleTypeBind = new ATypeMultipleBindIR();