diff --git a/main-settings/src/main/scala/sbt/DelegateIndex.scala b/main-settings/src/main/scala/sbt/DelegateIndex.scala index ced77fc8f..a9354a167 100644 --- a/main-settings/src/main/scala/sbt/DelegateIndex.scala +++ b/main-settings/src/main/scala/sbt/DelegateIndex.scala @@ -8,6 +8,8 @@ package sbt +import ScopeAxis.{ Select, zero } + sealed trait DelegateIndex { def project(ref: ProjectRef): Seq[ScopeAxis[ResolvedReference]] def config(ref: ProjectRef, conf: ConfigKey): Seq[ScopeAxis[ConfigKey]] @@ -23,9 +25,9 @@ private final class DelegateIndex0(refs: Map[ProjectRef, ProjectDelegates]) exte case Some(pd) => pd.confs.get(conf) match { case Some(cs) => cs - case None => (Select(conf): ScopeAxis[ConfigKey]) :: (Zero: ScopeAxis[ConfigKey]) :: Nil + case None => Select(conf) :: zero[ConfigKey] :: Nil } - case None => (Select(conf): ScopeAxis[ConfigKey]) :: (Zero: ScopeAxis[ConfigKey]) :: Nil + case None => Select(conf) :: zero[ConfigKey] :: Nil } } private final class ProjectDelegates( diff --git a/main-settings/src/main/scala/sbt/Previous.scala b/main-settings/src/main/scala/sbt/Previous.scala index c1a5f8ccf..bfcb3685a 100644 --- a/main-settings/src/main/scala/sbt/Previous.scala +++ b/main-settings/src/main/scala/sbt/Previous.scala @@ -11,6 +11,7 @@ package sbt import sbt.Def.{ Initialize, ScopedKey } import sbt.Previous._ import sbt.Scope.Global +import sbt.ScopeAxis.Select import sbt.SlashSyntax0.given import sbt.internal.util._ import sbt.std.TaskExtra._ diff --git a/main-settings/src/main/scala/sbt/Project.scala b/main-settings/src/main/scala/sbt/Project.scala index cfca795f4..e7ea41616 100644 --- a/main-settings/src/main/scala/sbt/Project.scala +++ b/main-settings/src/main/scala/sbt/Project.scala @@ -11,6 +11,7 @@ import java.io.File import java.util.Locale import sbt.librarymanagement.Configuration import sbt.Def.{ Initialize, ScopedKey, Setting } +import sbt.ScopeAxis.Select import sbt.internal.util.Dag import sbt.internal.util.complete.Parser import sbt.internal.util.complete.DefaultParsers diff --git a/main-settings/src/main/scala/sbt/Reference.scala b/main-settings/src/main/scala/sbt/Reference.scala index 6439f641a..f2c8781d4 100644 --- a/main-settings/src/main/scala/sbt/Reference.scala +++ b/main-settings/src/main/scala/sbt/Reference.scala @@ -14,6 +14,7 @@ import java.net.URI import sbt.internal.util.AttributeKey import sbt.io.IO import sbt.librarymanagement.Configuration +import sbt.ScopeAxis.{ Select, This } import sbt.SlashSyntax.RichConfiguration // in all of these, the URI must be resolved and normalized before it is definitive diff --git a/main-settings/src/main/scala/sbt/Scope.scala b/main-settings/src/main/scala/sbt/Scope.scala index fb855ef92..e2fa52917 100644 --- a/main-settings/src/main/scala/sbt/Scope.scala +++ b/main-settings/src/main/scala/sbt/Scope.scala @@ -12,6 +12,7 @@ import java.net.URI import sbt.internal.util.{ AttributeKey, AttributeMap, Dag } import sbt.internal.util.Util._ +import sbt.ScopeAxis.{ Select, This, Zero } import sbt.io.IO import scala.collection.concurrent.TrieMap diff --git a/main-settings/src/main/scala/sbt/ScopeAxis.scala b/main-settings/src/main/scala/sbt/ScopeAxis.scala index 099e9ddd3..62f216186 100644 --- a/main-settings/src/main/scala/sbt/ScopeAxis.scala +++ b/main-settings/src/main/scala/sbt/ScopeAxis.scala @@ -8,46 +8,51 @@ package sbt -import sbt.internal.util.Util._ +import sbt.internal.util.Util.* -sealed trait ScopeAxis[+S] { - def foldStrict[T](f: S => T, ifZero: T, ifThis: T): T = fold(f, ifZero, ifThis) - def fold[T](f: S => T, ifZero: => T, ifThis: => T): T = this match { +enum ScopeAxis[+A1]: + /** + * Select is a type constructor that is used to wrap type `S` + * to make a scope component, equivalent of Some in Option. + */ + case Select(axis: A1) extends ScopeAxis[A1] + + /** + * This is a scope component that represents not being + * scoped by the user, which later could be further scoped automatically + * by sbt. + */ + case This extends ScopeAxis[Nothing] + + /** + * Zero is a scope component that represents not scoping. + * It is a universal fallback component that is strictly weaker + * than any other values on a scope axis. + */ + case Zero extends ScopeAxis[Nothing] + + def isSelect: Boolean = this match + case Select(_) => true + case _ => false + + def foldStrict[A2](f: A1 => A2, ifZero: A2, ifThis: A2): A2 = fold(f, ifZero, ifThis) + + def fold[A2](f: A1 => A2, ifZero: => A2, ifThis: => A2): A2 = this match case This => ifThis case Zero => ifZero case Select(s) => f(s) - } - def toOption: Option[S] = foldStrict(Option(_), none, none) - def map[T](f: S => T): ScopeAxis[T] = - foldStrict(s => Select(f(s)): ScopeAxis[T], Zero: ScopeAxis[T], This: ScopeAxis[T]) - def isSelect: Boolean = false -} -/** - * This is a scope component that represents not being - * scoped by the user, which later could be further scoped automatically - * by sbt. - */ -case object This extends ScopeAxis[Nothing] + def toOption: Option[A1] = foldStrict(Option(_), none, none) -/** - * Zero is a scope component that represents not scoping. - * It is a universal fallback component that is strictly weaker - * than any other values on a scope axis. - */ -case object Zero extends ScopeAxis[Nothing] + def map[A2](f: A1 => A2): ScopeAxis[A2] = + foldStrict(s => Select(f(s)): ScopeAxis[A2], Zero: ScopeAxis[A2], This: ScopeAxis[A2]) +end ScopeAxis -/** - * Select is a type constructor that is used to wrap type `S` - * to make a scope component, equivalent of Some in Option. - */ -final case class Select[S](s: S) extends ScopeAxis[S] { - override def isSelect = true -} +object ScopeAxis: + def `this`[A1]: ScopeAxis[A1] = ScopeAxis.This + def zero[A1]: ScopeAxis[A1] = ScopeAxis.Zero -object ScopeAxis { - def fromOption[T](o: Option[T]): ScopeAxis[T] = o match { - case Some(v) => Select(v) - case None => Zero - } -} + def fromOption[A1](o: Option[A1]): ScopeAxis[A1] = o match + case Some(v) => ScopeAxis.Select(v) + case None => ScopeAxis.Zero +end ScopeAxis diff --git a/main-settings/src/main/scala/sbt/SlashSyntax.scala b/main-settings/src/main/scala/sbt/SlashSyntax.scala index 1a8d0e4ae..53c2820b6 100644 --- a/main-settings/src/main/scala/sbt/SlashSyntax.scala +++ b/main-settings/src/main/scala/sbt/SlashSyntax.scala @@ -10,6 +10,7 @@ package sbt import sbt.librarymanagement.Configuration import sbt.internal.util.AttributeKey +import sbt.ScopeAxis.{ Select, This } /** * SlashSyntax implements the slash syntax to scope keys for build.sbt DSL. diff --git a/main-settings/src/main/scala/sbt/Structure.scala b/main-settings/src/main/scala/sbt/Structure.scala index 6bf160625..0b4757731 100644 --- a/main-settings/src/main/scala/sbt/Structure.scala +++ b/main-settings/src/main/scala/sbt/Structure.scala @@ -16,6 +16,7 @@ import sbt.internal.util.TupleMapExtension.* import sbt.util.OptJsonWriter import sbt.ConcurrentRestrictions.Tag import sbt.Def.{ Initialize, ScopedKey, Setting, setting } +import sbt.ScopeAxis.Select import std.TaskMacro import std.TaskExtra.{ task => mktask, _ } import scala.reflect.ClassTag diff --git a/main-settings/src/test/scala/sbt/BuildSettingsInstances.scala b/main-settings/src/test/scala/sbt/BuildSettingsInstances.scala index 31c3869fe..24cf8edfb 100644 --- a/main-settings/src/test/scala/sbt/BuildSettingsInstances.scala +++ b/main-settings/src/test/scala/sbt/BuildSettingsInstances.scala @@ -14,6 +14,7 @@ import hedgehog.* import scala.annotation.nowarn import scala.reflect.ClassTag import _root_.sbt.io.IO +import _root_.sbt.ScopeAxis.{ Select, This, Zero } import _root_.sbt.Scoped.ScopingSetting import _root_.sbt.librarymanagement.syntax.* import _root_.sbt.internal.util.{ AttributeKey, AttributeMap } diff --git a/main-settings/src/test/scala/sbt/SlashSyntaxSpec.scala b/main-settings/src/test/scala/sbt/SlashSyntaxSpec.scala index 9b71f48ce..943ffe2f5 100644 --- a/main-settings/src/test/scala/sbt/SlashSyntaxSpec.scala +++ b/main-settings/src/test/scala/sbt/SlashSyntaxSpec.scala @@ -12,6 +12,7 @@ package test import hedgehog.* import hedgehog.runner.* import Scope.{ Global, ThisScope } +import ScopeAxis.{ Select, This, Zero } import SlashSyntax0.given import BuildSettingsInstances.given import _root_.sbt.internal.util.AttributeKey @@ -19,6 +20,7 @@ import _root_.sbt.internal.util.AttributeKey object SlashSyntaxSpec extends Properties: override def tests: List[Test] = List( property("Global / key", propGlobalKey), + example("Zero / compile", zeroCompile), property("Reference / key", propReferenceKey), property("Reference / Config / key", propReferenceConfigKey), property("Reference / task.key / key", propReferenceAttrKeyKey), @@ -42,6 +44,7 @@ object SlashSyntaxSpec extends Properties: ) def gen[A1: Gen]: Gen[A1] = summon[Gen[A1]] + lazy val compile: TaskKey[Unit] = TaskKey[Unit]("compile", "compile") def propGlobalKey: Property = for @@ -58,6 +61,10 @@ object SlashSyntaxSpec extends Properties: else true) ) + def zeroCompile: Result = + val actual = Zero / compile + Result.assert(actual.scope.project == Zero && actual.key == compile.key) + def propReferenceKey: Property = for ref <- gen[Reference].forAll diff --git a/main-settings/src/test/scala/sbt/SlashSyntaxTest.scala b/main-settings/src/test/scala/sbt/SlashSyntaxTest.scala index 1161f8894..a91c60503 100644 --- a/main-settings/src/test/scala/sbt/SlashSyntaxTest.scala +++ b/main-settings/src/test/scala/sbt/SlashSyntaxTest.scala @@ -12,9 +12,10 @@ import java.io.File import sjsonnew._ import sbt.Def.{ Setting, inputKey, settingKey, taskKey } import sbt.Scope.Global +import sbt.ScopeAxis.Zero import sbt.librarymanagement.ModuleID import sbt.librarymanagement.syntax._ -import sbt.{ LocalProject, ProjectReference, ThisBuild, Zero } +import sbt.{ LocalProject, ProjectReference, ThisBuild } object SlashSyntaxTest extends sbt.SlashSyntax { final case class Proj(id: String) diff --git a/main/src/main/scala/sbt/Cross.scala b/main/src/main/scala/sbt/Cross.scala index 3fb8ffdbc..76c6bfc2a 100644 --- a/main/src/main/scala/sbt/Cross.scala +++ b/main/src/main/scala/sbt/Cross.scala @@ -12,6 +12,7 @@ import java.io.File import sbt.Def.{ ScopedKey, Setting } import sbt.Keys._ import sbt.ProjectExtra.extract +import sbt.ScopeAxis.{ Select, Zero } import sbt.SlashSyntax0.given import sbt.internal.Act import sbt.internal.CommandStrings._ diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index bb7b11bb0..0049adfad 100644 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -32,6 +32,7 @@ import sbt.Project.{ } import sbt.ProjectExtra.* import sbt.Scope.{ GlobalScope, ThisBuildScope, ThisScope, fillTaskAxis } +import sbt.ScopeAxis.{ Select, This, Zero } import sbt.State.StateOpsImpl import sbt.coursierint._ import sbt.internal.CommandStrings.ExportStream diff --git a/main/src/main/scala/sbt/Extracted.scala b/main/src/main/scala/sbt/Extracted.scala index 43293d4c7..cbe4251ba 100644 --- a/main/src/main/scala/sbt/Extracted.scala +++ b/main/src/main/scala/sbt/Extracted.scala @@ -10,6 +10,7 @@ package sbt import sbt.internal.{ Load, BuildStructure, Act, Aggregation, SessionSettings } import Scope.GlobalScope +import sbt.ScopeAxis.This import Def.{ ScopedKey, Setting } import sbt.internal.util.complete.Parser import sbt.util.Show diff --git a/main/src/main/scala/sbt/Main.scala b/main/src/main/scala/sbt/Main.scala index 55aed8ca5..a4bcf71b4 100644 --- a/main/src/main/scala/sbt/Main.scala +++ b/main/src/main/scala/sbt/Main.scala @@ -18,6 +18,7 @@ import java.util.concurrent.atomic.AtomicBoolean import sbt.Project.LoadAction import sbt.ProjectExtra.* +import sbt.ScopeAxis.Select import sbt.internal.Aggregation.AnyKeys import sbt.internal._ import sbt.internal.client.BspClient diff --git a/main/src/main/scala/sbt/PluginCross.scala b/main/src/main/scala/sbt/PluginCross.scala index 99ae1cde8..d63c2c44e 100644 --- a/main/src/main/scala/sbt/PluginCross.scala +++ b/main/src/main/scala/sbt/PluginCross.scala @@ -13,6 +13,7 @@ import DefaultParsers._ import sbt.Keys._ import Scope.GlobalScope import Def.ScopedKey +import sbt.ScopeAxis.Select import sbt.SlashSyntax0.given import sbt.internal.Load import sbt.internal.CommandStrings._ diff --git a/main/src/main/scala/sbt/ProjectExtra.scala b/main/src/main/scala/sbt/ProjectExtra.scala index e9900db2a..45c07b136 100755 --- a/main/src/main/scala/sbt/ProjectExtra.scala +++ b/main/src/main/scala/sbt/ProjectExtra.scala @@ -37,6 +37,7 @@ import Keys.{ } import Project.LoadAction import Scope.{ Global, ThisScope } +import sbt.ScopeAxis.Select import sbt.SlashSyntax0.given import Def.{ Flattened, Initialize, ScopedKey, Setting } import sbt.internal.{ diff --git a/main/src/main/scala/sbt/RemoteCache.scala b/main/src/main/scala/sbt/RemoteCache.scala index 0a9874e8c..dc570e76b 100644 --- a/main/src/main/scala/sbt/RemoteCache.scala +++ b/main/src/main/scala/sbt/RemoteCache.scala @@ -21,6 +21,7 @@ import sbt.Keys._ import sbt.Project.{ inConfig => _, * } import sbt.ProjectExtra.* import sbt.ScopeFilter.Make._ +import sbt.ScopeAxis.Select import sbt.SlashSyntax0.given import sbt.coursierint.LMCoursier import sbt.internal.inc.{ HashUtil, JarUtils } diff --git a/main/src/main/scala/sbt/ScopeFilter.scala b/main/src/main/scala/sbt/ScopeFilter.scala index eff4e9b02..dfb7413ab 100644 --- a/main/src/main/scala/sbt/ScopeFilter.scala +++ b/main/src/main/scala/sbt/ScopeFilter.scala @@ -13,6 +13,7 @@ import sbt.internal.util.{ AttributeKey, Dag } import sbt.librarymanagement.{ ConfigRef, Configuration } import sbt.internal.util.Types.const import Def.Initialize +import sbt.ScopeAxis.{ Select, Zero } import java.net.URI sealed abstract class ScopeFilter { self => diff --git a/main/src/main/scala/sbt/internal/Act.scala b/main/src/main/scala/sbt/internal/Act.scala index afdc5be32..503db383f 100644 --- a/main/src/main/scala/sbt/internal/Act.scala +++ b/main/src/main/scala/sbt/internal/Act.scala @@ -15,6 +15,7 @@ import sbt.internal.util.complete.{ DefaultParsers, Parser } import Aggregation.{ KeyValue, Values } import DefaultParsers._ import sbt.internal.util.Types.idFun +import sbt.ScopeAxis.{ Select, Zero } import sbt.ProjectExtra.{ failure => _, * } import java.net.URI import sbt.internal.CommandStrings.{ MultiTaskCommand, ShowCommand, PrintCommand } diff --git a/main/src/main/scala/sbt/internal/Aggregation.scala b/main/src/main/scala/sbt/internal/Aggregation.scala index e0e58f90b..084051bba 100644 --- a/main/src/main/scala/sbt/internal/Aggregation.scala +++ b/main/src/main/scala/sbt/internal/Aggregation.scala @@ -14,6 +14,7 @@ import java.text.DateFormat import sbt.Def.{ ScopedKey, Settings } import sbt.Keys.{ showSuccess, showTiming, timingFormat } import sbt.ProjectExtra.* +import sbt.ScopeAxis.{ Select, Zero } import sbt.SlashSyntax0.given import sbt.internal.util.complete.Parser import sbt.internal.util.complete.Parser.{ failure, seq, success } diff --git a/main/src/main/scala/sbt/internal/BuildStructure.scala b/main/src/main/scala/sbt/internal/BuildStructure.scala index df9dc34c3..319a3e32c 100644 --- a/main/src/main/scala/sbt/internal/BuildStructure.scala +++ b/main/src/main/scala/sbt/internal/BuildStructure.scala @@ -16,6 +16,7 @@ import java.net.URI import Def.{ ScopeLocal, ScopedKey, Setting, displayFull } import BuildPaths.outputDirectory import Scope.GlobalScope +import sbt.ScopeAxis.{ Select, This, Zero } import sbt.SlashSyntax0.given import BuildStreams.Streams import sbt.io.syntax._ diff --git a/main/src/main/scala/sbt/internal/Clean.scala b/main/src/main/scala/sbt/internal/Clean.scala index 67149abd7..117132deb 100644 --- a/main/src/main/scala/sbt/internal/Clean.scala +++ b/main/src/main/scala/sbt/internal/Clean.scala @@ -16,6 +16,7 @@ import sbt.Def._ import sbt.Keys._ // import sbt.Project.richInitializeTask import sbt.ProjectExtra.* +import sbt.ScopeAxis.Zero import sbt.SlashSyntax0.given import sbt.io.syntax._ import sbt.nio.Keys._ diff --git a/main/src/main/scala/sbt/internal/CrossJava.scala b/main/src/main/scala/sbt/internal/CrossJava.scala index bfb2d854e..bfb206e13 100644 --- a/main/src/main/scala/sbt/internal/CrossJava.scala +++ b/main/src/main/scala/sbt/internal/CrossJava.scala @@ -18,6 +18,7 @@ import sbt.io.syntax._ import sbt.Cross._ import sbt.Def.{ ScopedKey, Setting } import sbt.ProjectExtra.extract +import sbt.ScopeAxis.{ Select, Zero } import sbt.SlashSyntax0.given import sbt.internal.util.complete.DefaultParsers._ import sbt.internal.util.AttributeKey diff --git a/main/src/main/scala/sbt/internal/FileChangesMacro.scala b/main/src/main/scala/sbt/internal/FileChangesMacro.scala index 7efb97353..84d79124f 100644 --- a/main/src/main/scala/sbt/internal/FileChangesMacro.scala +++ b/main/src/main/scala/sbt/internal/FileChangesMacro.scala @@ -11,6 +11,7 @@ package internal import java.nio.file.{ Path => NioPath } +import sbt.ScopeAxis.Select import sbt.nio.Keys._ import sbt.nio.{ FileChanges, FileStamp } @@ -100,6 +101,6 @@ object FileChangesMacro: private def getTaskScope[A: Type](in: Expr[TaskKey[A]])(using qctx: Quotes): Expr[sbt.Scope] = '{ if $in.scope.task.toOption.isDefined then $in.scope - else $in.scope.copy(task = sbt.Select($in.key)) + else $in.scope.copy(task = Select($in.key)) } end FileChangesMacro diff --git a/main/src/main/scala/sbt/internal/Load.scala b/main/src/main/scala/sbt/internal/Load.scala index c40b117c1..6a56c09f0 100755 --- a/main/src/main/scala/sbt/internal/Load.scala +++ b/main/src/main/scala/sbt/internal/Load.scala @@ -15,6 +15,7 @@ import sbt.Keys._ import sbt.Project.inScope import sbt.ProjectExtra.{ prefixConfigs, setProject, showLoadingKey, structure } import sbt.Scope.GlobalScope +import sbt.ScopeAxis.{ Select, Zero } import sbt.SlashSyntax0.given import sbt.internal.BuildStreams._ import sbt.internal.inc.classpath.ClasspathUtil diff --git a/main/src/main/scala/sbt/internal/LogManager.scala b/main/src/main/scala/sbt/internal/LogManager.scala index cc786db7c..544f72689 100644 --- a/main/src/main/scala/sbt/internal/LogManager.scala +++ b/main/src/main/scala/sbt/internal/LogManager.scala @@ -13,6 +13,7 @@ import sbt.Def.ScopedKey import sbt.Keys._ import sbt.ProjectExtra.showContextKey import sbt.Scope.Global +import sbt.ScopeAxis.{ Select, Zero } import sbt.SlashSyntax0.given import sbt.internal.util.MainAppender._ import sbt.internal.util.{ Terminal => ITerminal, _ } diff --git a/main/src/main/scala/sbt/internal/Resolve.scala b/main/src/main/scala/sbt/internal/Resolve.scala index 710b57bc0..df003c76d 100644 --- a/main/src/main/scala/sbt/internal/Resolve.scala +++ b/main/src/main/scala/sbt/internal/Resolve.scala @@ -10,6 +10,7 @@ package sbt package internal import sbt.internal.util.AttributeKey +import sbt.ScopeAxis.{ Select, This, Zero } object Resolve { def apply( diff --git a/main/src/main/scala/sbt/internal/SettingCompletions.scala b/main/src/main/scala/sbt/internal/SettingCompletions.scala index bb90f11c6..b4d5d00cc 100644 --- a/main/src/main/scala/sbt/internal/SettingCompletions.scala +++ b/main/src/main/scala/sbt/internal/SettingCompletions.scala @@ -16,6 +16,7 @@ import sbt.librarymanagement.Configuration import ProjectExtra.{ relation } import Def.{ ScopedKey, Setting } import Scope.Global +import sbt.ScopeAxis.{ Select, This, Zero } import sbt.SlashSyntax0.given import complete._ import DefaultParsers._ diff --git a/main/src/main/scala/sbt/internal/WatchTransitiveDependencies.scala b/main/src/main/scala/sbt/internal/WatchTransitiveDependencies.scala index 927e85e77..f8954e163 100644 --- a/main/src/main/scala/sbt/internal/WatchTransitiveDependencies.scala +++ b/main/src/main/scala/sbt/internal/WatchTransitiveDependencies.scala @@ -13,6 +13,7 @@ import sbt.Def._ import sbt.Keys._ // import sbt.Project.richInitializeTask import sbt.ProjectExtra.* +import sbt.ScopeAxis.Zero import sbt.SlashSyntax0.given import sbt.internal.io.Source import sbt.internal.nio.Globs diff --git a/main/src/main/scala/sbt/nio/Settings.scala b/main/src/main/scala/sbt/nio/Settings.scala index 506f0b797..63e9634d5 100644 --- a/main/src/main/scala/sbt/nio/Settings.scala +++ b/main/src/main/scala/sbt/nio/Settings.scala @@ -13,6 +13,7 @@ import java.nio.file.{ Files, Path } import java.util.concurrent.ConcurrentHashMap import sbt.Keys._ +import sbt.ScopeAxis.{ Select, Zero } import sbt.SlashSyntax0.given import sbt.internal.Clean.ToSeqPath import sbt.internal.Continuous.FileStampRepository diff --git a/main/src/test/scala/Delegates.scala b/main/src/test/scala/Delegates.scala index 5986e8747..e5304323f 100644 --- a/main/src/test/scala/Delegates.scala +++ b/main/src/test/scala/Delegates.scala @@ -10,6 +10,7 @@ package sbt import sbt.internal.util.Types.idFun import sbt.internal.TestBuild._ +import sbt.ScopeAxis.{ Select, This, Zero } import hedgehog._ import hedgehog.Result.{ all, assert, failure, success } import hedgehog.runner._ diff --git a/main/src/test/scala/ParseKeySpec.scala b/main/src/test/scala/ParseKeySpec.scala index 4f255784d..a970ba0ef 100644 --- a/main/src/test/scala/ParseKeySpec.scala +++ b/main/src/test/scala/ParseKeySpec.scala @@ -12,6 +12,7 @@ import sbt.internal.TestBuild._ import sbt.internal.util.complete.Parser import sbt.internal.{ Resolve, TestBuild } import sbt.ProjectExtra.equalKeys +import sbt.ScopeAxis.{ Select, Zero } import hedgehog._ import hedgehog.core.{ ShrinkLimit, SuccessCount } import hedgehog.runner._ diff --git a/main/src/test/scala/ParserSpec.scala b/main/src/test/scala/ParserSpec.scala index 5a72e76ef..a05cfa58a 100644 --- a/main/src/test/scala/ParserSpec.scala +++ b/main/src/test/scala/ParserSpec.scala @@ -10,6 +10,7 @@ package sbt import java.net.URI import sbt.Def._ +import sbt.ScopeAxis.{ Select, Zero } import sbt.internal.TestBuild import sbt.internal.TestBuild._ import sbt.internal.util.AttributeKey diff --git a/main/src/test/scala/sbt/internal/TestBuild.scala b/main/src/test/scala/sbt/internal/TestBuild.scala index 8ddb39f34..c7122390c 100644 --- a/main/src/test/scala/sbt/internal/TestBuild.scala +++ b/main/src/test/scala/sbt/internal/TestBuild.scala @@ -10,6 +10,7 @@ package sbt package internal import Def.{ ScopedKey, Setting } +import sbt.ScopeAxis.{ Select, Zero } import sbt.internal.util.{ AttributeKey, Relation } import sbt.internal.util.Types.{ const, some } import sbt.internal.util.complete.Parser diff --git a/main/src/test/scala/testpkg/CompletionSpec.scala b/main/src/test/scala/testpkg/CompletionSpec.scala index ceb337819..00b61c2ac 100644 --- a/main/src/test/scala/testpkg/CompletionSpec.scala +++ b/main/src/test/scala/testpkg/CompletionSpec.scala @@ -10,6 +10,7 @@ package testpkg import java.net.URI import sbt.{ Result => _, _ } +import sbt.ScopeAxis.{ Select, Zero } import sbt.Def._ import sbt.internal.TestBuild import sbt.internal.TestBuild._ diff --git a/sbt-app/src/main/scala/sbt/Import.scala b/sbt-app/src/main/scala/sbt/Import.scala index bf3c0425c..394be5f54 100644 --- a/sbt-app/src/main/scala/sbt/Import.scala +++ b/sbt-app/src/main/scala/sbt/Import.scala @@ -34,6 +34,9 @@ trait Import { type ClasspathDependency = ClasspathDep.ClasspathDependency val ResolvedClasspathDependency = ClasspathDep.ResolvedClasspathDependency type ResolvedClasspathDependency = ClasspathDep.ResolvedClasspathDependency + val Select = ScopeAxis.Select + val This = ScopeAxis.This + val Zero = ScopeAxis.Zero // sbt.testing type TestResult = sbt.protocol.testing.TestResult val TestResult = sbt.protocol.testing.TestResult