@Override public TraceNode caseARepeatTraceDefinition(ARepeatTraceDefinition term, Context ctxt) throws AnalysisException { TraceNode body = term.getCore().apply(af.getTraceExpander(),ctxt); //expand(term.getCore(), ctxt); if (term.getFrom() == 1 && term.getTo() == 1) { return body; } else { return new RepeatTraceNode(body, term.getFrom(), term.getTo()); } }
@Override public PType caseARepeatTraceDefinition(ARepeatTraceDefinition node, TypeCheckInfo question) throws AnalysisException { if (node.getFrom() > node.getTo()) { TypeCheckerErrors.report(3277, "Trace repeat illegal values", node.getLocation(), node); } // Environment local = question.env; return node.getCore().apply(THIS, question); }
@Override public STraceDeclIR caseARepeatTraceDefinition(ARepeatTraceDefinition node, IRInfo question) throws AnalysisException { PTraceCoreDefinition core = node.getCore(); Long from = node.getFrom(); Long to = node.getTo(); STraceCoreDeclIR coreCg = core.apply(question.getTraceCoreDeclVisitor(), question); ARepeatTraceDeclIR repeatTraceDecl = new ARepeatTraceDeclIR(); repeatTraceDecl.setCore(coreCg); repeatTraceDecl.setFrom(from); repeatTraceDecl.setTo(to); return repeatTraceDecl; }