sbt, the interactive build tool
Go to file
Eugene Yokota 2a6385fd94 Remove thunk for slash syntax
Ref #3606, #3611, and #3613

This removes unnecessary thunk for slash syntax.
The semantics using this approach is strictly better than the previous `in (ref, config, task)`. By removing the thunk, we retain `(a / b) / c == a / b / c`.

See the following example:

```scala
scala> import sbt._, Keys._
scala> val t: TaskKey[Unit] = (test in Test)
t: sbt.TaskKey[Unit] = TaskKey(This / Select(ConfigKey(test)) / This / test)

scala> ThisBuild / t
ThisBuild / t
res1: sbt.TaskKey[Unit] = TaskKey(Select(ThisBuild) / Select(ConfigKey(test)) / This / test)

scala> ThisBuild / t / name
ThisBuild / t / name
res2: sbt.SettingKey[String] = SettingKey(Select(ThisBuild) / Select(ConfigKey(test)) / Select(test) / name)
```

so far so good? Now look at this:

```
scala> scala> name in (ThisBuild, t)
name in (ThisBuild, t)
res3: sbt.SettingKey[String] = SettingKey(Select(ThisBuild) / This / Select(test) / name)
```

`Test` configuration knowledge is lost! For `in (..)` maybe it was ok because mostly we don't use unscoped keys, but that's the difference between `in (..)` and `/`.

Fixes #3605
2017-10-06 15:47:46 -04:00
core-macros/src/main/scala/sbt/internal/util/appmacro Add, configure & enforce file headers 2017-10-05 09:03:40 +01:00
internal Add, configure & enforce file headers 2017-10-05 09:03:40 +01:00
launch Add, configure & enforce file headers 2017-10-05 09:03:40 +01:00
licenses move remaining pieces of sbt subproject to sbt_pending and fix notices 2010-09-21 21:55:50 -04:00
main Move SlashSyntax to the settings component 2017-10-06 09:52:34 +01:00
main-actions/src Add, configure & enforce file headers 2017-10-05 09:03:40 +01:00
main-command/src/main Add, configure & enforce file headers 2017-10-05 09:03:40 +01:00
main-settings/src Remove thunk for slash syntax 2017-10-06 15:47:46 -04:00
notes Implement Project#withId 2017-10-04 13:54:37 +01:00
project Add, configure & enforce file headers 2017-10-05 09:03:40 +01:00
protocol/src/main Add, configure & enforce file headers 2017-10-05 09:03:40 +01:00
run Add, configure & enforce file headers 2017-10-05 09:03:40 +01:00
sbt/src Remove thunk for slash syntax 2017-10-06 15:47:46 -04:00
scripted Add, configure & enforce file headers 2017-10-05 09:03:40 +01:00
src/main/conscript launchconfig 2017-08-10 01:26:58 -04:00
tasks Add, configure & enforce file headers 2017-10-05 09:03:40 +01:00
tasks-standard Add, configure & enforce file headers 2017-10-05 09:03:40 +01:00
testing Add, configure & enforce file headers 2017-10-05 09:03:40 +01:00
vscode-sbt-scala update logo to a white background version 2017-10-03 18:22:14 -04:00
.gitattributes Added .gitattributes file. 2013-04-25 00:06:51 +08:00
.gitignore begins language server protocol 2017-10-02 04:01:13 -04:00
.java-version Configure JVM 1.8 in .java-version 2016-10-07 08:48:23 -05:00
.scalafmt.conf Add back, re-configure & re-enable Scalafmt 2017-08-10 16:35:23 +01:00
.travis.yml Add, configure & enforce file headers 2017-10-05 09:03:40 +01:00
CONTRIBUTING.md s/Typesafe subscriptions/Lightbend subscriptions 2017-07-22 07:14:42 +09:00
ISSUE_TEMPLATE.md Add prompt for sbt version in the issue template 2017-06-04 11:47:21 +02:00
LICENSE Add, configure & enforce file headers 2017-10-05 09:03:40 +01:00
NOTICE Add, configure & enforce file headers 2017-10-05 09:03:40 +01:00
PULL_REQUEST_TEMPLATE.md Add "Clean history" to contributing with links 2016-02-19 13:21:11 +00:00
README.md Merge branch '1.0.x' into add-gitter-badge 2017-06-03 06:11:33 +02:00
build.sbt Print npm output, handle exit code in case of errors 2017-10-06 02:26:59 +02:00
reset.sh 1.0.3-SNAPSHOT 2017-09-16 15:52:58 -04:00
sbt-allsources.sh Bump underlying modules to latest 2017-03-23 12:41:24 -04:00
server.md setting query is "sbt/setting" 2017-10-03 01:45:06 -04:00

README.md

Gitter Chat

sbt

sbt is a build tool for Scala, Java, and more.

For general documentation, see http://www.scala-sbt.org/.

sbt 1.0.x

This is the 1.0.x series of sbt. The source code of sbt is split across several Github repositories, including this one.

  • sbt/io hosts sbt.io module.
  • sbt/util hosts a collection of internally used modules.
  • sbt/librarymanagement hosts sbt.librarymanagement module that wraps Ivy.
  • sbt/zinc hosts Zinc, an incremental compiler for Scala.
  • sbt/sbt, this repository hosts modules that implements the build tool.
  • Setup: Describes getting started with the latest binary release.
  • FAQ: Explains how to get help and more.
  • sbt/sbt-zero-seven: hosts sbt 0.7.7 and earlier versions

Issues and Pull Requests

Please read CONTRIBUTING carefully before opening a GitHub Issue.

The short version: try searching or asking on StackOverflow.

license

See LICENSE.