diff --git a/main/src/main/scala/sbt/internal/Act.scala b/main/src/main/scala/sbt/internal/Act.scala index f4ad46e2e..f3da90b61 100644 --- a/main/src/main/scala/sbt/internal/Act.scala +++ b/main/src/main/scala/sbt/internal/Act.scala @@ -78,11 +78,16 @@ object Act { selectFromValid(ss filter isValid(data), default) } def selectFromValid(ss: Seq[ParsedKey], default: Parser[ParsedKey])(implicit show: Show[ScopedKey[_]]): Parser[ParsedKey] = - selectByTask(selectByConfig(ss)) match { - case Seq() => default - case Seq(single) => success(single) - case multi => failure("Ambiguous keys: " + showAmbiguous(keys(multi))) + selectByTask(selectByConfig(ss)) partition isBuildKey match { + case (_, Seq(single)) => success(single) + case (Seq(single), Seq()) => success(single) + case (Seq(), Seq()) => default + case (buildKeys, projectKeys) => failure("Ambiguous keys: " + showAmbiguous(keys(buildKeys ++ projectKeys))) } + private def isBuildKey(parsed: ParsedKey): Boolean = parsed.key.scope.project match { + case Select(_: BuildReference) => true + case _ => false + } private[this] def keys(ss: Seq[ParsedKey]): Seq[ScopedKey[_]] = ss.map(_.key) def selectByConfig(ss: Seq[ParsedKey]): Seq[ParsedKey] = ss match {