Build Logs
atnos-org/eff • 3.8.1-RC1:2026-01-13
Errors
17
Warnings
94
Total Lines
1007
1##################################
2Clonning https://github.com/atnos-org/eff.git into /build/repo using revision v8.0.0
3##################################
4Note: switching to '87c7bf20cbc8234a71eec66db3a552dd9429319f'.
5
6You are in 'detached HEAD' state. You can look around, make experimental
7changes and commit them, and you can discard any commits you make in this
8state without impacting any branches by switching back to a branch.
9
10If you want to create a new branch to retain commits you create, you may
11do so (now or later) by using -c with the switch command. Example:
12
13 git switch -c <new-branch-name>
14
15Or undo this operation with:
16
17 git switch -
18
19Turn off this advice by setting config variable advice.detachedHead to false
20
21----
22Preparing build for 3.8.1-RC1
23Scala binary version found: 3.8
24Implicitly using source version 3.8
25Scala binary version found: 3.8
26Implicitly using source version 3.8
27Would try to apply common scalacOption (best-effort, sbt/mill only):
28Append: ,REQUIRE:-source:3.8
29Remove: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
30----
31Starting build for 3.8.1-RC1
32Execute tests: true
33sbt project found:
34Sbt version 1.10.11 is not supported, minimal supported version is 1.11.5
35Enforcing usage of sbt in version 1.11.5
36No prepare script found for project atnos-org/eff
37##################################
38Scala version: 3.8.1-RC1
39Targets: org.atnos%eff org.atnos%eff-cats-effect org.atnos%eff-choose org.atnos%eff-core org.atnos%eff-doobie org.atnos%eff-either org.atnos%eff-error org.atnos%eff-eval org.atnos%eff-future org.atnos%eff-list org.atnos%eff-monix org.atnos%eff-option org.atnos%eff-reader org.atnos%eff-safe org.atnos%eff-state org.atnos%eff-validate org.atnos%eff-writer
40Project projectConfig: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"21"},"sbt":{"commands":["set monixJVM/Test/unmanagedSources ~= (_.filterNot(_.getName == \"TaskEffectSpec.scala\"))"],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[]}
41##################################
42Using extra scalacOptions: ,REQUIRE:-source:3.8
43Filtering out scalacOptions: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
44[sbt_options] declare -a sbt_options=()
45[process_args] java_version = '21'
46[copyRt] java9_rt = '/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_21/rt.jar'
47# Executing command line:
48java
49-Xms4096M
50-Xmx6000M
51-Xss6M
52-XX:+UseG1GC
53-Dcommunitybuild.scala=3.8.1-RC1
54-Dcommunitybuild.project.dependencies.add=
55-Xmx7G
56-Xms4G
57-Xss8M
58-Dsbt.script=/root/.sdkman/candidates/sbt/current/bin/sbt
59-Dscala.ext.dirs=/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_21
60-jar
61/root/.sdkman/candidates/sbt/1.11.5/bin/sbt-launch.jar
62"setCrossScalaVersions 3.8.1-RC1"
63"++3.8.1-RC1 -v"
64"mapScalacOptions ",REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s" ",-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e""
65"set every credentials := Nil"
66"excludeLibraryDependency com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}"
67"removeScalacOptionsStartingWith -P:wartremover"
68"set monixJVM/Test/unmanagedSources ~= (_.filterNot(_.getName == "TaskEffectSpec.scala"))"
69moduleMappings
70"runBuild 3.8.1-RC1 """{"projects":{"exclude":[],"overrides":{}},"java":{"version":"21"},"sbt":{"commands":["set monixJVM/Test/unmanagedSources ~= (_.filterNot(_.getName == \"TaskEffectSpec.scala\"))"],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[]}""" org.atnos%eff org.atnos%eff-cats-effect org.atnos%eff-choose org.atnos%eff-core org.atnos%eff-doobie org.atnos%eff-either org.atnos%eff-error org.atnos%eff-eval org.atnos%eff-future org.atnos%eff-list org.atnos%eff-monix org.atnos%eff-option org.atnos%eff-reader org.atnos%eff-safe org.atnos%eff-state org.atnos%eff-validate org.atnos%eff-writer"
71
72[info] welcome to sbt 1.11.5 (Eclipse Adoptium Java 21)
73[info] loading settings for project repo-build from akka.sbt, plugins.sbt...
74[info] loading project definition from /build/repo/project
75[info] compiling 2 Scala sources to /build/repo/project/target/scala-2.12/sbt-1.0/classes ...
76[info] Non-compiled module 'compiler-bridge_2.12' for Scala 2.12.20. Compiling...
77[info] Compilation completed in 8.165s.
78[info] done compiling
79[info] loading settings for project repo from build.sbt, version.sbt...
80[info] resolving key references (59014 settings) ...
81[info] set current project to repo (in build file:/build/repo/)
82Execute setCrossScalaVersions: 3.8.1-RC1
83OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in writerJVM/crossScalaVersions
84OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in monixJVM/crossScalaVersions
85OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in stateNative/crossScalaVersions
86OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in stateNative/crossScalaVersions
87OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in validateJS/crossScalaVersions
88OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in validateJS/crossScalaVersions
89OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in optionJS/crossScalaVersions
90OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in optionJS/crossScalaVersions
91OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in monixJVM/crossScalaVersions
92OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in readerJVM/crossScalaVersions
93OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in writerJVM/crossScalaVersions
94OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in doobie/crossScalaVersions
95OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in doobie/crossScalaVersions
96OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in safeJVM/crossScalaVersions
97OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in safeJVM/crossScalaVersions
98OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in catsEffectJVM/crossScalaVersions
99OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in catsEffectJVM/crossScalaVersions
100OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in errorJVM/crossScalaVersions
101OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in errorJVM/crossScalaVersions
102OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in validateNative/crossScalaVersions
103OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in validateNative/crossScalaVersions
104OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in stateJS/crossScalaVersions
105OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in stateJS/crossScalaVersions
106OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in eitherNative/crossScalaVersions
107OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in eitherNative/crossScalaVersions
108OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in scalazNative/crossScalaVersions
109OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in scalazNative/crossScalaVersions
110OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in optionJVM/crossScalaVersions
111OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in optionJVM/crossScalaVersions
112OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in evalJS/crossScalaVersions
113OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in evalJS/crossScalaVersions
114OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in evalJVM/crossScalaVersions
115OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in evalJVM/crossScalaVersions
116OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in chooseNative/crossScalaVersions
117OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in chooseNative/crossScalaVersions
118OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in scalazJS/crossScalaVersions
119OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in scalazJS/crossScalaVersions
120OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in futureJS/crossScalaVersions
121OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in futureJS/crossScalaVersions
122OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in evalNative/crossScalaVersions
123OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in evalNative/crossScalaVersions
124OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in readerNative/crossScalaVersions
125OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in readerNative/crossScalaVersions
126OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in listJVM/crossScalaVersions
127OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in listJVM/crossScalaVersions
128OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in repo/crossScalaVersions
129OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in repo/crossScalaVersions
130OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in scalazJVM/crossScalaVersions
131OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in scalazJVM/crossScalaVersions
132OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in coreJS/crossScalaVersions
133OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in coreJS/crossScalaVersions
134OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in writerJS/crossScalaVersions
135OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in writerJS/crossScalaVersions
136OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in eitherJVM/crossScalaVersions
137OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in eitherJVM/crossScalaVersions
138OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in readerJS/crossScalaVersions
139OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in readerJS/crossScalaVersions
140OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in coreNative/crossScalaVersions
141OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in coreNative/crossScalaVersions
142OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in errorJS/crossScalaVersions
143OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in errorJS/crossScalaVersions
144OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in futureJVM/crossScalaVersions
145OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in futureJVM/crossScalaVersions
146OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in coreJVM/crossScalaVersions
147OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in coreJVM/crossScalaVersions
148OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in allJS/crossScalaVersions
149OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in allJS/crossScalaVersions
150OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in chooseJVM/crossScalaVersions
151OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in chooseJVM/crossScalaVersions
152OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in safeJS/crossScalaVersions
153OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in safeJS/crossScalaVersions
154OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in allJVM/crossScalaVersions
155OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in allJVM/crossScalaVersions
156OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in futureNative/crossScalaVersions
157OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in futureNative/crossScalaVersions
158OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in safeNative/crossScalaVersions
159OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in safeNative/crossScalaVersions
160OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in eitherJS/crossScalaVersions
161OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in eitherJS/crossScalaVersions
162OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in writerNative/crossScalaVersions
163OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in writerNative/crossScalaVersions
164OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in listJS/crossScalaVersions
165OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in listJS/crossScalaVersions
166OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in validateJVM/crossScalaVersions
167OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in validateJVM/crossScalaVersions
168OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in chooseJS/crossScalaVersions
169OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in chooseJS/crossScalaVersions
170OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in stateJVM/crossScalaVersions
171OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in stateJVM/crossScalaVersions
172OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in optionNative/crossScalaVersions
173OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in optionNative/crossScalaVersions
174OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in monixJS/crossScalaVersions
175OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in monixJS/crossScalaVersions
176OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in allNative/crossScalaVersions
177OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in allNative/crossScalaVersions
178OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in readerJVM/crossScalaVersions
179OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in errorNative/crossScalaVersions
180OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in errorNative/crossScalaVersions
181OpenCB::Changing crossVersion 3.3.5 -> 3.8.1-RC1 in listNative/crossScalaVersions
182OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.1-RC1) in listNative/crossScalaVersions
183[info] set current project to repo (in build file:/build/repo/)
184[info] Setting Scala version to 3.8.1-RC1 on 50 projects.
185[info] Switching Scala version on:
186[info] futureJS (3.8.1-RC1)
187[info] listJS (3.8.1-RC1)
188[info] errorJS (3.8.1-RC1)
189[info] futureJVM (3.8.1-RC1)
190[info] safeJVM (3.8.1-RC1)
191[info] listJVM (3.8.1-RC1)
192[info] safeNative (3.8.1-RC1)
193[info] futureNative (3.8.1-RC1)
194[info] evalNative (3.8.1-RC1)
195[info] doobie (3.8.1-RC1)
196[info] stateJVM (3.8.1-RC1)
197[info] optionJS (3.8.1-RC1)
198[info] validateJVM (3.8.1-RC1)
199[info] optionNative (3.8.1-RC1)
200[info] coreNative (3.8.1-RC1)
201[info] scalazJS (3.8.1-RC1)
202[info] monixJVM (3.8.1-RC1)
203[info] allJVM (3.8.1-RC1)
204[info] eitherJS (3.8.1-RC1)
205[info] chooseJS (3.8.1-RC1)
206[info] coreJS (3.8.1-RC1)
207[info] eitherJVM (3.8.1-RC1)
208[info] eitherNative (3.8.1-RC1)
209[info] writerJS (3.8.1-RC1)
210[info] readerJVM (3.8.1-RC1)
211[info] coreJVM (3.8.1-RC1)
212[info] monixJS (3.8.1-RC1)
213[info] readerJS (3.8.1-RC1)
214[info] writerJVM (3.8.1-RC1)
215[info] optionJVM (3.8.1-RC1)
216[info] chooseJVM (3.8.1-RC1)
217[info] writerNative (3.8.1-RC1)
218[info] allJS (3.8.1-RC1)
219[info] scalazNative (3.8.1-RC1)
220[info] evalJS (3.8.1-RC1)
221[info] errorNative (3.8.1-RC1)
222[info] stateNative (3.8.1-RC1)
223[info] * repo (3.8.1-RC1)
224[info] chooseNative (3.8.1-RC1)
225[info] stateJS (3.8.1-RC1)
226[info] allNative (3.8.1-RC1)
227[info] readerNative (3.8.1-RC1)
228[info] evalJVM (3.8.1-RC1)
229[info] safeJS (3.8.1-RC1)
230[info] validateJS (3.8.1-RC1)
231[info] scalazJVM (3.8.1-RC1)
232[info] errorJVM (3.8.1-RC1)
233[info] catsEffectJVM (3.8.1-RC1)
234[info] validateNative (3.8.1-RC1)
235[info] listNative (3.8.1-RC1)
236[info] Excluding projects:
237[info] Reapplying settings...
238[info] set current project to repo (in build file:/build/repo/)
239Execute mapScalacOptions: ,REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
240[info] Reapplying settings...
241[info] set current project to repo (in build file:/build/repo/)
242[info] Defining Global / credentials, allJS / credentials and 48 others.
243[info] The new values will be used by Compile / scalafmtOnly, Global / pgpSelectPassphrase and 400 others.
244[info] Run `last` for details.
245[info] Reapplying settings...
246[info] set current project to repo (in build file:/build/repo/)
247Execute excludeLibraryDependency: com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}
248[info] Reapplying settings...
249OpenCB::Failed to reapply settings in excludeLibraryDependency: Reference to undefined setting:
250
251 Global / allExcludeDependencies from Global / allExcludeDependencies (CommunityBuildPlugin.scala:331)
252 Did you mean evalJS / allExcludeDependencies ?
253 , retry without global scopes
254[info] Reapplying settings...
255[info] set current project to repo (in build file:/build/repo/)
256Execute removeScalacOptionsStartingWith: -P:wartremover
257[info] Reapplying settings...
258[info] set current project to repo (in build file:/build/repo/)
259[info] Defining monixJVM / Test / unmanagedSources
260[info] The new value will be used by monixJVM / Test / bspBuildTargetSourcesItem, monixJVM / Test / scalafmt and 1 others.
261[info] Run `last` for details.
262[info] Reapplying settings...
263[info] set current project to repo (in build file:/build/repo/)
264[success] Total time: 0 s, completed Jan 13, 2026, 7:21:25 PM
265Build config: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"21"},"sbt":{"commands":["set monixJVM/Test/unmanagedSources ~= (_.filterNot(_.getName == \"TaskEffectSpec.scala\"))"],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[]}
266Parsed config: Success(ProjectBuildConfig(ProjectsConfig(List(),Map()),Full,List()))
267Starting build...
268Projects: Set(futureJVM, safeJVM, listJVM, doobie, stateJVM, validateJVM, monixJVM, allJVM, eitherJVM, readerJVM, coreJVM, writerJVM, optionJVM, chooseJVM, evalJVM, errorJVM, catsEffectJVM)
269Starting build for ProjectRef(file:/build/repo/,writerJVM) (eff-writer)... [0/17]
270OpenCB::Exclude Scala3 specific scalacOption `REQUIRE:-source:3.8` in Scala 2.12.20 module Global
271OpenCB::Filter out '-deprecation', matches setting pattern '^-?-deprecation'
272OpenCB::Filter out '-feature', matches setting pattern '^-?-feature'
273Compile scalacOptions: -encoding, UTF-8, -language:existentials, -unchecked, -no-indent, -Ykind-projector, -Wunused:imports, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
274[info] compiling 27 Scala sources to /build/repo/core/jvm/target/scala-3.8.1-RC1/classes ...
275[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
276[warn] -- [E029] Pattern Match Exhaustivity Warning: /build/repo/core/shared/src/main/scala/org/atnos/eff/CollectedUnions.scala:15:4
277[warn] 15 | otherEffects match {
278[warn] | ^^^^^^^^^^^^
279[warn] |match may not be exhaustive.
280[warn] |
281[warn] |It would fail on pattern case: Vector0, _: scala.collection.immutable.Vector2[org.atnos.eff.Union[U, Any]], _: scala.collection.immutable.Vector3[org.atnos.eff.Union[U, Any]], _: scala.collection.immutable.Vector4[org.atnos.eff.Union[U, Any]], _: scala.collection.immutable.Vector5[org.atnos.eff.Union[U, Any]], _: scala.collection.immutable.Vector6[org.atnos.eff.Union[U, Any]]
282[warn] |(More unmatched cases are elided)
283[warn] |
284[warn] | longer explanation available when compiling with `-explain`
285[warn] -- [E029] Pattern Match Exhaustivity Warning: /build/repo/core/shared/src/main/scala/org/atnos/eff/CollectedUnions.scala:27:4
286[warn] 27 | otherEffects match {
287[warn] | ^^^^^^^^^^^^
288[warn] |match may not be exhaustive.
289[warn] |
290[warn] |It would fail on pattern case: Vector0, _: scala.collection.immutable.Vector2[org.atnos.eff.Union[U, Any]], _: scala.collection.immutable.Vector3[org.atnos.eff.Union[U, Any]], _: scala.collection.immutable.Vector4[org.atnos.eff.Union[U, Any]], _: scala.collection.immutable.Vector5[org.atnos.eff.Union[U, Any]], _: scala.collection.immutable.Vector6[org.atnos.eff.Union[U, Any]]
291[warn] |(More unmatched cases are elided)
292[warn] |
293[warn] | longer explanation available when compiling with `-explain`
294[warn] -- [E029] Pattern Match Exhaustivity Warning: /build/repo/core/shared/src/main/scala/org/atnos/eff/CollectedUnions.scala:36:4
295[warn] 36 | otherEffects match {
296[warn] | ^^^^^^^^^^^^
297[warn] |match may not be exhaustive.
298[warn] |
299[warn] |It would fail on pattern case: Vector0, _: scala.collection.immutable.Vector2[org.atnos.eff.Union[U, Any]], _: scala.collection.immutable.Vector3[org.atnos.eff.Union[U, Any]], _: scala.collection.immutable.Vector4[org.atnos.eff.Union[U, Any]], _: scala.collection.immutable.Vector5[org.atnos.eff.Union[U, Any]], _: scala.collection.immutable.Vector6[org.atnos.eff.Union[U, Any]]
300[warn] |(More unmatched cases are elided)
301[warn] |
302[warn] | longer explanation available when compiling with `-explain`
303[warn] -- [E029] Pattern Match Exhaustivity Warning: /build/repo/core/shared/src/main/scala/org/atnos/eff/Continuation.scala:31:4
304[warn] 31 | functions match {
305[warn] | ^^^^^^^^^
306[warn] |match may not be exhaustive.
307[warn] |
308[warn] |It would fail on pattern case: Vector0, _: scala.collection.immutable.Vector2[Any => org.atnos.eff.Eff[R, Any]], _: scala.collection.immutable.Vector3[Any => org.atnos.eff.Eff[R, Any]], _: scala.collection.immutable.Vector4[Any => org.atnos.eff.Eff[R, Any]], _: scala.collection.immutable.Vector5[Any => org.atnos.eff.Eff[R, Any]], _: scala.collection.immutable.Vector6[Any => org.atnos.eff.Eff[R, Any]]
309[warn] |(More unmatched cases are elided)
310[warn] |
311[warn] | longer explanation available when compiling with `-explain`
312[warn] -- [E029] Pattern Match Exhaustivity Warning: /build/repo/core/shared/src/main/scala/org/atnos/eff/Continuation.scala:48:6
313[warn] 48 | fs match {
314[warn] | ^^
315[warn] |match may not be exhaustive.
316[warn] |
317[warn] |It would fail on pattern case: Vector0, _: scala.collection.immutable.Vector2[Any => org.atnos.eff.Eff[R, Any]], _: scala.collection.immutable.Vector3[Any => org.atnos.eff.Eff[R, Any]], _: scala.collection.immutable.Vector4[Any => org.atnos.eff.Eff[R, Any]], _: scala.collection.immutable.Vector5[Any => org.atnos.eff.Eff[R, Any]], _: scala.collection.immutable.Vector6[Any => org.atnos.eff.Eff[R, Any]]
318[warn] |(More unmatched cases are elided)
319[warn] |
320[warn] | longer explanation available when compiling with `-explain`
321[warn] -- [E029] Pattern Match Exhaustivity Warning: /build/repo/core/shared/src/main/scala/org/atnos/eff/Unions.scala:29:8
322[warn] 29 | rest match {
323[warn] | ^^^^
324[warn] |match may not be exhaustive.
325[warn] |
326[warn] |It would fail on pattern case: Vector0, _: scala.collection.immutable.Vector2[org.atnos.eff.Union[R, Any]], _: scala.collection.immutable.Vector3[org.atnos.eff.Union[R, Any]], _: scala.collection.immutable.Vector4[org.atnos.eff.Union[R, Any]], _: scala.collection.immutable.Vector5[org.atnos.eff.Union[R, Any]], _: scala.collection.immutable.Vector6[org.atnos.eff.Union[R, Any]]
327[warn] |(More unmatched cases are elided)
328[warn] |
329[warn] | longer explanation available when compiling with `-explain`
330[warn] 7 warnings found
331[info] done compiling
332[info] compiling 6 Scala sources to /build/repo/writer/jvm/target/scala-3.8.1-RC1/classes ...
333[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
334[warn] one warning found
335[info] done compiling
336Starting build for ProjectRef(file:/build/repo/,stateJVM) (eff-state)... [1/17]
337Compile scalacOptions: -encoding, UTF-8, -language:existentials, -unchecked, -no-indent, -Ykind-projector, -Wunused:imports, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
338[info] compiling 6 Scala sources to /build/repo/state/jvm/target/scala-3.8.1-RC1/classes ...
339[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
340[warn] one warning found
341[info] done compiling
342Starting build for ProjectRef(file:/build/repo/,allJVM) (eff)... [2/17]
343Compile scalacOptions: -encoding, UTF-8, -language:existentials, -unchecked, -no-indent, -Ykind-projector, -Wunused:imports, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
344[info] compiling 5 Scala sources to /build/repo/option/jvm/target/scala-3.8.1-RC1/classes ...
345[info] compiling 6 Scala sources to /build/repo/eval/jvm/target/scala-3.8.1-RC1/classes ...
346[info] compiling 5 Scala sources to /build/repo/validate/jvm/target/scala-3.8.1-RC1/classes ...
347[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
348[info] compiling 6 Scala sources to /build/repo/either/jvm/target/scala-3.8.1-RC1/classes ...
349[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
350[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
351[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
352[warn] one warning found
353[info] done compiling
354[info] compiling 6 Scala sources to /build/repo/error/jvm/target/scala-3.8.1-RC1/classes ...
355[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
356[warn] one warning found
357[info] done compiling
358[info] compiling 5 Scala sources to /build/repo/reader/jvm/target/scala-3.8.1-RC1/classes ...
359[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
360[warn] one warning found
361[info] done compiling
362[info] compiling 5 Scala sources to /build/repo/list/jvm/target/scala-3.8.1-RC1/classes ...
363[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
364[warn] one warning found
365[info] done compiling
366[info] compiling 7 Scala sources to /build/repo/choose/jvm/target/scala-3.8.1-RC1/classes ...
367[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
368[warn] one warning found
369[info] done compiling
370[info] compiling 17 Scala sources to /build/repo/future/jvm/target/scala-3.8.1-RC1/classes ...
371[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
372[warn] one warning found
373[info] done compiling
374[info] compiling 6 Scala sources to /build/repo/safe/jvm/target/scala-3.8.1-RC1/classes ...
375[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
376[warn] one warning found
377[info] done compiling
378[warn] one warning found
379[info] done compiling
380[warn] one warning found
381[info] done compiling
382[warn] one warning found
383[info] done compiling
384[info] compiling 3 Scala sources to /build/repo/jvm/target/scala-3.8.1-RC1/classes ...
385[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
386[warn] one warning found
387[info] done compiling
388[info] compiling 30 Scala sources to /build/repo/jvm/target/scala-3.8.1-RC1/test-classes ...
389[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
390[warn] one warning found
391[info] done compiling
392[info] InferenceSpec
393[info]
394[info] All the examples should compile ok
395[info] Total for specification InferenceSpec
396[info] Finished in 61 ms
397[info] 0 example, 0 failure, 0 error
398[info] SafeEffectSpec
399[info] The Safe effect can be used to protect resources and computations
400[info] in the presence of exceptions.
401[info] + A protected action can be executed and will return a Throwable Either A
402[info] + An "attempted" action will return an exception inside the same stack if it fails
403[info] + An "attempted" action does not side-effect
404[info] + It is possible to add a "finalizer" which will be executed whether an action is successful or not
405[info] All the finalizers must be executed and their possible exceptions returned
406[info] + A finalizer must be executed after the full effect has been evaluated
407[info] Exceptions can be caught and recovered
408[info] + with no finalizer
409[info] + with a finalizer before the catch
410[info] + with a finalizer after the catch
411[info] + An exception can simply be ignored
412[info] + Only particular exceptions can be caught and recovered
413[info] + Safe effect can be mixed with other effects
414[info] + The Safe effect can be memoized
415[info] + Failed safe effects must not be memoized
416[info] Finalization will happen even if other effects are involved
417[info] + either right + ok
418[info] + either right + protect exception
419[info] + either left + ok
420[info] + either left + protect exception
421[info] + it works even with flatMapped eithers
422[info] Total for specification SafeEffectSpec
423[info] Finished in 827 ms
424[info] 18 examples, 1008 expectations, 0 failure, 0 error
425[info] ReadmeSpec
426[info] + run the first example
427[info] Total for specification ReadmeSpec
428[info] Finished in 68 ms
429[info] 1 example, 0 failure, 0 error
430[info] ContinuationSpec
431[info] + A function can run at the end of a Kleisli arrow into the Eff monad
432[info] Total for specification ContinuationSpec
433[info] Finished in 29 ms
434[info] 1 example, 100 expectations, 0 failure, 0 error
435[info] ReaderEffectSpec
436[info] + local can be used to "zoom" on a configuration
437[info] + localKleisli for the Kleisli effect
438[info] + localReader can be used to transform a "small" reader effect into a "bigger" one
439[info] modifyReader can be used to transform a "small" reader effect into a "bigger" one
440[info] + and stay in the same stack
441[info] + updateReader can be used to modify the read value (but keep the same type for that value)
442[info] Total for specification ReaderEffectSpec
443[info] Finished in 30 ms
444[info] 5 examples, 0 failure, 0 error
445[info] ActionSpec
446[info] The action stack can be used to
447[info] + compute values
448[info] + stop when there is an error
449[info] + display log messages
450[info] + collect warnings
451[info] + emit a warning then fail
452[info] + do an action or else warn
453[info] Total for specification ActionSpec
454[info] Finished in 34 ms
455[info] 6 examples, 0 failure, 0 error
456[info] ErrorEffectSpec
457[info] An action can be evaluated after another
458[info] + when the first action is ok
459[info] + even if there is an exception
460[info] An action can be evaluated, with another one
461[info] + if the first is successful, the second is not executed
462[info] + if the first is not successful, the second is executed
463[info] + Writer can be used with Error to get logs even if there is an exception
464[info] + A thrown exception can be ignored
465[info] + An action with a given failure type can be translated to an action with another failure type
466[info] + The error effect is stack-safe
467[info] Total for specification ErrorEffectSpec
468[info] Finished in 129 ms
469[info] 8 examples, 0 failure, 0 error
470[info] EffApplicativeSpec
471[info] + uses the applicative "sequencing" whereas >> uses the monadic sequencing
472[info] This means that *> will discard the left result but can still run 2 actions concurrently
473[info] + Eff values can be traversed with an applicative instance
474[info] + Eff.traverseA is stacksafe
475[info] + Eff.traverseA preserves concurrency
476[info] Interleaved applicative calls can be interpreted properly
477[info] + with no natural interpretation (see release notes for 4.0.2)
478[info] + with a natural interpretation (see release notes for 4.4.2)
479[info] Total for specification EffApplicativeSpec
480[info] Finished in 466 ms
481[info] 6 examples, 0 failure, 0 error
482[info] MemberImplicitsSpec
483[info]
484[info] tests for member implicits
485[info] Total for specification MemberImplicitsSpec
486[info] Finished in 3 ms
487[info] 0 example, 0 failure, 0 error
488[info] ExecutorServicesSpec
489[info] + Executor services can be created from an execution context
490[info] Total for specification ExecutorServicesSpec
491[info] Finished in 5 ms
492[info] 1 example, 0 failure, 0 error
493[info] EffSpec
494[info] * The Eff monad respects the laws wait for discipline to upgrade ScalaCheck to 0.13
495[info] + run the reader monad with a pure operation
496[info] + run the reader monad with a bind operation
497[info] + run the writer monad twice
498[info] + run a reader/writer action
499[info] + The Eff monad is stack safe with Writer
500[info] + The Eff monad is stack safe with Reader
501[info] + The Eff monad is stack safe with both Reader and Writer
502[info] + The Eff monad is tail recursive
503[info] + The Eff monad is stack safe with pure flatMaps
504[info] + It is possible to run a pure Eff value
505[info] + It is possible to run a Eff value with one effects
506[info] It is possible to run a Eff value with just one effect and detach it back,
507[info] + when the stack is Fx1[M]
508[info] + when the stack can be transformed to Fx1[M]
509[info] + when the stack is Fx1[M] and applicative
510[info] + when the stack can be transformed to Fx1[M] and applicative
511[info] + A stack can be added a new effect when the effect is not in stack
512[info] + A stack can be added a new effect when the effect is in stack
513[info] + An effect of the stack can be transformed into another one
514[info] + An effect of the stack can be translated into other effects on that stack
515[info] + An effect of the stack can be locally translated into other effects on that stack
516[info] + An effect can be intercepted and transformed to other values for the same effect
517[info] + An effect can be augmented with other effects
518[info] + An effect can be logged using a custom logger
519[info] Total for specification EffSpec
520[info] Finished in 301 ms
521[info] 24 examples, 420 expectations, 0 failure, 0 error, 1 pending
522[info] ValidateEffectSpec
523[info] + run the validate effect
524[info] + run the validate effect with nothing
525[info] `Ior`ish or warnings-oriented validation
526[info] + run resulting IorNel
527[info] + run with warnings
528[info] + run with warnings and errors
529[info] + run with errors and warning
530[info] + recover from wrong values
531[info] + recover from wrong values and tell errors
532[info] recover from several, monadic
533[info] + the first is catched
534[info] + all are catched
535[info] + the last is catched
536[info] recover from several, applicative
537[info] + the first is catched
538[info] + all are catched
539[info] + the last is catched
540[info] + recover, the whole list is catched
541[info] + run is stack safe with Validate
542[info] Total for specification ValidateEffectSpec
543[info] Finished in 188 ms
544[info] 16 examples, 0 failure, 0 error
545[info] OptionEffectSpec
546[info] + run the option monad
547[info] + run the option monad with nothing
548[info] + run the option monad with reader
549[info] + The Eff monad is stack safe with Option
550[info] Total for specification OptionEffectSpec
551[info] Finished in 29 ms
552[info] 4 examples, 0 failure, 0 error
553[info] StacksSpec
554[info] Some domains may use different effect stacks sharing some common effects.
555[info] When we want to use functions from 2 different domains we want to unify all the effects into one stack.
556[info] There are 2 ways to do this:
557[info] 1. each domain can define functions only requiring effects to be members of a given yet-undefined stack R
558[info] In that case it will be straightforward to combine functions from both domains.
559[info] 2. each domain can define functions for a given stack of effects
560[info] In that case we need to use the `into` method to adapt functions returning `Eff[Stack, A]` into `Eff[SuperStack, A]`
561[info] where `SuperStack` contains all the effects of `Stack`.
562[info] The following examples use a Hadoop domain for functions interacting with Hadoop and a S3 domain for functions interacting
563[info] with S3. Notably, the Hadoop stack contains a Reader effect to access the Hadoop configuration whereas the
564[info] S3 stack contains another Reader effect to access the S3 configuration. If we want to interact with both Hadoop and S3,
565[info] we define a HadoopS3 stack containing all the effects from the 2 stacks.
566[info] + Two stacks defined with open effects can be used together
567[info] + Two stacks using different effects can be used together with `into`
568[info] Total for specification StacksSpec
569[info] Finished in 9 ms
570[info] 2 examples, 0 failure, 0 error
571[info] EffLastSpec
572[info] + An action can run completely at the end, regardless of the number of flatmaps
573[info] + now with one very last action which fails, there should be no exception
574[info] + `addLast` run several times and flatMap, then last actions should be executed by reverse order
575[info] + the same result if `addLast` run at first of `for`
576[info] bracket last triggers the last action regardless of the effects at play
577[info] + either right + ok
578[info] + either right + protect exception
579[info] + either left + ok
580[info] + either left + protect exception
581[info] + An expression must still be protected with `thenFinally` if there are further flatMaps
582[info] Total for specification EffLastSpec
583[info] Finished in 89 ms
584[info] 9 examples, 405 expectations, 0 failure, 0 error
585[info] ChooseEffectSpec
586[info] An action can use some non-deterministic choice
587[info] + for lists
588[info] + for options
589[info] + The Choose effect must be stack-safe
590[info] Total for specification ChooseEffectSpec
591[info] Finished in 43 ms
592[info] 3 examples, 0 failure, 0 error
593[info] IntoPolyInstancesSpec
594[info] The IntoPoly implicit definitions must create lawful instances:
595[info] + intoAppendL2L
596[info] + intoAppendL2R
597[info] + intoAppendL3L
598[info] + intoAppendL3M
599[info] + intoAppendL3R
600[info] + intoAppendL1
601[info] + intoNoFxAppendL
602[info] + intoNoFxAppendR
603[info] Total for specification IntoPolyInstancesSpec
604[info] Finished in 40 ms
605[info] 8 examples, 0 failure, 0 error
606[info] FutureEffectSpec
607[info] + Future effects can work as normal values
608[info] + Future effects can be attempted
609[info] + Future effects can be executed concurrently
610[info] + Future effects are stacksafe with recursion
611[info] + An Future effect can be created from Either
612[info] + An Future forked computation can be timed out
613[info] + Simple Future calls can be memoized
614[info] + Attempted Future calls can be memoized
615[info] + Simple Future calls with timeout can be memoized
616[info] + Attempted Future calls with timeout can be memoized
617[info] + TimedFuture calls can be memoized with a memo effect
618[info] + addLast can be used to make sure an action executes when a future fails
619[info] + Future effects can be detached safely with detachA
620[info] ## RETRIES
621[info] + An effect can be retried until a condition becomes true
622[info] + It will return the latest value if the condition is still false
623[info] after all the durations have expired
624[info] Total for specification FutureEffectSpec
625[info] Finished in 4 seconds, 129 ms
626[info] 15 examples, 0 failure, 0 error
627[info] EvalEffectSpec
628[info] + run is stack safe with Eval
629[info] + attempt is stack safe with Eval
630[info] + recursion in Eval.defer is stack safe
631[info] Total for specification EvalEffectSpec
632[info] Finished in 193 ms
633[info] 3 examples, 0 failure, 0 error
634[info] WriterEffectSpec
635[info] + A writer effect can use a side-effecting fold to be evaluated
636[info] + A writer effect can use an Eval fold to be evaluated
637[info] Total for specification WriterEffectSpec
638[info] Finished in 7 ms
639[info] 2 examples, 0 failure, 0 error
640[info] IntoPolySpec
641[info] The Into typeclass is used to inject the effects of one stack into another stack containing at least the same effects
642[info] + a stack can be injected into itself
643[info] + a stack can be injected into another containing one prepended effect
644[info] + more examples
645[info] + One stack can be injected into another if there is a Member implicit relating the 2
646[info] Total for specification IntoPolySpec
647[info] Finished in 10 ms
648[info] 4 examples, 0 failure, 0 error
649[info] StateEffectSpec
650[info] + The state monad can be used to put/get state
651[info] + modify can be used to modify the current state
652[info] + The state monad works applicatively
653[info] A State[T, *] effect can be lifted into a State[S, *] effect
654[info] + provided there is a "lens" (a getter and a setter) from T to S
655[info] + with an implicit conversion
656[info] + Also from a stack to another
657[info] provided there is a "lens" and an IntoPoly instance from one stack to another
658[info] + The Eff monad is stack safe with State
659[info] Total for specification StateEffectSpec
660[info] Finished in 177 ms
661[info] 7 examples, 0 failure, 0 error
662[info] MemberSpec
663[info] for 3-element stacks:
664[info] inject / project must work at the value level
665[info] + for reader
666[info] + for writer
667[info] + for eval
668[info] + extract . inject === Option.apply
669[info] + project fold (accept, inject) === identity
670[info] for 4-element stacks:
671[info] inject / project must work at the value level
672[info] + for reader
673[info] + for writer
674[info] + for eval
675[info] + extract . inject === Option.apply
676[info] + project fold (accept, inject) === identity
677[info] + A MemberIn instance can be transformed with natural transformations
678[info] + A MemberInOut instance can be transformed with natural transformations
679[info] Total for specification MemberSpec
680[info] Finished in 78 ms
681[info] 12 examples, 210 expectations, 0 failure, 0 error
682[info] MembersSpec
683[info]
684[info] Some signature can be repetitive on some methods using effects (see #56):
685[info]
686[info] def foo[R :_foo :_bar :_baz](i: Int): Eff[R, Int]
687[info]
688[info] It is possible to "pack" them with the following type definition:
689[info]
690[info] type _effects = _foo &: _bar &&: _baz
691[info]
692[info] def foo[R :_effects](i: Int): Eff[R, Int] =
693[info] Eff.pure(1)
694[info] Total for specification MembersSpec
695[info] Finished in 3 ms
696[info] 0 example, 0 failure, 0 error
697[info] MemberInstancesSpec
698[info] The MemberInOut and Member implicit definitions must create lawful instances:
699[info] for m: MemberInOut m.extract(m.send(ta)) === Option(ta)
700[info] for m: Member m.project(union).fold(m.accept, m.inject) ==== union
701[info] MemberInOut instances
702[info] =====================
703[info] + MemberInOutOut1
704[info] + MemberInOut2L
705[info] + MemberInOut3L
706[info] + MemberInOutAppendL
707[info] Member instances
708[info] ================
709[info] + Member1
710[info] + Member2L
711[info] + Member3L
712[info] + Member4L
713[info] + Member4RL
714[info] + Member4RM
715[info] + Member4RR
716[info] + MemberAppend1R
717[info] + MemberAppendL
718[info] + Member2R
719[info] + Member3M
720[info] + MemberAppendR
721[info] + Member3R
722[info] Total for specification MemberInstancesSpec
723[info] Finished in 62 ms
724[info] 17 examples, 0 failure, 0 error
725[info] ListEffectSpec
726[info] + List effect example
727[info] + Empty list effect example
728[info] + The List effect is stack-safe
729[info] Total for specification ListEffectSpec
730[info] Finished in 31 ms
731[info] 3 examples, 0 failure, 0 error
732[info] EitherEffectSpec
733[info] + an Either value can be injected in the stack
734[info] + run the Either effect monad
735[info] + run the Either effect monad with nothing
736[info] + run the Either effect monad with reader
737[info] + run is stack safe with Either
738[info] + a left value can be caught and transformed to a right value
739[info] + a left value can be effectfully handled removing it from stack
740[info] + the left type can be modified with local in a different stack
741[info] + the left type can be run with local in the same stack
742[info] + the left type can be modified implicitly
743[info] exceptions can also be caught
744[info] + non fatal exceptions with a handler
745[info] + non fatal exceptions
746[info] left values can be accumulated in the applicative case if they have a Semigroup instance
747[info] + when running the effect
748[info] + runEitherU can also run the Either effect monad
749[info] + runEither can run two Either effects
750[info] Total for specification EitherEffectSpec
751[info] Finished in 80 ms
752[info] 15 examples, 411 expectations, 0 failure, 0 error
753Starting build for ProjectRef(file:/build/repo/,eitherJVM) (eff-either)... [3/17]
754Compile scalacOptions: -encoding, UTF-8, -language:existentials, -unchecked, -no-indent, -Ykind-projector, -Wunused:imports, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
755Starting build for ProjectRef(file:/build/repo/,evalJVM) (eff-eval)... [4/17]
756Compile scalacOptions: -encoding, UTF-8, -language:existentials, -unchecked, -no-indent, -Ykind-projector, -Wunused:imports, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
757Starting build for ProjectRef(file:/build/repo/,safeJVM) (eff-safe)... [5/17]
758Compile scalacOptions: -encoding, UTF-8, -language:existentials, -unchecked, -no-indent, -Ykind-projector, -Wunused:imports, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
759Starting build for ProjectRef(file:/build/repo/,chooseJVM) (eff-choose)... [6/17]
760Compile scalacOptions: -encoding, UTF-8, -language:existentials, -unchecked, -no-indent, -Ykind-projector, -Wunused:imports, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
761Starting build for ProjectRef(file:/build/repo/,listJVM) (eff-list)... [7/17]
762Compile scalacOptions: -encoding, UTF-8, -language:existentials, -unchecked, -no-indent, -Ykind-projector, -Wunused:imports, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
763Starting build for ProjectRef(file:/build/repo/,validateJVM) (eff-validate)... [8/17]
764Compile scalacOptions: -encoding, UTF-8, -language:existentials, -unchecked, -no-indent, -Ykind-projector, -Wunused:imports, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
765Starting build for ProjectRef(file:/build/repo/,optionJVM) (eff-option)... [9/17]
766Compile scalacOptions: -encoding, UTF-8, -language:existentials, -unchecked, -no-indent, -Ykind-projector, -Wunused:imports, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
767Starting build for ProjectRef(file:/build/repo/,coreJVM) (eff-core)... [10/17]
768Compile scalacOptions: -encoding, UTF-8, -language:existentials, -unchecked, -no-indent, -Ykind-projector, -Wunused:imports, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
769Starting build for ProjectRef(file:/build/repo/,errorJVM) (eff-error)... [11/17]
770Compile scalacOptions: -encoding, UTF-8, -language:existentials, -unchecked, -no-indent, -Ykind-projector, -Wunused:imports, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
771Starting build for ProjectRef(file:/build/repo/,monixJVM) (eff-monix)... [12/17]
772Compile scalacOptions: -encoding, UTF-8, -language:existentials, -unchecked, -no-indent, -Ykind-projector, -Wunused:imports, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
773[info] compiling 3 Scala sources to /build/repo/monix/jvm/target/scala-3.8.1-RC1/classes ...
774[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
775[warn] one warning found
776[info] done compiling
777Starting build for ProjectRef(file:/build/repo/,doobie) (eff-doobie)... [13/17]
778Compile scalacOptions: -encoding, UTF-8, -language:existentials, -unchecked, -no-indent, -Ykind-projector, -Wunused:imports, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
779[info] compiling 3 Scala sources to /build/repo/doobie/target/scala-3.8.1-RC1/classes ...
780[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
781[warn] one warning found
782[info] done compiling
783[info] compiling 2 Scala sources to /build/repo/doobie/target/scala-3.8.1-RC1/test-classes ...
784[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
785[warn] one warning found
786[info] done compiling
787[info] DoobieConnectionIOEffectSpec
788[info] + ConnectionIO effects can be converted to IO-like effects
789[info] Failures are properly handled
790[info] + in programs
791[info] + in strategy.before
792[info] + in strategy.after
793[info] + in strategy.oops
794[info] + in strategy.always
795[info] Total for specification DoobieConnectionIOEffectSpec
796[info] Finished in 777 ms
797[info] 6 examples, 0 failure, 0 error
798Starting build for ProjectRef(file:/build/repo/,catsEffectJVM) (eff-cats-effect)... [14/17]
799Compile scalacOptions: -encoding, UTF-8, -language:existentials, -unchecked, -no-indent, -Ykind-projector, -Wunused:imports, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
800[info] compiling 2 Scala sources to /build/repo/cats/jvm/target/scala-3.8.1-RC1/classes ...
801[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
802[warn] one warning found
803[info] done compiling
804[info] compiling 1 Scala source to /build/repo/cats/jvm/target/scala-3.8.1-RC1/test-classes ...
805[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
806[warn] one warning found
807[info] done compiling
808[info] io
809[info] + IO effects can work as normal values
810[info] + IO effects can be attempted
811[info] + IO effects are stacksafe with recursion
812[info] + Async boundaries can be introduced between computations
813[info] + IO effect is stacksafe with traverseA
814[info] + Simple IO effects can be memoized
815[info] + Attempted IO effects can be memoized
816[info] + Simple IO effects with timeout can be memoized
817[info] + Attempted IO effects with timeout can be memoized
818[info] + Failed IO effects must not be memoized
819[info] Total for specification io
820[info] Finished in 752 ms
821[info] 10 examples, 0 failure, 0 error
822Starting build for ProjectRef(file:/build/repo/,futureJVM) (eff-future)... [15/17]
823Compile scalacOptions: -encoding, UTF-8, -language:existentials, -unchecked, -no-indent, -Ykind-projector, -Wunused:imports, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
824Starting build for ProjectRef(file:/build/repo/,readerJVM) (eff-reader)... [16/17]
825Compile scalacOptions: -encoding, UTF-8, -language:existentials, -unchecked, -no-indent, -Ykind-projector, -Wunused:imports, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
826
827************************
828Build summary:
829[{
830 "module": "eff-writer",
831 "compile": {"status": "ok", "tookMs": 14445, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
832 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
833 "test-compile": {"status": "ok", "tookMs": 240, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
834 "test": {"status": "ok", "tookMs": 213, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
835 "publish": {"status": "skipped", "tookMs": 0},
836 "metadata": {
837 "crossScalaVersions": ["2.12.20"]
838}
839},{
840 "module": "eff-state",
841 "compile": {"status": "ok", "tookMs": 1619, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
842 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
843 "test-compile": {"status": "ok", "tookMs": 286, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
844 "test": {"status": "ok", "tookMs": 201, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
845 "publish": {"status": "skipped", "tookMs": 0},
846 "metadata": {
847 "crossScalaVersions": ["2.12.20"]
848}
849},{
850 "module": "eff",
851 "compile": {"status": "ok", "tookMs": 7994, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
852 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
853 "test-compile": {"status": "ok", "tookMs": 12173, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
854 "test": {"status": "ok", "tookMs": 9563, "passed": 189, "failed": 0, "ignored": 0, "skipped": 0, "total": 189, "byFramework": [{"framework": "specs2", "stats": {"passed": 189, "failed": 0, "ignored": 0, "skipped": 0, "total": 189}}]},
855 "publish": {"status": "skipped", "tookMs": 0},
856 "metadata": {
857 "crossScalaVersions": ["2.12.20"]
858}
859},{
860 "module": "eff-either",
861 "compile": {"status": "ok", "tookMs": 69, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
862 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
863 "test-compile": {"status": "ok", "tookMs": 123, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
864 "test": {"status": "ok", "tookMs": 125, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
865 "publish": {"status": "skipped", "tookMs": 0},
866 "metadata": {
867 "crossScalaVersions": ["2.12.20"]
868}
869},{
870 "module": "eff-eval",
871 "compile": {"status": "ok", "tookMs": 78, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
872 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
873 "test-compile": {"status": "ok", "tookMs": 140, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
874 "test": {"status": "ok", "tookMs": 122, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
875 "publish": {"status": "skipped", "tookMs": 0},
876 "metadata": {
877 "crossScalaVersions": ["2.12.20"]
878}
879},{
880 "module": "eff-safe",
881 "compile": {"status": "ok", "tookMs": 113, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
882 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
883 "test-compile": {"status": "ok", "tookMs": 182, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
884 "test": {"status": "ok", "tookMs": 151, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
885 "publish": {"status": "skipped", "tookMs": 0},
886 "metadata": {
887 "crossScalaVersions": ["2.12.20"]
888}
889},{
890 "module": "eff-choose",
891 "compile": {"status": "ok", "tookMs": 90, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
892 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
893 "test-compile": {"status": "ok", "tookMs": 127, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
894 "test": {"status": "ok", "tookMs": 115, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
895 "publish": {"status": "skipped", "tookMs": 0},
896 "metadata": {
897 "crossScalaVersions": ["2.12.20"]
898}
899},{
900 "module": "eff-list",
901 "compile": {"status": "ok", "tookMs": 98, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
902 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
903 "test-compile": {"status": "ok", "tookMs": 130, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
904 "test": {"status": "ok", "tookMs": 116, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
905 "publish": {"status": "skipped", "tookMs": 0},
906 "metadata": {
907 "crossScalaVersions": ["2.12.20"]
908}
909},{
910 "module": "eff-validate",
911 "compile": {"status": "ok", "tookMs": 83, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
912 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
913 "test-compile": {"status": "ok", "tookMs": 135, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
914 "test": {"status": "ok", "tookMs": 146, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
915 "publish": {"status": "skipped", "tookMs": 0},
916 "metadata": {
917 "crossScalaVersions": ["2.12.20"]
918}
919},{
920 "module": "eff-option",
921 "compile": {"status": "ok", "tookMs": 92, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
922 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
923 "test-compile": {"status": "ok", "tookMs": 113, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
924 "test": {"status": "ok", "tookMs": 118, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
925 "publish": {"status": "skipped", "tookMs": 0},
926 "metadata": {
927 "crossScalaVersions": ["2.12.20"]
928}
929},{
930 "module": "eff-core",
931 "compile": {"status": "ok", "tookMs": 41, "warnings": 6, "errors": 0, "sourceVersion": "3.8"},
932 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
933 "test-compile": {"status": "ok", "tookMs": 64, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
934 "test": {"status": "ok", "tookMs": 59, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
935 "publish": {"status": "skipped", "tookMs": 0},
936 "metadata": {
937 "crossScalaVersions": ["2.12.20"]
938}
939},{
940 "module": "eff-error",
941 "compile": {"status": "ok", "tookMs": 93, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
942 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
943 "test-compile": {"status": "ok", "tookMs": 112, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
944 "test": {"status": "ok", "tookMs": 115, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
945 "publish": {"status": "skipped", "tookMs": 0},
946 "metadata": {
947 "crossScalaVersions": ["2.12.20"]
948}
949},{
950 "module": "eff-monix",
951 "compile": {"status": "ok", "tookMs": 1182, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
952 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
953 "test-compile": {"status": "ok", "tookMs": 262, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
954 "test": {"status": "ok", "tookMs": 185, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
955 "publish": {"status": "skipped", "tookMs": 0},
956 "metadata": {
957 "crossScalaVersions": ["2.12.20"]
958}
959},{
960 "module": "eff-doobie",
961 "compile": {"status": "ok", "tookMs": 754, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
962 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
963 "test-compile": {"status": "ok", "tookMs": 1752, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
964 "test": {"status": "ok", "tookMs": 2026, "passed": 6, "failed": 0, "ignored": 0, "skipped": 0, "total": 6, "byFramework": [{"framework": "specs2", "stats": {"passed": 6, "failed": 0, "ignored": 0, "skipped": 0, "total": 6}}]},
965 "publish": {"status": "skipped", "tookMs": 0},
966 "metadata": {
967 "crossScalaVersions": ["2.12.20"]
968}
969},{
970 "module": "eff-cats-effect",
971 "compile": {"status": "ok", "tookMs": 999, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
972 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
973 "test-compile": {"status": "ok", "tookMs": 1423, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
974 "test": {"status": "ok", "tookMs": 2495, "passed": 10, "failed": 0, "ignored": 0, "skipped": 0, "total": 10, "byFramework": [{"framework": "specs2", "stats": {"passed": 10, "failed": 0, "ignored": 0, "skipped": 0, "total": 10}}]},
975 "publish": {"status": "skipped", "tookMs": 0},
976 "metadata": {
977 "crossScalaVersions": ["2.12.20"]
978}
979},{
980 "module": "eff-future",
981 "compile": {"status": "ok", "tookMs": 152, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
982 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
983 "test-compile": {"status": "ok", "tookMs": 218, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
984 "test": {"status": "ok", "tookMs": 162, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
985 "publish": {"status": "skipped", "tookMs": 0},
986 "metadata": {
987 "crossScalaVersions": ["2.12.20"]
988}
989},{
990 "module": "eff-reader",
991 "compile": {"status": "ok", "tookMs": 81, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
992 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
993 "test-compile": {"status": "ok", "tookMs": 147, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
994 "test": {"status": "ok", "tookMs": 159, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
995 "publish": {"status": "skipped", "tookMs": 0},
996 "metadata": {
997 "crossScalaVersions": ["2.12.20"]
998}
999}]
1000************************
1001[success] Total time: 73 s (0:01:13.0), completed Jan 13, 2026, 7:22:38 PM
1002[0JChecking patch project/plugins.sbt...
1003Checking patch project/build.properties...
1004Checking patch build.sbt...
1005Applied patch project/plugins.sbt cleanly.
1006Applied patch project/build.properties cleanly.
1007Applied patch build.sbt cleanly.