Build Logs
ryanstull/scalanullsafe • 3.8.0-RC2:2025-11-28
Errors
3
Warnings
21
Total Lines
339
1##################################
2Clonning https://github.com/ryanstull/scalanullsafe.git into /build/repo using revision 1.4.0
3##################################
4Note: switching to 'c3dfc29e80f5a5158fd5f974691bf161bd8e52c6'.
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
21Would override fixed Scala version: 3.3.5
22----
23Preparing build for 3.8.0-RC2
24Scala binary version found: 3.8
25Implicitly using source version 3.8
26Scala binary version found: 3.8
27Implicitly using source version 3.8
28Would try to apply common scalacOption (best-effort, sbt/mill only):
29Append: ,REQUIRE:-source:3.8
30Remove: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
31
32Try apply source patch:
33Path: build.sbt
34Pattern: val scala3 = "3.3.5"
35Replacement: val scala3 = "3.8.0-RC2"
36Starting compilation server
37Compiling project (Scala 3.7.3, JVM (17))
38Compiled project (Scala 3.7.3, JVM (17))
39Successfully applied pattern 'val scala3 = "3.3.5"' in build.sbt
40----
41Starting build for 3.8.0-RC2
42Execute tests: true
43sbt project found:
44Sbt version 1.10.10 is not supported, minimal supported version is 1.11.5
45Enforcing usage of sbt in version 1.11.5
46No prepare script found for project ryanstull/scalanullsafe
47##################################
48Scala version: 3.8.0-RC2
49Targets: com.ryanstull%scalanullsafe
50Project projectConfig: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"build.sbt","pattern":"val scala3 = \"3.3.5\"","replaceWith":"val scala3 = \"<SCALA_VERSION>\""}]}
51##################################
52Using extra scalacOptions: ,REQUIRE:-source:3.8
53Filtering out scalacOptions: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
54[sbt_options] declare -a sbt_options=()
55[process_args] java_version = '17'
56[copyRt] java9_rt = '/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_17_0_8/rt.jar'
57# Executing command line:
58java
59-Dfile.encoding=UTF-8
60-Dcommunitybuild.scala=3.8.0-RC2
61-Dcommunitybuild.project.dependencies.add=
62-Xmx7G
63-Xms4G
64-Xss8M
65-Dsbt.script=/root/.sdkman/candidates/sbt/current/bin/sbt
66-Dscala.ext.dirs=/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_17_0_8
67-jar
68/root/.sdkman/candidates/sbt/1.11.5/bin/sbt-launch.jar
69"setCrossScalaVersions 3.8.0-RC2"
70"++3.8.0-RC2 -v"
71"mapScalacOptions ",REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s" ",-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e""
72"set every credentials := Nil"
73"excludeLibraryDependency com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}"
74"removeScalacOptionsStartingWith -P:wartremover"
75
76moduleMappings
77"runBuild 3.8.0-RC2 """{"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"build.sbt","pattern":"val scala3 = \"3.3.5\"","replaceWith":"val scala3 = \"<SCALA_VERSION>\""}]}""" com.ryanstull%scalanullsafe"
78
79[info] welcome to sbt 1.11.5 (Eclipse Adoptium Java 17.0.8)
80[info] loading settings for project repo-build from akka.sbt, plugins.sbt...
81[info] loading project definition from /build/repo/project
82[info] compiling 2 Scala sources to /build/repo/project/target/scala-2.12/sbt-1.0/classes ...
83[info] Non-compiled module 'compiler-bridge_2.12' for Scala 2.12.20. Compiling...
84[info] Compilation completed in 8.762s.
85[info] done compiling
86/build/repo/build.sbt:41: warning: match may not be exhaustive.
87It would fail on the following inputs: None, Some((_, _))
88 CrossVersion.partialVersion(scalaVersion.value) match {
89 ^
90/build/repo/build.sbt:48: warning: match may not be exhaustive.
91It would fail on the following inputs: None, Some((_, _))
92 CrossVersion.partialVersion(scalaVersion.value) match {
93 ^
94/build/repo/build.sbt:59: warning: match may not be exhaustive.
95It would fail on the following inputs: None, Some((_, _))
96 CrossVersion.partialVersion(scalaVersion.value) match {
97 ^
98/build/repo/build.sbt:79: warning: match may not be exhaustive.
99It would fail on the following inputs: None, Some((_, _))
100 CrossVersion.partialVersion(scalaVersion.value) match {
101 ^
102/build/repo/build.sbt:84: warning: method in in trait ScopingSetting is deprecated (since 1.5.0): `in` is deprecated; migrate to slash syntax - https://www.scala-sbt.org/1.x/docs/Migrating-from-sbt-013x.html#slash
103 sourceDirectory in Jmh := (sourceDirectory in Test).value,
104 ^
105/build/repo/build.sbt:84: warning: method in in trait ScopingSetting is deprecated (since 1.5.0): `in` is deprecated; migrate to slash syntax - https://www.scala-sbt.org/1.x/docs/Migrating-from-sbt-013x.html#slash
106 sourceDirectory in Jmh := (sourceDirectory in Test).value,
107 ^
108/build/repo/build.sbt:85: warning: method in in trait ScopingSetting is deprecated (since 1.5.0): `in` is deprecated; migrate to slash syntax - https://www.scala-sbt.org/1.x/docs/Migrating-from-sbt-013x.html#slash
109 classDirectory in Jmh := (classDirectory in Test).value,
110 ^
111/build/repo/build.sbt:85: warning: method in in trait ScopingSetting is deprecated (since 1.5.0): `in` is deprecated; migrate to slash syntax - https://www.scala-sbt.org/1.x/docs/Migrating-from-sbt-013x.html#slash
112 classDirectory in Jmh := (classDirectory in Test).value,
113 ^
114/build/repo/build.sbt:86: warning: method in in trait ScopingSetting is deprecated (since 1.5.0): `in` is deprecated; migrate to slash syntax - https://www.scala-sbt.org/1.x/docs/Migrating-from-sbt-013x.html#slash
115 dependencyClasspath in Jmh := (dependencyClasspath in Test).value,
116 ^
117/build/repo/build.sbt:86: warning: method in in trait ScopingSetting is deprecated (since 1.5.0): `in` is deprecated; migrate to slash syntax - https://www.scala-sbt.org/1.x/docs/Migrating-from-sbt-013x.html#slash
118 dependencyClasspath in Jmh := (dependencyClasspath in Test).value,
119 ^
120/build/repo/build.sbt:87: warning: method in in trait ScopingSetting is deprecated (since 1.5.0): `in` is deprecated; migrate to slash syntax - https://www.scala-sbt.org/1.x/docs/Migrating-from-sbt-013x.html#slash
121 compile in Jmh := (compile in Jmh).dependsOn(compile in Test).value,
122 ^
123/build/repo/build.sbt:87: warning: method in in trait ScopingSetting is deprecated (since 1.5.0): `in` is deprecated; migrate to slash syntax - https://www.scala-sbt.org/1.x/docs/Migrating-from-sbt-013x.html#slash
124 compile in Jmh := (compile in Jmh).dependsOn(compile in Test).value,
125 ^
126/build/repo/build.sbt:87: warning: method in in trait ScopingSetting is deprecated (since 1.5.0): `in` is deprecated; migrate to slash syntax - https://www.scala-sbt.org/1.x/docs/Migrating-from-sbt-013x.html#slash
127 compile in Jmh := (compile in Jmh).dependsOn(compile in Test).value,
128 ^
129/build/repo/build.sbt:88: warning: method in in trait ScopingSetting is deprecated (since 1.5.0): `in` is deprecated; migrate to slash syntax - https://www.scala-sbt.org/1.x/docs/Migrating-from-sbt-013x.html#slash
130 run in Jmh := (run in Jmh).dependsOn(Keys.compile in Jmh).evaluated,
131 ^
132/build/repo/build.sbt:88: warning: method in in trait ScopingSetting is deprecated (since 1.5.0): `in` is deprecated; migrate to slash syntax - https://www.scala-sbt.org/1.x/docs/Migrating-from-sbt-013x.html#slash
133 run in Jmh := (run in Jmh).dependsOn(Keys.compile in Jmh).evaluated,
134 ^
135/build/repo/build.sbt:88: warning: method in in trait ScopingSetting is deprecated (since 1.5.0): `in` is deprecated; migrate to slash syntax - https://www.scala-sbt.org/1.x/docs/Migrating-from-sbt-013x.html#slash
136 run in Jmh := (run in Jmh).dependsOn(Keys.compile in Jmh).evaluated,
137 ^
138/build/repo/build.sbt:89: warning: method in in trait ScopingSetting is deprecated (since 1.5.0): `in` is deprecated; migrate to slash syntax - https://www.scala-sbt.org/1.x/docs/Migrating-from-sbt-013x.html#slash
139 skip in publish := true,
140 ^
141[info] loading settings for project root from build.sbt...
142[info] set current project to ScalaNullSafe (in build file:/build/repo/)
143Execute setCrossScalaVersions: 3.8.0-RC2
144OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in benchmarks/crossScalaVersions
145OpenCB::Changing crossVersion 3.8.0-RC2 -> 3.8.0-RC2 in root/crossScalaVersions
146[info] set current project to ScalaNullSafe (in build file:/build/repo/)
147[info] Setting Scala version to 3.8.0-RC2 on 2 projects.
148[info] Switching Scala version on:
149[info] * root (2.11.12, 2.12.8, 2.13.12, 3.8.0-RC2)
150[info] benchmarks (2.11.12, 2.12.8, 2.13.12, 3.8.0-RC2)
151[info] Excluding projects:
152[info] Reapplying settings...
153[info] set current project to ScalaNullSafe (in build file:/build/repo/)
154Execute mapScalacOptions: ,REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
155[info] Reapplying settings...
156[info] set current project to ScalaNullSafe (in build file:/build/repo/)
157[info] Defining Global / credentials, benchmarks / credentials, credentials
158[info] The new values will be used by Global / pgpSelectPassphrase, Global / pgpSigningKey and 9 others.
159[info] Run `last` for details.
160[info] Reapplying settings...
161[info] set current project to ScalaNullSafe (in build file:/build/repo/)
162Execute excludeLibraryDependency: com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}
163[info] Reapplying settings...
164OpenCB::Failed to reapply settings in excludeLibraryDependency: Reference to undefined setting:
165
166 Global / allExcludeDependencies from Global / allExcludeDependencies (CommunityBuildPlugin.scala:331)
167 Did you mean benchmarks / allExcludeDependencies ?
168 , retry without global scopes
169[info] Reapplying settings...
170[info] set current project to ScalaNullSafe (in build file:/build/repo/)
171Execute removeScalacOptionsStartingWith: -P:wartremover
172[info] Reapplying settings...
173[info] set current project to ScalaNullSafe (in build file:/build/repo/)
174[success] Total time: 0 s, completed Nov 28, 2025, 12:56:22 PM
175Build config: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"build.sbt","pattern":"val scala3 = \"3.3.5\"","replaceWith":"val scala3 = \"<SCALA_VERSION>\""}]}
176Parsed config: Success(ProjectBuildConfig(ProjectsConfig(List(),Map()),Full,List()))
177Starting build...
178Projects: Set(root)
179Starting build for ProjectRef(file:/build/repo/,root) (scalanullsafe)... [0/1]
180OpenCB::Exclude Scala3 specific scalacOption `REQUIRE:-source:3.8` in Scala 2.12.20 module Global
181Compile scalacOptions: -Wconf:msg=can be rewritten automatically under:s, -source:3.8
182[info] compiling 1 Scala source to /build/repo/target/scala-3.8.0-RC2/classes ...
183[warn] there was 1 deprecation warning; re-run with -deprecation for details
184[warn] one warning found
185[info] done compiling
186[info] compiling 2 Scala sources and 1 Java source to /build/repo/target/scala-3.8.0-RC2/test-classes ...
187[warn] there were 8 deprecation warnings; re-run with -deprecation for details
188[warn] one warning found
189[info] done compiling
190[info] Scala3Tests:
191[info] Extension methods
192[info] - should work
193[info] Multiple extension methods
194[info] - should work
1951
196Absent
197[info] Tests:
198[info] This
199[info] - should not be checked for null
200[info] Null
201[info] - should not cause NPE
202[info] A single element
203[info] - should not cause an NPE
204[info] A single element
205[info] - should return the right value
206[info] A single method call
207[info] - should not cause an NPE
208[info] One field access
209[info] - should not cause an NPE
210[info] One field access
211[info] - should return the right value
212[info] Two field accesses
213[info] - should not cause an NPE
214[info] Two field accesses
215[info] - should return the right value
216[info] Deeply nested field access
217[info] - should not cause an NPE
218[info] Deeply nested field access
219[info] - should return the right value
220[info] No-op method calls
221[info] - should not cause an NPE
222[info] Mixing field access and no-op method calls
223[info] - should not cause an NPE
224[info] Function calls with args
225[info] - should not cause an NPE
226[info] Mixing field access, various arities of function calls
227[info] - should not cause an NPE
228[info] Having a method call as the first element
229[info] - should not cause an NPE
230[info] Constructors
231[info] - should not cause an NPE
232[info] Static methods
233[info] - should not cause an NPE
234[info] Static methods followed by other accesses
235[info] - should not cause an NPE
236[info] Long package names
237[info] - should not cause NPE
238[info] Getting an subclass of anyval
239[info] - should not cause NPE
240[info] Expression of type unit
241[info] - should not cause NPE
242[info] Methods defined in the local scope
243[info] - should not cause NPE
244[info] Implicit methods
245[info] - should not cause NPE
246[info] opt
247[info] - should work for non-null
248[info] opt
249[info] - should work for null
250[info] opt(null)
251[info] - should equal None
252[info] Not null
253[info] - should work for non-null
254[info] Not null
255[info] - should work for null
256[info] Using custom default
257[info] - should work for absent case
258[info] Using custom default
259[info] - should work for present case
260[info] Using custom default
261[info] - should work for absent case with Int
262[info] Using custom default
263[info] - should work for present case with Int
264[info] Using custom default
265[info] - should work for absent case with Boolean
266[info] Using custom default
267[info] - should work for present case with Boolean
268[info] Using custom default
269[info] - should work for absent case with Double
270[info] Using custom default
271[info] - should work for present case with Double
272[info] Using custom default
273[info] - should work for absent case with Unit
274[info] ??
275[info] - should return default NPE would have occurred
276[info] ??
277[info] - should return default when desired field is null
278[info] ??
279[info] - should return actual field when it is present
280[info] ??
281[info] - should return second A without drilldown
282[info] ??
283[info] - should return second A with drilldown
284[info] ??
285[info] - should return default with drilldown
286[info] ??
287[info] - should only evaluate the minimum number of necessary expressions
288[info] Casting
289[info] - should not fail as the first transformation
290[info] Casting
291[info] - should not fail in the middle of a chain
292[info] Casting
293[info] - should not fail when the data is actually there.
294[info] Injecting a local function call
295[info] - should work
296[info] Injecting a local function call
297[info] - should work when null
298[info] Injecting a function call with an implicit
299[info] - should work
300[info] Injecting a method call
301[info] - should work
302[info] Multi-arg method
303[info] - should be null safe
304[info] Multi-arg method with predicate
305[info] - should be null safe
306[info] Nested function calls
307[info] - should allow null as input
308[info] Using an implicit class
309[info] - should not throw an exception
310[info] Using a user defined implicit class
311[info] - should not throw an exception
312[info] Using two different implicit classes
313[info] - should not throw an exception
314[info] Handling implicit defs
315[info] - should work
316[info] isNull
317[info] - should work
318
319************************
320Build summary:
321[{
322 "module": "scalanullsafe",
323 "compile": {"status": "ok", "tookMs": 9226, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
324 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
325 "test-compile": {"status": "ok", "tookMs": 4794, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
326 "test": {"status": "ok", "tookMs": 557, "passed": 62, "failed": 0, "ignored": 0, "skipped": 0, "total": 62, "byFramework": [{"framework": "unknown", "stats": {"passed": 62, "failed": 0, "ignored": 0, "skipped": 0, "total": 62}}]},
327 "publish": {"status": "skipped", "tookMs": 0},
328 "metadata": {
329 "crossScalaVersions": ["2.11.12", "2.12.8", "2.13.12", "3.3.5"]
330}
331}]
332************************
333[success] Total time: 28 s, completed Nov 28, 2025, 12:56:50 PM
334[0JChecking patch project/plugins.sbt...
335Checking patch project/build.properties...
336Checking patch build.sbt...
337Applied patch project/plugins.sbt cleanly.
338Applied patch project/build.properties cleanly.
339Applied patch build.sbt cleanly.