public ARecordTypeIR getRecType(final AStateDeclIR stateDecl) { ARecordTypeIR stateType = new ARecordTypeIR(); stateType.setName(getTypeName(stateDecl)); return stateType; }
/** * 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) ); }
/** * 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; }
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; }
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(); } }
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; } }
@Override public STypeIR caseARecordInvariantType(ARecordInvariantType node, IRInfo question) throws AnalysisException { ILexNameToken name = node.getName(); ARecordTypeIR recordType = new ARecordTypeIR(); ATypeNameIR typeName = new ATypeNameIR(); typeName.setName(name.getName()); typeName.setDefiningClass(name.getModule()); recordType.setName(typeName); return recordType; }
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; }
typeName.setDefiningClass(clazz.getName()); ARecordTypeIR stateType = new ARecordTypeIR(); stateType.setName(typeName);
public AIsOfClassExpIR consInstanceOf(ARecordDeclIR record, String formalParamName) { // Example: objRef instanceof classType ADefaultClassDeclIR enclosingClass = record.getAncestor(ADefaultClassDeclIR.class); ATypeNameIR typeName = new ATypeNameIR(); typeName.setDefiningClass(enclosingClass.getName()); typeName.setName(record.getName()); ARecordTypeIR recordType = new ARecordTypeIR(); recordType.setName(typeName); AIdentifierVarExpIR objRef = new AIdentifierVarExpIR(); objRef.setType(new AObjectTypeIR()); objRef.setIsLocal(true); objRef.setName(formalParamName); AIsOfClassExpIR instanceOfExp = new AIsOfClassExpIR(); instanceOfExp.setType(new ABoolBasicTypeIR()); instanceOfExp.setExp(objRef); instanceOfExp.setCheckedType(recordType); return instanceOfExp; }
typeName.setName(record.getName()); ARecordTypeIR returnType = new ARecordTypeIR(); returnType.setName(typeName);
public AEqualsBinaryExpIR consFieldComparison(ARecordDeclIR record, AFieldDeclIR field, String formalParamName) throws AnalysisException { // Example: fieldName == formalParamName.fieldName AEqualsBinaryExpIR fieldComparison = new AEqualsBinaryExpIR(); fieldComparison.setType(new ABoolBasicTypeIR()); AIdentifierVarExpIR instanceField = new AIdentifierVarExpIR(); instanceField.setType(field.getType().clone()); instanceField.setIsLocal(false); instanceField.setName(field.getName()); AFieldExpIR formalParamField = new AFieldExpIR(); formalParamField.setType(field.getType().clone()); AIdentifierVarExpIR formalParam = new AIdentifierVarExpIR(); ARecordTypeIR recordType = new ARecordTypeIR(); recordType.setName(consTypeName(record)); formalParam.setType(recordType); formalParam.setIsLocal(true); formalParam.setName(formalParamName); formalParamField.setObject(formalParam); formalParamField.setMemberName(field.getName()); fieldComparison.setLeft(instanceField); fieldComparison.setRight(formalParamField); return fieldComparison; }