/** * Creates a new tree field only constructor {@code AFieldExpIR TAG=field} 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 object_ the {@link SExpIR} node for the {@code object} child of this {@link AFieldExpIR} node * @param memberName_ the {@link String} node for the {@code memberName} child of this {@link AFieldExpIR} node */ public AFieldExpIR(STypeIR type_, SExpIR object_, String memberName_) { super(null,null,null,type_); this.setObject(object_); this.setMemberName(memberName_); }
private void setSubject(SExpIR fieldExp, ACastUnaryExpIR castedFieldExp) { if (fieldExp instanceof AFieldExpIR) { ((AFieldExpIR) fieldExp).setObject(castedFieldExp); } else if (fieldExp instanceof AFieldNumberExpIR) { ((AFieldNumberExpIR) fieldExp).setTuple(castedFieldExp); } }
/** * Creates a new complete constructor {@code AFieldExpIR} 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 object_ the {@link SExpIR} node for the {@code object} child of this {@link AFieldExpIR} node * @param memberName_ the {@link String} node for the {@code memberName} child of this {@link AFieldExpIR} node */ public AFieldExpIR(SourceNode sourceNode_, Object tag_, List<? extends ClonableString> metaData_, STypeIR type_, SExpIR object_, String memberName_) { super(sourceNode_,tag_,metaData_,type_); this.setObject(object_); this.setMemberName(memberName_); }
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; }
private void setFieldNames(AFieldExpIR field, AStateDeclIR stateDecl, String name) { ARecordTypeIR recType = transAssistant.getRecType(stateDecl); String stateName = stateDecl.getName(); if (info.getExpAssistant().isOld(name)) { field.setObject(transAssistant.getInfo().getExpAssistant().consIdVar("_" + stateName, recType)); field.setMemberName(info.getExpAssistant().oldNameToCurrentName(name)); } else { field.setObject(transAssistant.getInfo().getExpAssistant().consIdVar(stateName, recType)); field.setMemberName(name); } } }
@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; }
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; }
@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; }
field.setObject(recVar.clone()); field.setMemberName(name);
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; }
field.setObject(cast);
field.setType(getInfo().getTypeAssistant().getMethodType(getInfo(), fieldModule, name, args)); field.setMemberName(name); field.setObject(cast);