public STypeIR getFieldType(List<SClassDeclIR> classes, String moduleName, String fieldName) { SClassDeclIR classDecl = assistantManager.getDeclAssistant().findClass(classes, moduleName); return getFieldType(classDecl, fieldName, classes); }
private STypeIR getSentinelFieldType(SStmIR node) { ADefaultClassDeclIR enclosingClass = node.getAncestor(ADefaultClassDeclIR.class); STypeIR fieldType = null; if (enclosingClass != null) { fieldType = transAssistant.getInfo().getTypeAssistant().getFieldType(enclosingClass, concPrefixes.sentinelInstanceName(), transAssistant.getInfo().getClasses()); } else { log.error("Could not find enclosing class of assignment statement"); } return fieldType; }
private boolean memberExists(INode parent, TypeAssistantIR typeAssistant, String className, String memberName) throws AnalysisException { if (typeAssistant.getFieldType(transAssistant.getInfo().getClasses(), className, memberName) != null) { return true; } List<SExpIR> args = ((AApplyExpIR) parent).getArgs(); return typeAssistant.getMethodType(transAssistant.getInfo(), className, memberName, args) != null; }
private STypeIR getFieldType(IRInfo info, String fieldName, String fieldModule, SObjectDesignatorIR obj) { if (fieldModule != null) { // It is a class return info.getTypeAssistant().getFieldType(info.getClasses(), fieldModule, fieldName); } else { // It is a record try { ObjectDesignatorToExpIR converter = new ObjectDesignatorToExpIR(info); SExpIR objExp = obj.apply(converter); if (objExp.getType() instanceof ARecordTypeIR) { STypeIR fieldExpType = info.getTypeAssistant().getFieldType(info.getClasses(), (ARecordTypeIR) objExp.getType(), fieldName); if (fieldExpType == null) { log.error("Could not find field type"); } return fieldExpType; } } catch (org.overture.codegen.ir.analysis.AnalysisException e) { } } log.error("Could not determine field type"); return new AUnknownTypeIR(); }
fieldType = typeAssistant.getFieldType(transAssistant.getInfo().getClasses(), classType.getName(), memberName); } else if (currentType instanceof ARecordTypeIR) fieldType = transAssistant.getInfo().getTypeAssistant().getFieldType(transAssistant.getInfo().getClasses(), recordType, memberName); } else
public STypeIR getFieldExpType(IRInfo info, String fieldName, String fieldModule, SObjectDesignatorIR obj, INode parent) throws AnalysisException, org.overture.codegen.ir.analysis.AnalysisException { if (parent instanceof AApplyObjectDesignatorIR) { AApplyObjectDesignatorIR apply = (AApplyObjectDesignatorIR) parent; LinkedList<SExpIR> args = apply.getArgs(); if (fieldModule != null) { // It is a class SClassDeclIR clazz = info.getDeclAssistant().findClass(info.getClasses(), fieldModule); AFieldDeclIR field = info.getDeclAssistant().getFieldDecl(clazz, fieldModule); if (field != null) { return field.getType().clone(); } else { // It must be a method return info.getTypeAssistant().getMethodType(info, fieldModule, fieldName, args); } } } return getFieldType(info, fieldName, fieldModule, obj); }
fieldType = transAssistant.getInfo().getTypeAssistant().getFieldType(transAssistant.getInfo().getClasses(), node.getRecType(), name);