/** * Creates a deep clone of this {@link ATupleTypeIR} 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 ATupleTypeIR} node */ public ATupleTypeIR clone(Map<INode,INode> oldToNewMap) { ATupleTypeIR node = new ATupleTypeIR( _sourceNode, _tag, _metaData, _optional, cloneNode(_namedInvType, oldToNewMap), cloneList(_types, oldToNewMap) ); oldToNewMap.put(this, node); return node; }
private ATupleTypeIR consTupleType(ATuplePatternIR pat) { ATupleTypeIR type = new ATupleTypeIR(); if(pat != null) { for(SPatternIR p : pat.getPatterns()) { type.getTypes().add(consType(p)); } } return type; }
/** * Returns a deep clone of this {@link ATupleTypeIR} node. * @return a deep clone of this {@link ATupleTypeIR} node */ public ATupleTypeIR clone() { return new ATupleTypeIR( _sourceNode, _tag, _metaData, _optional, cloneNode(_namedInvType), cloneList(_types) ); }
@Override public STypeIR caseAProductType(AProductType node, IRInfo question) throws AnalysisException { ATupleTypeIR tuple = new ATupleTypeIR(); LinkedList<PType> types = node.getTypes(); for (PType type : types) { STypeIR typeCg = type.apply(question.getTypeVisitor(), question); if (typeCg != null) { tuple.getTypes().add(typeCg); } else { return null; } } return tuple; }
ATupleTypeIR resTupleType = new ATupleTypeIR();