From 8291f8f7d8434fe11874094107664f8455241189 Mon Sep 17 00:00:00 2001 From: "Emmanouil (Manos) Koukoutos" <emmanouil.koukoutos@epfl.ch> Date: Tue, 17 Feb 2015 12:24:56 +0100 Subject: [PATCH] Make Leon find scala lib in Eclipse --- .../frontends/scalac/ExtractionPhase.scala | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/main/scala/leon/frontends/scalac/ExtractionPhase.scala b/src/main/scala/leon/frontends/scalac/ExtractionPhase.scala index 970c82ca0..f4aa4fa63 100644 --- a/src/main/scala/leon/frontends/scalac/ExtractionPhase.scala +++ b/src/main/scala/leon/frontends/scalac/ExtractionPhase.scala @@ -9,6 +9,7 @@ import purescala.Common.FreshIdentifier import utils._ import scala.tools.nsc.{Settings=>NSCSettings,CompilerCommand} +import java.io.File object ExtractionPhase extends LeonPhase[List[String], Program] { @@ -22,15 +23,19 @@ object ExtractionPhase extends LeonPhase[List[String], Program] { val settings = new NSCSettings - val neededClasses = List[Class[_]]( - scala.Predef.getClass - ) - - val urls = neededClasses.map{ _.getProtectionDomain().getCodeSource().getLocation() } - - val classpath = urls.map(_.getPath).mkString(":") - - settings.classpath.value = classpath + val scalaLib = Option( + scala.Predef.getClass.getProtectionDomain.getCodeSource() + ) map { _.getLocation.getPath } getOrElse { + // We are in Eclipse. Look in Eclipse plugins to find scala lib + val eclipsePlugins = System.getenv("ECLIPSE_HOME") + "/plugins" + new File(eclipsePlugins).listFiles().map{ _.getAbsolutePath }.find{ _ contains "scala-library"}. + getOrElse(ctx.reporter.fatalError("No Scala library found. " + + "If you are working in Eclipse, make sure to set the ECLIPSE_HOME environment variable." + ) + ) + } + + settings.classpath.value = scalaLib settings.usejavacp.value = false settings.Yrangepos.value = true settings.skip.value = List("patmat") -- GitLab