/** * Creates a new complete constructor {@code ASetMultipleBindIR} node with the given nodes as children. * @deprecated This method should not be used, use AstFactory instead. * The basic child nodes are removed from their previous parents. * @param set_ the {@link SExpIR} node for the {@code set} child of this {@link ASetMultipleBindIR} node */ public ASetMultipleBindIR(SourceNode sourceNode_, Object tag_, List<? extends ClonableString> metaData_, List<? extends SPatternIR> patterns_, SExpIR set_) { super(sourceNode_,tag_,metaData_,patterns_); this.setSet(set_); }
/** * Creates a new tree field only constructor {@code ASetMultipleBindIR TAG=set} node with the given nodes as children. * @deprecated This method should not be used, use AstFactory instead. * The basic child nodes are removed from their previous parents. * @param set_ the {@link SExpIR} node for the {@code set} child of this {@link ASetMultipleBindIR} node */ public ASetMultipleBindIR(List<? extends SPatternIR> patterns_, SExpIR set_) { super(null,null,null,patterns_); this.setSet(set_); }
public void cleanUpBinding(SMultipleBindIR binding) { if (binding instanceof ASetMultipleBindIR) { ASetMultipleBindIR sb = (ASetMultipleBindIR) binding; sb.setSet(null); sb.getPatterns().clear(); } else if (binding instanceof ASeqMultipleBindIR) { ASeqMultipleBindIR sb = (ASeqMultipleBindIR) binding; sb.setSeq(null); sb.getPatterns().clear(); } else { log.error("Expected multiple set bind or multiple sequence bind. Got: " + binding); } }
@Override public SMultipleBindIR caseASetMultipleBind(ASetMultipleBind node, IRInfo question) throws AnalysisException { List<PPattern> patterns = node.getPlist(); PExp set = node.getSet(); LinkedList<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; } } SExpIR setCg = set.apply(question.getExpVisitor(), question); ASetMultipleBindIR multipleSetBind = new ASetMultipleBindIR(); multipleSetBind.setPatterns(patternsCg); multipleSetBind.setSet(setCg); return multipleSetBind; }
multipleSetBind.setSet(setBind.getSet());