public ANewExpIR consDefaultConsCall(AClassTypeIR classType) { ANewExpIR initAltNode = new ANewExpIR(); initAltNode.setType(classType.clone()); initAltNode.setName(consTypeNameForClass(classType.getName())); return initAltNode; }
protected ABlockStmIR consDecl(String classTypeName, String varName, SExpIR... args) { ATypeNameIR typeName = getTransAssist().consTypeNameForClass(classTypeName); AClassTypeIR classType = getTransAssist().consClassType(classTypeName); ANewExpIR newExp = new ANewExpIR(); newExp.setName(typeName); newExp.setType(classType); for (SExpIR arg : args) { newExp.getArgs().add(arg); } return getTransAssist().wrap(getTransAssist().consDecl(varName, classType.clone(), newExp)); }
private SExpIR getInitExp(AStateDeclIR stateDecl) { if (stateDecl.getInitExp() instanceof AEqualsBinaryExpIR) { AEqualsBinaryExpIR eqExp = (AEqualsBinaryExpIR) stateDecl.getInitExp(); return eqExp.getRight().clone(); } else { ANewExpIR defaultRecInit = new ANewExpIR(); defaultRecInit.setName(transAssistant.getTypeName(stateDecl)); defaultRecInit.setType(transAssistant.getRecType(stateDecl)); for (int i = 0; i < stateDecl.getFields().size(); i++) { defaultRecInit.getArgs().add(transAssistant.getInfo().getExpAssistant().consUndefinedExp()); } return defaultRecInit; } }
newExp.setType(recordTypeCg); newExp.setName(recordTypeCg.getName().clone());
public ACallObjectExpStmIR consAddTraceVarCall(AIdentifierVarExpIR subject, AIdentifierVarExpIR t) { ANewExpIR newVar = new ANewExpIR(); newVar.setName(getTransAssist().consTypeNameForClass(traceTrans.getTracePrefixes().traceVarClassName())); newVar.setType(getTransAssist().consClassType(traceTrans.getTracePrefixes().traceVarClassName())); newVar.getArgs().add(getInfo().getExpAssistant().consStringLiteral(t.getName(), false)); newVar.getArgs().add(getInfo().getExpAssistant().consStringLiteral("" + getTransAssist().getInfo().getTypeAssistant().getVdmType(t.getType()), false)); newVar.getArgs().add(traceTrans.getToStringBuilder().toStringOf(t.clone())); return getTransAssist().consInstanceCallStm(subject.getType(), subject.getName(), traceTrans.getTracePrefixes().addVarFirstMethodName(), newVar); }
@Override public SExpIR caseANewExp(ANewExp node, IRInfo question) throws AnalysisException { String className = node.getClassdef().getName().getName(); ATypeNameIR typeName = new ATypeNameIR(); typeName.setDefiningClass(null); typeName.setName(className); PType type = node.getType(); LinkedList<PExp> nodeArgs = node.getArgs(); ANewExpIR newExp = new ANewExpIR(); STypeIR typeCg = type.apply(question.getTypeVisitor(), question); newExp.setType(typeCg); newExp.setName(typeName); LinkedList<SExpIR> newExpArgs = newExp.getArgs(); for (PExp arg : nodeArgs) { SExpIR argCg = arg.apply(question.getExpVisitor(), question); if (argCg != null) { newExpArgs.add(argCg); } else { return null; } } return newExp; }
newExp.setType(returnType.clone()); newExp.setName(typeName.clone()); List<SExpIR> args = newExp.getArgs();
newQuote.setType(quoteClassType);