@Override public SStmCG caseALetBeStStm(ALetBeStStm node, IRInfo question) throws AnalysisException { PMultipleBind multipleBind = node.getBind(); if (!(multipleBind instanceof ASetMultipleBind)) { question.addUnsupportedNode( node, "Generation of the let be st statement is only supported for a multiple set bind. Got: " + multipleBind); return null; } ASetMultipleBind multipleSetBind = (ASetMultipleBind) multipleBind; SMultipleBindCG multipleBindCg = multipleSetBind.apply(question.getMultipleBindVisitor(), question); if (!(multipleBindCg instanceof ASetMultipleBindCG)) { return null; } ASetMultipleBindCG multipleSetBindCg = (ASetMultipleBindCG) multipleBindCg; PExp suchThat = node.getSuchThat(); PStm stm = node.getStatement(); SExpCG suchThatCg = suchThat != null ? suchThat.apply(question.getExpVisitor(), question) : null; SStmCG stmCg = stm.apply(question.getStmVisitor(), question); ALetBeStStmCG letBeSt = new ALetBeStStmCG(); AHeaderLetBeStCG header = question.getExpAssistant().consHeader(multipleSetBindCg, suchThatCg); letBeSt.setHeader(header); letBeSt.setStatement(stmCg); return letBeSt; }
@Override public CmlProofObligationList caseASetMultipleBind( ASetMultipleBind node, IPOContextStack question) throws AnalysisException { return node.getSet().apply(this.expressionVisitor, question); }