Rikito Taniguchi
10f98e6c01
[2.x] Fix macro expand for HKT type arguments ( #9377 )
...
Def.setting and Def.task macro expansion looks for internal wrapper
call generated for .value.
It visits all function calls in the macro. If the block contains
functions call whose type parameter is HKT, macro expansion crashed.
Macro expansion tries to match IO against '[a], and failed with MatchError.
This commit adds wildcard pattern, and leave unmatched type arguments unchanged.
2026-06-24 21:22:11 -04:00
eugene yokota
25cb2f3e60
[2.x] fix: Add warning about trainsient key ( #9288 )
...
**Problem**
Transient key is silently excluded from caching.
**Solution**
Add a warning.
2026-06-01 06:29:44 -04:00
eugene yokota
315202181c
[2.x] ci: Scalafmt 3.11.1 ( #9279 )
...
Apply Scalafmt
2026-05-31 16:01:15 -04:00
eugene yokota
6c8ee6ea37
[2.x] Remove Path type from caching ( #9032 )
...
**Problem**
Like File, Path normally captures the absolute path,
so likely not a good candidate for caching.
**Solution**
Ban it.
---------
Co-authored-by: Anatolii Kmetiuk <anatoliikmt@proton.me>
2026-04-06 14:40:33 -04:00
Douglas Ma
a7d5f45515
[2.x] fix: Reject java.io.File as cached task output type ( #8766 )
...
Change the behavior when a cached task's output type contains
java.io.File: instead of silently skipping the cache, throw a
compile-time error with a message recommending xsbti.VirtualFileRef,
xsbti.HashedVirtualFileRef, or xsbti.VirtualFile, and linking to the
caching documentation.
Internal sbt tasks that return File types are wrapped with
Def.uncached to opt out of caching.
Fixes https://github.com/sbt/sbt/issues/8762
Generated-by: GitHub Copilot (Claude)
* [2.x] fix: Reject java.io.File as cached task output type
Use @transient on File-returning keys in Keys.scala instead of
wrapping tasks with Def.uncached in Defaults.scala. This ensures
build users who rewire these tasks also get caching skipped
automatically.
- Add @transient to 19 File-returning taskKey definitions in Keys.scala
- Revert Def.uncached wrappers from Defaults.scala
- Error at compile time when File is used as cached task output type
- Update error message to recommend @transient and link to docs
- Update scripted tests to use @transient approach
Fixes #8762
Generated-by: GitHub Copilot (Claude Opus 4.6)
2026-02-21 01:35:46 -05:00
xuwei-k
c0fe4dfb10
Add tailrec annotation
2026-01-11 16:33:45 +09:00
Eugene Yokota
43382095ef
Use scala.transient to denote the empty cache level
2025-08-16 01:27:14 -04:00
Eugene Yokota
6a7b56a645
Default to cached task
...
This flips the default `:=` operation to the cached task.
To opt out of the cache, use `Def.uncached(...)` or
mark the key with `@cacheLevel(include = Array.empty)`
2025-06-21 08:54:51 +09:00
Eugene Yokota
4521f43995
Support debug output for macros
...
It's sometimes useful to get the output of the macro-generated code.
This adds a mechanism to allow plugins.sbt to pass in scalacOptions,
which we can later check from the macro.
1. -Xmacro-settings:sbt:Vprint prints out the code.
2. Adding -Xmacro-settings:sbt:print-tree-structure prints out the tree structure.
2025-05-27 00:58:41 -04:00
xuwei-k
031e806a24
fix ContTestMacro
2025-05-10 07:44:11 +09:00
xuwei-k
ce654c4ffc
remove unused imports
2025-05-09 19:40:49 +09:00
eugene yokota
84ebcd3c34
Merge pull request #8110 from xuwei-k/remove-unused-imports
...
[2.x] remove unused imports
2025-05-09 02:28:52 -07:00
xuwei-k
237f341d6f
add `using` if explicitly providing arguments to methods defined with implicit
2025-05-09 16:48:39 +09:00
xuwei-k
fa6daec812
remove unused imports
2025-05-09 16:46:48 +09:00
Eugene Yokota
f3dd5dbd71
fix: Fix qual lookup
...
**Problem**
Nested macro that expands to map or mapN fails to
find the qual because the trees end up being different
between the record scan and actual replacement.
**Solution**
First try for equals normally, then compare the show strings.
2025-05-05 03:04:44 -04:00
xuwei-k
cbc065f0ff
remove scala 3 issues 21779 workaround
2025-03-13 08:05:05 +09:00
xuwei-k
5d660ab8b5
remove unnecessary `case`
...
- 3ca3633505/rules/src/main/scala/fix/RemoveParameterUntuplingCase.scala
- https://docs.scala-lang.org/scala3/reference/other-new-features/parameter-untupling.html
- https://docs.scala-lang.org/scala3/reference/other-new-features/parameter-untupling-spec.html
2025-02-22 08:48:29 +09:00
Josh Soref
613eb86447
Spelling ( #8028 )
...
* spelling: 1.x
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: a
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: aether
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: anymore
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: artifact
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: available
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: be
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: bridge
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: cannot
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: case-insensitive
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: checksum
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: class loads
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: contra
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: dependencies
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: dependency
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: dependent
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: deriveds
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: describes
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: early
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: enclosed
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: evaluation
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: excluding
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: execution
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: for
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: frequently
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: github
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: green
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: https://www
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: https
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: in-sourcing
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: include
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: incompatible
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: indefinitely
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: information
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: inputted
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: just
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: lastmodifiedtimes
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: latest
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: manifest
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: miscellaneous
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: more
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: neither
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: never
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: nonexistent
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: opted
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: outputting
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: params
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: performance
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: preceding
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: presentation
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: project
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: projects
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: protocol
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: related
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: representation
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: res
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: resolverlist
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: resolverset
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: response
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: returned
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: sbt_version
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: scalacheck
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: sentinels
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: separates
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: serves
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: should
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: significant
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: specifically
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: substitute
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: suppress
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: terminal
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: the
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: title
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: transitive
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: version
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: versions
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: want
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: wanting
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* spelling: whether
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* link: sbt Cached Resolution
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
* link: Testing sbt plugins
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
---------
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
2025-02-04 01:11:28 -05:00
xuwei-k
da26f3078b
use withFilter instead of filter
2025-01-04 09:10:36 +09:00
xuwei-k
13d6626564
update .scalafmt.conf. enforce new scala 3 syntax
2025-01-02 11:25:34 +09:00
Eugene Yokota
56941dac04
refactor: Update Scala 3 syntax
2024-10-27 23:55:30 -04:00
xuwei-k
b3336b2ce2
fix type error if too many `.value`
2024-10-17 10:35:16 +09:00
Adrien Piquerez
31710c0879
Reduce allocation of Action.Mapped
...
For a tuple (t1, t2, ..., tn) of tasks we instantiate a unique Mapped instead of many
Mapped(t1, Mapped(t2, Mapped(...))
2024-10-02 15:54:20 +02:00
Adrien Piquerez
f08f272d23
[2.x] Fix scripted cache tests
2024-09-18 10:28:11 +02:00
Eugene Yokota
2aba06bb90
Refactor ActionCache to split into smaller functions
2024-09-08 14:42:24 -04:00
Eugene Yokota
eb9a507419
Refactor Def.declareOutputDirectory to return vf
2024-08-18 12:57:29 -04:00
Eugene Yokota
987ab5f214
Add Def.declareOutputDirectory function
2024-08-18 12:57:29 -04:00
Eugene Yokota
c8ddbaed0e
Implement InternalActionResult
2024-08-18 12:57:29 -04:00
Eugene Yokota
c81d269ed2
Merge branch '1.10.x' into wip/merge-1.10.x
2024-05-07 04:39:25 -04:00
Adrien Piquerez
2e439cab1e
[2.x] report cache errors
...
Report a cache error if the output file of a task is not cacheable
2024-04-24 10:41:56 +02:00
Adrien Piquerez
a89ad8ad4d
apply review
2024-03-07 09:00:17 +01:00
Adrien Piquerez
12e9267e1e
Remove more unused
2024-03-05 15:25:25 +01:00
Adrien Piquerez
c15a4031a9
Fix or mute warnings
2024-03-05 10:39:00 +01:00
adpi2
64be877549
Merge pull request #7491 from adpi2/misc-cleanup
...
[2.x] Miscellaneous cleanup
2024-02-08 17:42:35 +01:00
eugene yokota
ecca26175e
[sbt 2.x] remote cache ( #7464 )
...
For the details about this PR, please see the blog post https://eed3si9n.com/sbt-remote-cache/ .
* Add cache basics
* Refactor Attributed to use StringAttributeMap, which is Map[StringAttributeKey, String]
* Implement disk cache
* Rename Package to Pkg
* Virtualize packageBin
* Use HashedVirtualFileRef for packageBin
* Virtualize compile task
2024-02-07 10:34:06 -05:00
Adrien Piquerez
cabf08e5f0
Use report.errorAndAbort in macro
2024-02-07 11:55:27 +01:00
Adrien Piquerez
a15fb91c5c
Remove AList
2023-12-13 14:01:57 +01:00
Adrien Piquerez
73e3b43683
Introduce util-core to cross-compile util-logging
2023-11-14 11:43:12 +01:00
Julien Richard-Foy
72bfb3f45a
Transfer copyright to Scala Center
2023-06-20 16:39:07 +02:00
Eugene Yokota
9f5525c989
inline parameter removes let binding
2023-01-15 23:50:29 -05:00
Eugene Yokota
cba7a0efc3
Refactor to build mainProj
2023-01-15 23:48:11 -05:00
Eugene Yokota
d802c2ba04
valStart to change synthetic variable names
2023-01-15 23:45:35 -05:00
Eugene Yokota
73c7236c2c
Refactor to use Type instead of TypeRepr
2023-01-15 23:45:35 -05:00
Eugene Yokota
c1be8eacb6
Fix Convert
2023-01-15 23:45:34 -05:00
Eugene Yokota
66fa46a912
Fix InputTask macro
2023-01-15 23:44:28 -05:00
Eugene Yokota
7e5fbcd92b
Manually inline extension method
2023-01-15 23:44:28 -05:00
Eugene Yokota
f3dd2dff36
Starting input task
2023-01-15 23:43:59 -05:00
Eugene Yokota
2f50a88a3d
Fix Cont
2023-01-15 23:43:59 -05:00
Eugene Yokota
6662dbad26
InputWrapper can be inline method
2023-01-15 23:43:59 -05:00
Eugene Yokota
340721c4a1
KeyMacro
2023-01-15 23:43:57 -05:00