From c911543e084b239f3e770377b330270ca4b61198 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mika=C3=ABl=20Mayer?= <mikael.mayer@epfl.ch> Date: Tue, 12 Jan 2016 18:46:45 +0100 Subject: [PATCH] Added two collections of pretty-printer which can be used later to render some elements. --- src/main/scala/leon/synthesis/rules/StringRender.scala | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/scala/leon/synthesis/rules/StringRender.scala b/src/main/scala/leon/synthesis/rules/StringRender.scala index f03c54b56..5f9d85105 100644 --- a/src/main/scala/leon/synthesis/rules/StringRender.scala +++ b/src/main/scala/leon/synthesis/rules/StringRender.scala @@ -469,6 +469,16 @@ case object StringRender extends Rule("StringRender") { val examplesFinder = new ExamplesFinder(hctx.context, hctx.program) val examples = examplesFinder.extractFromProblem(p) + val stringConverters: Map[TypeTree, List[Expr => Expr]] = + hctx.program.definedFunctions.filter(fd => fd.returnType == StringType && fd.params.length == 1) + .groupBy({ fd => fd.paramIds.head.getType }).mapValues(fds => + fds.map((fd : FunDef) => ((x: Expr) => functionInvocation(fd, Seq(x))))) + val internalStringConverters: Map[TypeTree, List[Expr => Expr]] = + (p.as.flatMap { case x => x.getType match { + case FunctionType(Seq(aType), StringType) => List((aType, (arg: Expr) => application(Variable(x), Seq(arg)))) + case _ => Nil + }}).groupBy(_._1).mapValues(_.map(_._2)) + val ruleInstantiations = ListBuffer[RuleInstantiation]() ruleInstantiations += RuleInstantiation("String conversion") { val (expr, synthesisResult) = createFunDefsTemplates(StringSynthesisContext.empty, p.as.map(Variable)) -- GitLab