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