private static void initUnionType(AUnionType result) { result.setSetDone(false); result.setSeqDone(false); result.setMapDone(false); result.setRecDone(false); result.setNumDone(false); result.setFuncDone(false); result.setOpDone(false); result.setClassDone(false); result.setProdCard(-1); result.setExpanded(false); }
/** * Creates a new tree field only constructor {@code AUnionType TAG=union} 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 infinite_ the {@link Boolean} node for the {@code infinite} child of this {@link AUnionType} node * @param expanded_ the {@link Boolean} node for the {@code expanded} child of this {@link AUnionType} node */ public AUnionType(ILexLocation location_, Boolean resolved_, Boolean infinite_, Boolean expanded_) { super(location_,resolved_,null); this.setInfinite(infinite_); this.setExpanded(expanded_); this.setSeqDone(false); this.setSetDone(false); this.setMapDone(false); this.setProdCard(0); this.setFuncDone(false); this.setOpDone(false); this.setNumDone(false); this.setRecDone(false); this.setClassDone(false); }
@Override public SSeqType caseAUnionType(AUnionType type) throws AnalysisException { // return AUnionTypeAssistantTC.getSeq(type); if (!type.getSeqDone()) { type.setSeqDone(true); // Mark early to avoid recursion. // type.setSeqType(PTypeAssistantTC.getSeq(AstFactory.newAUnknownType(type.getLocation()))); type.setSeqType(af.createPTypeAssistant().getSeq(AstFactory.newAUnknownType(type.getLocation()))); PTypeSet set = new PTypeSet(af); for (PType t : type.getTypes()) { if (af.createPTypeAssistant().isSeq(t)) { set.add(t.apply(THIS).getSeqof()); } } type.setSeqType(set.isEmpty() ? null : AstFactory.newASeqSeqType(type.getLocation(), set.getType(type.getLocation()))); } return type.getSeqType(); }
this.setInfinite(infinite_); this.setExpanded(expanded_); this.setSeqDone(seqDone_); this.setSeqType(seqType_); this.setSetDone(setDone_);