fixes #211. +/++ only clear scalaVersion/scalaHome in Global config+task.

This commit is contained in:
Mark Harrah 2011-10-01 14:39:40 -04:00
parent 2e38c8484b
commit 1fa855e2e7
3 changed files with 26 additions and 2 deletions

View File

@ -6,7 +6,7 @@ package sbt
import Keys._
import complete.{DefaultParsers, Parser}
import DefaultParsers._
import Project.Setting
import Project.{ScopedKey, Setting}
import Scope.GlobalScope
object Cross
@ -33,7 +33,10 @@ object Cross
Project.setProject(session, newStructure, command :: state)
}
def crossExclude(s: Setting[_]): Boolean =
s.key.key == scalaVersion.key || s.key.key == scalaHome.key
s.key match {
case ScopedKey( Scope(_, Global, Global, _), scalaHome.key | scalaVersion.key) => true
case _ => false
}
def crossParser(state: State): Parser[String] =
token(Cross <~ OptSpace) flatMap { _ => token(matched( state.combinedParser & spacedFirst(Cross) )) }

View File

@ -0,0 +1,18 @@
scalaVersion in ThisBuild := "2.7.7"
scalaVersion := "2.9.1"
scalaVersion in update <<= scalaVersion {
case "2.9.1" => "2.9.0-1"
case "2.8.2" => "2.8.1"
case x => x
}
InputKey[Unit]("check") <<= inputTask { argsT =>
(argsT, scalaVersion in ThisBuild, scalaVersion, scalaVersion in update) map { (args, svTB, svP, svU) =>
def check(label: String, i: Int, actual: String) = assert(args(i) == actual, "Expected " + label + "='" + args(i) + "' got '" + actual + "'")
check("scalaVersion in ThisBuild", 0, svTB)
check("scalaVersion", 1, svP)
check("scalaVersion in update", 2, svU)
}
}

View File

@ -0,0 +1,3 @@
> check 2.7.7 2.9.1 2.9.0-1
> ++ 2.8.2
> check 2.8.2 2.8.2 2.8.1