/** * Returns a deep clone of this {@link AFieldExpIR} node. * @return a deep clone of this {@link AFieldExpIR} node */ public AFieldExpIR clone() { return new AFieldExpIR( _sourceNode, _tag, _metaData, cloneNode(_type), cloneNode(_object), _memberName ); }
/** * Creates a deep clone of this {@link AFieldExpIR} 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 AFieldExpIR} node */ public AFieldExpIR clone(Map<INode,INode> oldToNewMap) { AFieldExpIR node = new AFieldExpIR( _sourceNode, _tag, _metaData, cloneNode(_type, oldToNewMap), cloneNode(_object, oldToNewMap), _memberName ); oldToNewMap.put(this, node); return node; }
private AFieldExpIR consRecFieldExp(AIdentifierVarExpIR patternVar, STypeIR currentType, String fieldName) { AFieldExpIR fieldExp = new AFieldExpIR(); fieldExp.setType(currentType.clone()); fieldExp.setObject(patternVar.clone()); fieldExp.setMemberName(fieldName); return fieldExp; }
@Override public SExpIR caseAIdentifierVarExpIR(AIdentifierVarExpIR node) throws AnalysisException { if (node instanceof SVarExpIR) { SVarExpIR varExp = (SVarExpIR) node; if (BooleanUtils.isFalse(varExp.getIsLocal())) { ACastUnaryExpIR objId = consObjId(); AFieldExpIR fieldObj = new AFieldExpIR(); fieldObj.setType(node.getType().clone()); fieldObj.setMemberName(varExp.getName()); fieldObj.setObject(objId); assist.replaceNodeWith(node, fieldObj); return objId; } return node; } log.error("Expected variable expression at this point. Got: " + node); return null; }
@Override public SExpIR caseAFieldStateDesignatorIR(AFieldStateDesignatorIR node) throws AnalysisException { SExpIR objExp = node.getObject().apply(this); AFieldExpIR fieldExp = new AFieldExpIR(); fieldExp.setMemberName(node.getField()); fieldExp.setObject(objExp); fieldExp.setType(node.getType().clone()); fieldExp.setTag(node.getTag()); fieldExp.setSourceNode(node.getSourceNode()); return fieldExp; }
@Override public SExpIR caseAFieldObjectDesignatorIR(AFieldObjectDesignatorIR node) throws AnalysisException { String fieldName = node.getFieldName(); String fieldModule = node.getFieldModule(); SObjectDesignatorIR obj = node.getObject(); SourceNode sourceNode = node.getSourceNode(); INode parent = node.parent(); STypeIR fieldExpType = null; try { fieldExpType = info.getTypeAssistant().getFieldExpType(info, fieldName, fieldModule, obj, parent); } catch (org.overture.ast.analysis.AnalysisException e) { log.error("Could not find field expression type of " + node); fieldExpType = new AUnknownTypeIR(); } SExpIR objExp = obj.apply(this); AFieldExpIR fieldExp = new AFieldExpIR(); fieldExp.setMemberName(fieldName); fieldExp.setType(fieldExpType); fieldExp.setObject(objExp); fieldExp.setSourceNode(sourceNode); return fieldExp; }
public SExpIR consInstanceCall(STypeIR instanceType, String instanceName, STypeIR returnType, String memberName, SExpIR... args) { AIdentifierVarExpIR instance = new AIdentifierVarExpIR(); instance.setType(instanceType.clone()); instance.setName(instanceName); instance.setIsLocal(true); AFieldExpIR fieldExp = new AFieldExpIR(); fieldExp.setMemberName(memberName); fieldExp.setObject(instance); AMethodTypeIR methodType = new AMethodTypeIR(); methodType.setResult(returnType.clone()); AApplyExpIR instanceCall = new AApplyExpIR(); instanceCall.setType(returnType.clone()); if (args != null) { for (SExpIR arg : args) { methodType.getParams().add(arg.getType().clone()); instanceCall.getArgs().add(arg); } } fieldExp.setType(methodType.clone()); instanceCall.setRoot(fieldExp); return instanceCall; }
@Override public SExpIR caseAFieldExp(AFieldExp node, IRInfo question) throws AnalysisException { SExpIR object = node.getObject().apply(question.getExpVisitor(), question); STypeIR type = node.getType().apply(question.getTypeVisitor(), question); String memberName = ""; if (node.getMemberName() != null) { memberName = node.getMemberName().getFullName(); } else { memberName = node.getField().getName(); } AFieldExpIR fieldExp = new AFieldExpIR(); fieldExp.setObject(object); fieldExp.setMemberName(memberName); fieldExp.setType(type); return fieldExp; }
AFieldExpIR fieldExp = new AFieldExpIR(); fieldExp.setSourceNode(node.getSourceNode()); fieldExp.setTag(node.getTag());
AFieldExpIR field = new AFieldExpIR(); field.setType(fieldType); field.setObject(recVar.clone());
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; }
entering.setType(new AVoidTypeIR()); AFieldExpIR field = new AFieldExpIR(); field.setMemberName(methodIR.getName());
} else AFieldExpIR field = new AFieldExpIR(); String fieldModule = classType instanceof AClassTypeIR ? ((AClassTypeIR) classType).getName()