public ARecordTypeIR getRecType(final AStateDeclIR stateDecl) { ARecordTypeIR stateType = new ARecordTypeIR(); stateType.setName(getTypeName(stateDecl)); return stateType; }
private ARecordTypeIR consRecordType(ARecordPatternIR pat) { if(pat != null) { STypeIR patType = pat.getType(); if (patType instanceof ARecordTypeIR) { ARecordTypeIR recType = (ARecordTypeIR) patType; return recType.clone(); } else { ARecordTypeIR type = new ARecordTypeIR(); ATypeNameIR typeName = new ATypeNameIR(); typeName.setName(pat.getTypename()); typeName.setDefiningClass("?"); type.setName(typeName); log.warn("Could not determine defining class for record pattern " + pat); return type; } } else { return new ARecordTypeIR(); } }
/** * Returns a deep clone of this {@link ARecordTypeIR} node. * @return a deep clone of this {@link ARecordTypeIR} node */ public ARecordTypeIR clone() { return new ARecordTypeIR( _sourceNode, _tag, _metaData, _optional, cloneNode(_namedInvType), cloneNode(_name) ); }
/** * Called by the {@link ARecordTypeIR} node from {@link ARecordTypeIR#apply(IAnalysis)}. * @param node the calling {@link ARecordTypeIR} node */ public void caseARecordTypeIR(ARecordTypeIR node, Q question) throws AnalysisException { _visitedNodes.add(node); inARecordTypeIR(node, question); if(node.getNamedInvType() != null && !_visitedNodes.contains(node.getNamedInvType())) { node.getNamedInvType().apply(this, question); } if(node.getName() != null && !_visitedNodes.contains(node.getName())) { node.getName().apply(this, question); } outARecordTypeIR(node, question); }
node.getRecType().apply(this);
/** * Creates a new tree field only constructor {@code ARecordTypeIR TAG=record} 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 name_ the {@link ATypeNameIR} node for the {@code name} child of this {@link ARecordTypeIR} node */ public ARecordTypeIR(Boolean optional_, ANamedTypeDeclIR namedInvType_, ATypeNameIR name_) { super(null,null,null,optional_,namedInvType_); this.setName(name_); }
private SExpIR consRecFieldExp(AIdentifierVarExpIR patternVar, int i, STypeIR currentType, boolean cast) { ARecordTypeIR recordType = (ARecordTypeIR) patternVar.getType(); AFieldDeclIR recordField = transAssistant.getInfo().getAssistantManager().getDeclAssistant().getFieldDecl(transAssistant.getInfo().getClasses(), recordType, i); String fieldName = recordField.getName(); AFieldExpIR fieldExp = consRecFieldExp(patternVar, currentType, fieldName); if (cast) { ACastUnaryExpIR casted = new ACastUnaryExpIR(); casted.setType(recordType.clone()); casted.setExp(fieldExp.getObject()); fieldExp.setObject(casted); } return fieldExp; }
/** * Called by the {@link ARecordTypeIR} node from {@link ARecordTypeIR#apply(IAnalysis)}. * @param node the calling {@link ARecordTypeIR} node */ public void caseARecordTypeIR(ARecordTypeIR node) throws AnalysisException { _visitedNodes.add(node); inARecordTypeIR(node); if(node.getNamedInvType() != null && !_visitedNodes.contains(node.getNamedInvType())) { node.getNamedInvType().apply(this); } if(node.getName() != null && !_visitedNodes.contains(node.getName())) { node.getName().apply(this); } outARecordTypeIR(node); }
/** * Creates a deep clone of this {@link ARecordTypeIR} 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 ARecordTypeIR} node */ public ARecordTypeIR clone(Map<INode,INode> oldToNewMap) { ARecordTypeIR node = new ARecordTypeIR( _sourceNode, _tag, _metaData, _optional, cloneNode(_namedInvType, oldToNewMap), cloneNode(_name, oldToNewMap) ); oldToNewMap.put(this, node); return node; }
node.getRecType().apply(this, question);
/** * Creates a new complete constructor {@code ARecordTypeIR} 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 name_ the {@link ATypeNameIR} node for the {@code name} child of this {@link ARecordTypeIR} node */ public ARecordTypeIR(SourceNode sourceNode_, Object tag_, List<? extends ClonableString> metaData_, Boolean optional_, ANamedTypeDeclIR namedInvType_, ATypeNameIR name_) { super(sourceNode_,tag_,metaData_,optional_,namedInvType_); this.setName(name_); }
public ARecordTypeIR consRecType(String definingModule, String recName) { ATypeNameIR typeName = new ATypeNameIR(); typeName.setDefiningClass(definingModule); typeName.setName(recName); ARecordTypeIR recType = new ARecordTypeIR(); recType.setName(typeName); return recType; }
/** * Called by the {@link ARecordTypeIR} node from {@link ARecordTypeIR#apply(IIsaAnalysis)}. * @param node the calling {@link ARecordTypeIR} node */ public void caseARecordTypeIR(ARecordTypeIR node) throws AnalysisException { _visitedNodes.add(node); inARecordTypeIR(node); if(node.getNamedInvType() != null && !_visitedNodes.contains(node.getNamedInvType())) { node.getNamedInvType().apply(this); } if(node.getName() != null && !_visitedNodes.contains(node.getName())) { node.getName().apply(this); } outARecordTypeIR(node); }
public ABlockStmIR consVarFromCastedExp(ARecordDeclIR record, String formalParamName, String varName) throws AnalysisException { // Construct a local var in a statement: RecordType varName = ((RecordType) formalParamName); ARecordTypeIR recordType = new ARecordTypeIR(); recordType.setName(consTypeName(record)); AIdentifierPatternIR idPattern = new AIdentifierPatternIR(); idPattern.setName(varName); ACastUnaryExpIR cast = new ACastUnaryExpIR(); cast.setType(recordType.clone()); AIdentifierVarExpIR varExp = new AIdentifierVarExpIR(); varExp.setType(new AObjectTypeIR()); varExp.setName(formalParamName); varExp.setIsLocal(true); cast.setExp(varExp); AVarDeclIR localVar = info.getDeclAssistant().consLocalVarDecl(recordType, idPattern, cast); ABlockStmIR stm = new ABlockStmIR(); stm.getLocalDefs().add(localVar); return stm; }
node.getRecType().apply(this);
public ARecordTypeIR consRecordType(ARecordDeclIR record) { ADefaultClassDeclIR defClass = record.getAncestor(ADefaultClassDeclIR.class); ATypeNameIR typeName = new ATypeNameIR(); typeName.setDefiningClass(defClass.getName()); typeName.setName(record.getName()); ARecordTypeIR returnType = new ARecordTypeIR(); returnType.setName(typeName); return returnType; } }
public String formatName(INode node) throws AnalysisException { if (node instanceof ANewExpIR) { ANewExpIR newExp = (ANewExpIR) node; return formatTypeName(node, newExp.getName()); } else if (node instanceof ARecordTypeIR) { ARecordTypeIR record = (ARecordTypeIR) node; ATypeNameIR typeName = record.getName(); return formatTypeName(node, typeName); } throw new AnalysisException("Unexpected node in formatName: " + node.getClass().getName()); }