private boolean isBridgeClass(ADefaultClassDeclIR node) { return delegateMap.containsKey(node.getName()); }
private String getFullDelegateName(ADefaultClassDeclIR node) { return delegateMap.get(node.getName()); }
private boolean followsSlTestConvention(ADefaultClassDeclIR copy) { return Settings.dialect == Dialect.VDM_SL && copy.getName().endsWith(TEST_MODULE_NAME_PREFIX); }
public ADefaultClassDeclIR findCopy(ADefaultClassDeclIR clazz) { for(SClassDeclIR c : classCopies) { if(c instanceof ADefaultClassDeclIR && c.getName().equals(clazz.getName())) { return (ADefaultClassDeclIR) c; } } return null; }
public String getSuperClassName(ASuperCallStmIR stm) { ADefaultClassDeclIR enclosingClass = stm.getAncestor(ADefaultClassDeclIR.class); return enclosingClass.getName(); }
public String getClassName(ANamedTraceDeclIR trace) { if (trace != null) { ADefaultClassDeclIR enclosingClass = trace.getAncestor(ADefaultClassDeclIR.class); if (enclosingClass != null) { return enclosingClass.getName(); } } log.error("Could not find class declaration enclosing the trace node " + trace); return null; }
private String consInvChecksOnName(ADefaultClassDeclIR owner) { StringBuilder prefix = new StringBuilder(); if (JavaCodeGenUtil.isValidJavaPackage(owner.getPackage())) { prefix.append(owner.getPackage()); prefix.append("."); } prefix.append(owner.getName()); prefix.append("."); prefix.append(JmlGenerator.INV_CHECKS_ON_GHOST_VAR_NAME); return prefix.toString(); }
@Override public void caseADefaultClassDeclIR(ADefaultClassDeclIR node) throws AnalysisException { if (isFullyAbstract(node.getName())) { result = interfaces.get(node.getName()); } else { // node remains a class result = node; List<ATokenNameIR> toMove = new LinkedList<>(); for (ATokenNameIR s : node.getSuperNames()) { if (isFullyAbstract(s.getName())) { toMove.add(s); } } for (ATokenNameIR m : toMove) { node.getSuperNames().remove(m); node.getInterfaces().add(interfaces.get(m.getName()).clone()); } } }
String consCheckExp = typeInfo.consCheckExp(encClass.getName(), javaPackage, var.getName(), nameGen);
@Override public void caseAPlainCallStmIR(APlainCallStmIR node) throws AnalysisException { STypeIR classType = node.getClassType(); String className = classType instanceof AClassTypeIR ? ((AClassTypeIR) classType).getName() : node.getAncestor(ADefaultClassDeclIR.class).getName(); handleCallStm(node, className); }
@Override public void caseADefaultClassDeclIR(ADefaultClassDeclIR node) throws AnalysisException { if (isBridgeClass(node)) { for (AMethodDeclIR m : node.getMethods()) { if (isDelegateCall(m.getBody())) { log.debug("Updating " + node.getName() + "." + m.getName() + " to use delegate method " + getFullDelegateName(node) + "." + m.getName()); assist.replaceNodeWith(m.getBody(), consDelegateCall(node.getName(), m)); } } } }
public ATypeNameIR consTypeName(ARecordDeclIR record) throws AnalysisException { ADefaultClassDeclIR classDef = record.getAncestor(ADefaultClassDeclIR.class); ATypeNameIR typeName = new ATypeNameIR(); if (classDef == null) { throw new AnalysisException("A Record declaration must always be defined inside a class"); } else { typeName.setDefiningClass(classDef.getName()); } typeName.setName(record.getName()); return typeName; }
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; } }
private void addAssertions(List<IRStatus<PIR>> newAst, TypePredDecorator assertTr) { for (IRStatus<ADefaultClassDeclIR> status : IRStatus.extract(newAst, ADefaultClassDeclIR.class)) { ADefaultClassDeclIR clazz = status.getIrNode(); if (!this.javaGen.getInfo().getDeclAssistant().isLibraryName(clazz.getName())) { try { this.javaGen.getIRGenerator().applyPartialTransformation(status, assertTr); } catch (org.overture.codegen.ir.analysis.AnalysisException e) { log.error("Unexpected problem occured when applying transformation"); e.printStackTrace(); } } } }
@Override public SExpIR caseASelfObjectDesignatorIR(ASelfObjectDesignatorIR node) throws AnalysisException { ADefaultClassDeclIR enclosingClass = node.getAncestor(ADefaultClassDeclIR.class); String className = enclosingClass.getName(); SourceNode sourceNode = node.getSourceNode(); AClassTypeIR classType = new AClassTypeIR(); classType.setName(className); ASelfExpIR self = new ASelfExpIR(); self.setType(classType); self.setSourceNode(sourceNode); return self; }
private void sortAnnotations(List<IRStatus<PIR>> newAst) { AnnotationSorter sorter = new AnnotationSorter(); for (IRStatus<ADefaultClassDeclIR> status : IRStatus.extract(newAst, ADefaultClassDeclIR.class)) { if (!javaGen.getInfo().getDeclAssistant().isLibraryName(status.getIrNode().getName())) { try { status.getIrNode().apply(sorter); } catch (org.overture.codegen.ir.analysis.AnalysisException e) { log.error("Could not sort JML annotations for node " + status.getIrNode()); e.printStackTrace(); } } } }
className = enclosingClass.getName(); } else
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.setDefiningClass(defClass.getName()); typeName.setName(record.getName());