/** * Creates a deep clone of this {@link ASeqSeqTypeIR} 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 ASeqSeqTypeIR} node */ public ASeqSeqTypeIR clone(Map<INode,INode> oldToNewMap) { ASeqSeqTypeIR node = new ASeqSeqTypeIR( _sourceNode, _tag, _metaData, _optional, cloneNode(_namedInvType, oldToNewMap), _empty, _seq1, cloneNode(_seqOf, oldToNewMap) ); oldToNewMap.put(this, node); return node; }
/** * Returns a deep clone of this {@link ASeqSeqTypeIR} node. * @return a deep clone of this {@link ASeqSeqTypeIR} node */ public ASeqSeqTypeIR clone() { return new ASeqSeqTypeIR( _sourceNode, _tag, _metaData, _optional, cloneNode(_namedInvType), _empty, _seq1, cloneNode(_seqOf) ); }
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; }
@Override public void caseAForAllStmIR(AForAllStmIR node) throws AnalysisException { if (node.getExp().getType() instanceof AStringTypeIR) { ASeqSeqTypeIR seqType = new ASeqSeqTypeIR(); seqType.setEmpty(false); seqType.setSeq1(false); seqType.setOptional(false); seqType.setSeqOf(new ACharBasicTypeIR()); correctExpToSeq(node.getExp(), seqType); } node.getBody().apply(this); }
public STypeIR constructSeqType(SSeqTypeBase node, IRInfo question) throws AnalysisException { STypeIR seqOfCg = node.getSeqof().apply(question.getTypeVisitor(), question); boolean emptyCg = node.getEmpty(); boolean isSeq1 = node instanceof ASeq1SeqType; // This is a special case since sequence of characters are strings if (seqOfCg instanceof ACharBasicTypeIR && question.getSettings().getCharSeqAsString()) { AStringTypeIR stringTypeCg = new AStringTypeIR(); stringTypeCg.setSourceNode(new SourceNode(node)); return stringTypeCg; } ASeqSeqTypeIR seqType = new ASeqSeqTypeIR(); seqType.setSeqOf(seqOfCg); seqType.setEmpty(emptyCg); seqType.setSeq1(isSeq1); return seqType; }
} else ASeqSeqTypeIR seqType = new ASeqSeqTypeIR(); seqType.setEmpty(false); seqType.setSeqOf(new ACharBasicTypeIR());
} else ASeqSeqTypeIR seqTypeCg = new ASeqSeqTypeIR(); seqTypeCg.setEmpty(false); seqTypeCg.setSeqOf(new ACharBasicTypeIR());
} else ASeqSeqTypeIR seqType = new ASeqSeqTypeIR(); seqType.setEmpty(false); seqType.setSeqOf(new ACharBasicTypeIR());