@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; }
fieldExp.setSourceNode(node.getSourceNode()); fieldExp.setTag(node.getTag()); fieldExp.setType(node.getType().clone());