/** * Creates a deep clone of this {@link AUnionTypeIR} 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 AUnionTypeIR} node */ public AUnionTypeIR clone(Map<INode,INode> oldToNewMap) { AUnionTypeIR node = new AUnionTypeIR( _sourceNode, _tag, _metaData, _optional, cloneNode(_namedInvType, oldToNewMap), cloneList(_types, oldToNewMap) ); oldToNewMap.put(this, node); return node; }
/** * Returns a deep clone of this {@link AUnionTypeIR} node. * @return a deep clone of this {@link AUnionTypeIR} node */ public AUnionTypeIR clone() { return new AUnionTypeIR( _sourceNode, _tag, _metaData, _optional, cloneNode(_namedInvType), cloneList(_types) ); }
AUnionTypeIR fieldType = new AUnionTypeIR();
public SSetTypeIR getSetType(AUnionTypeIR unionType) { AUnionTypeIR setOf = new AUnionTypeIR(); setOf.setTypes(findElementTypes(unionType, new CollectionTypeStrategy() { @Override public boolean isCollectionType(STypeIR type) { return type instanceof SSetTypeIR; } @Override public STypeIR getElementType(STypeIR type) { return ((SSetTypeIR) type).getSetOf(); } })); ASetSetTypeIR setType = new ASetSetTypeIR(); setType.setEmpty(false); setType.setSetOf(setOf); return setType; }
public SSeqTypeIR getSeqType(AUnionTypeIR unionType) { AUnionTypeIR seqOf = new AUnionTypeIR(); seqOf.setTypes(findElementTypes(unionType, new CollectionTypeStrategy() { @Override public boolean isCollectionType(STypeIR type) { return type instanceof SSeqTypeIR; } @Override public STypeIR getElementType(STypeIR type) { return ((SSeqTypeIR) type).getSeqOf(); } })); ASeqSeqTypeIR seqType = new ASeqSeqTypeIR(); seqType.setEmpty(false); seqType.setSeqOf(seqOf); return seqType; }
} else AUnionTypeIR unionTypes = new AUnionTypeIR(); unionTypes.setTypes(fieldTypes);
} else AUnionTypeIR unionTypeCg = new AUnionTypeIR();