From 5ef14bd5e8a7eeeb86812b0477ef1b8108511663 Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Tue, 26 Jan 2010 22:53:29 -0500 Subject: [PATCH] more on permgen issues --- src/main/scala/sbt/Main.scala | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/scala/sbt/Main.scala b/src/main/scala/sbt/Main.scala index 8c2375b0f..c3d9b9e6d 100755 --- a/src/main/scala/sbt/Main.scala +++ b/src/main/scala/sbt/Main.scala @@ -29,8 +29,13 @@ class xMain extends xsbti.AppMain { def run0(remainingArguments: List[String], buildScalaVersion: Option[String]): xsbti.MainResult = { - try { run(configuration, remainingArguments, buildScalaVersion) } - catch { case re: ReloadException => run0(re.remainingArguments, re.buildScalaVersion) } + // done this way because in Scala 2.7.7, tail recursion in catch blocks is not optimized + val result = try { Right(run(configuration, remainingArguments, buildScalaVersion)) } catch { case re: ReloadException => Left(re) } + result match + { + case Left(re) => run0(re.remainingArguments, re.buildScalaVersion) + case Right(r) => r + } } run0(configuration.arguments.map(_.trim).toList, None) }