Build Logs
rayrobdod/string-context-parser-combinator • 3.8.0-RC3:2025-12-04
Errors
0
Warnings
19
Total Lines
663
1##################################
2Clonning https://github.com/rayrobdod/string-context-parser-combinator.git into /build/repo using revision 0.1.1
3##################################
4Note: switching to 'cb5e72cc6d004623956e4dfe1328e912ba661a69'.
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.0-RC3
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
31Try apply source patch:
32Path: build.sbt
33Pattern: "versions.json",
34Replacement: "versions.json"
35Starting compilation server
36Compiling project (Scala 3.7.3, JVM (21))
37Compiled project (Scala 3.7.3, JVM (21))
38Failed to apply pattern '"versions.json",' in build.sbt
39----
40Starting build for 3.8.0-RC3
41Execute tests: true
42sbt project found:
43Sbt version 1.10.7 is not supported, minimal supported version is 1.11.5
44Enforcing usage of sbt in version 1.11.5
45No prepare script found for project rayrobdod/string-context-parser-combinator
46##################################
47Scala version: 3.8.0-RC3
48Targets: name.rayrobdod%string-context-parser-combinator
49Project projectConfig: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"21"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"build.sbt","pattern":"\"versions.json\",","replaceWith":"\"versions.json\""}]}
50##################################
51Using extra scalacOptions: ,REQUIRE:-source:3.8
52Filtering out scalacOptions: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
53[sbt_options] declare -a sbt_options=()
54[process_args] java_version = '21'
55[copyRt] java9_rt = '/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_21/rt.jar'
56# Executing command line:
57java
58-Dfile.encoding=UTF-8
59-Xmx2G
60-Dcommunitybuild.scala=3.8.0-RC3
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_21
67-jar
68/root/.sdkman/candidates/sbt/1.11.5/bin/sbt-launch.jar
69"setCrossScalaVersions 3.8.0-RC3"
70"++3.8.0-RC3 -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-RC3 """{"projects":{"exclude":[],"overrides":{}},"java":{"version":"21"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"build.sbt","pattern":"\"versions.json\",","replaceWith":"\"versions.json\""}]}""" name.rayrobdod%string-context-parser-combinator"
78
79[info] welcome to sbt 1.11.5 (Eclipse Adoptium Java 21)
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 5 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.28s.
85[info] done compiling
86[info] loading settings for project repo from build.sbt...
87[info] resolving key references (29955 settings) ...
88[info] set current project to repo (in build file:/build/repo/)
89Execute setCrossScalaVersions: 3.8.0-RC3
90OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.16) in timeNative/crossScalaVersions
91OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC3 in baseJS3/crossScalaVersions
92OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC3) in baseJS3/crossScalaVersions
93OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC3 in uri3/crossScalaVersions
94OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC3) in uri3/crossScalaVersions
95OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC3 in xml3/crossScalaVersions
96OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC3) in xml3/crossScalaVersions
97OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC3 in jsonJS3/crossScalaVersions
98OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC3) in jsonJS3/crossScalaVersions
99OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC3 in base3/crossScalaVersions
100OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC3) in base3/crossScalaVersions
101OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC3 in timeJS3/crossScalaVersions
102OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC3 in jsonNative3/crossScalaVersions
103OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC3) in jsonNative3/crossScalaVersions
104OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.16) in jsonNative/crossScalaVersions
105OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC3 in timeNative3/crossScalaVersions
106OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC3) in timeNative3/crossScalaVersions
107OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.16) in baseNative/crossScalaVersions
108OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.16) in baseJS/crossScalaVersions
109OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC3) in timeJS3/crossScalaVersions
110OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.16) in time/crossScalaVersions
111OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.16) in timeJS/crossScalaVersions
112OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC3 in json3/crossScalaVersions
113OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC3) in json3/crossScalaVersions
114OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC3 in time3/crossScalaVersions
115OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC3) in time3/crossScalaVersions
116OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.16) in jsonJS/crossScalaVersions
117OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.16) in json/crossScalaVersions
118OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC3 in baseNative3/crossScalaVersions
119OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC3) in baseNative3/crossScalaVersions
120Build timeouts: 1, would retry
121Retrying build, retry 1/2, force Scala version:false, enable migration:
122[sbt_options] declare -a sbt_options=()
123[process_args] java_version = '21'
124[copyRt] java9_rt = '/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_21/rt.jar'
125# Executing command line:
126java
127-Dfile.encoding=UTF-8
128-Xmx2G
129-Dcommunitybuild.scala=3.8.0-RC3
130-Dcommunitybuild.project.dependencies.add=
131-Xmx7G
132-Xms4G
133-Xss8M
134-Dsbt.script=/root/.sdkman/candidates/sbt/current/bin/sbt
135-Dscala.ext.dirs=/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_21
136-jar
137/root/.sdkman/candidates/sbt/1.11.5/bin/sbt-launch.jar
138"setCrossScalaVersions 3.8.0-RC3"
139"++3.8.0-RC3 -v"
140"mapScalacOptions ",REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s" ",-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e""
141"set every credentials := Nil"
142"excludeLibraryDependency com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}"
143"removeScalacOptionsStartingWith -P:wartremover"
144
145moduleMappings
146"runBuild 3.8.0-RC3 """{"projects":{"exclude":[],"overrides":{}},"java":{"version":"21"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"build.sbt","pattern":"\"versions.json\",","replaceWith":"\"versions.json\""}]}""" name.rayrobdod%string-context-parser-combinator"
147
148[info] welcome to sbt 1.11.5 (Eclipse Adoptium Java 21)
149[info] loading settings for project repo-build from akka.sbt, plugins.sbt...
150[info] loading project definition from /build/repo/project
151[info] loading settings for project repo from build.sbt...
152[info] resolving key references (29955 settings) ...
153[info] set current project to repo (in build file:/build/repo/)
154Execute setCrossScalaVersions: 3.8.0-RC3
155OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.16) in timeNative/crossScalaVersions
156OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC3 in uri3/crossScalaVersions
157OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC3) in uri3/crossScalaVersions
158OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC3 in jsonJS3/crossScalaVersions
159OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC3) in jsonJS3/crossScalaVersions
160OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC3 in baseJS3/crossScalaVersions
161OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC3) in baseJS3/crossScalaVersions
162OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC3 in xml3/crossScalaVersions
163OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC3) in xml3/crossScalaVersions
164OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC3 in base3/crossScalaVersions
165OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC3) in base3/crossScalaVersions
166OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC3 in jsonNative3/crossScalaVersions
167OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC3) in jsonNative3/crossScalaVersions
168OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC3 in timeJS3/crossScalaVersions
169OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC3) in timeJS3/crossScalaVersions
170OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.16) in jsonNative/crossScalaVersions
171OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC3 in timeNative3/crossScalaVersions
172OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC3) in timeNative3/crossScalaVersions
173OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.16) in baseNative/crossScalaVersions
174OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.16) in baseJS/crossScalaVersions
175OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC3 in time3/crossScalaVersions
176OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC3) in time3/crossScalaVersions
177OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.16) in uri/crossScalaVersions
178OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.16) in time/crossScalaVersions
179OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.16) in timeJS/crossScalaVersions
180OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC3 in json3/crossScalaVersions
181OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC3) in json3/crossScalaVersions
182OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.16) in base/crossScalaVersions
183OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.16) in jsonJS/crossScalaVersions
184OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.16) in json/crossScalaVersions
185OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC3 in baseNative3/crossScalaVersions
186OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC3) in baseNative3/crossScalaVersions
187[info] set current project to repo (in build file:/build/repo/)
188[info] Setting Scala version to 3.8.0-RC3 on 11 projects.
189[info] Switching Scala version on:
190[info] base3 (3.8.0-RC3)
191[info] jsonNative3 (3.8.0-RC3)
192[info] jsonJS3 (3.8.0-RC3)
193[info] baseJS3 (3.8.0-RC3)
194[info] baseNative3 (3.8.0-RC3)
195[info] json3 (3.8.0-RC3)
196[info] time3 (3.8.0-RC3)
197[info] timeNative3 (3.8.0-RC3)
198[info] uri3 (3.8.0-RC3)
199[info] xml3 (3.8.0-RC3)
200[info] timeJS3 (3.8.0-RC3)
201[info] Excluding projects:
202[info] jsonNative (2.13.16)
203[info] json (2.13.16)
204[info] jsonJS2_12 (2.12.20)
205[info] uri (2.13.16)
206[info] baseNative2_12 (2.12.20)
207[info] jsonNative2_12 (2.12.20)
208[info] time2_12 (2.12.20)
209[info] json2_12 (2.12.20)
210[info] timeJS2_12 (2.12.20)
211[info] base (2.13.16)
212[info] baseJS2_12 (2.12.20)
213[info] timeNative2_12 (2.12.20)
214[info] timeJS (2.13.16)
215[info] baseJS (2.13.16)
216[info] time (2.13.16)
217[info] * repo (2.12.20)
218[info] timeNative (2.13.16)
219[info] jsonJS (2.13.16)
220[info] base2_12 (2.12.20)
221[info] uri2_12 (2.12.20)
222[info] baseNative (2.13.16)
223[info] Reapplying settings...
224[info] set current project to repo (in build file:/build/repo/)
225Execute mapScalacOptions: ,REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
226[info] Reapplying settings...
227[info] set current project to repo (in build file:/build/repo/)
228[info] Defining Global / credentials, base / credentials and 30 others.
229[info] The new values will be used by Global / pgpSelectPassphrase, Global / pgpSigningKey and 159 others.
230[info] Run `last` for details.
231[info] Reapplying settings...
232[info] set current project to repo (in build file:/build/repo/)
233Execute excludeLibraryDependency: com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}
234[info] Reapplying settings...
235OpenCB::Failed to reapply settings in excludeLibraryDependency: Reference to undefined setting:
236
237 Global / allExcludeDependencies from Global / allExcludeDependencies (CommunityBuildPlugin.scala:331)
238 Did you mean jsonJS2_12 / allExcludeDependencies ?
239 , retry without global scopes
240[info] Reapplying settings...
241[info] set current project to repo (in build file:/build/repo/)
242Execute removeScalacOptionsStartingWith: -P:wartremover
243[info] Reapplying settings...
244[info] set current project to repo (in build file:/build/repo/)
245[success] Total time: 0 s, completed Dec 4, 2025, 2:41:41 PM
246Build config: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"21"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"build.sbt","pattern":"\"versions.json\",","replaceWith":"\"versions.json\""}]}
247Parsed config: Success(ProjectBuildConfig(ProjectsConfig(List(),Map()),Full,List()))
248Starting build...
249Projects: Set(base3)
250Starting build for ProjectRef(file:/build/repo/,base3) (string-context-parser-combinator)... [0/1]
251OpenCB::Exclude Scala3 specific scalacOption `REQUIRE:-source:3.8` in Scala 2.12.20 module Global
252OpenCB::Filter out '-deprecation', matches setting pattern '^-?-deprecation'
253OpenCB::Filter out '-feature', matches setting pattern '^-?-feature'
254OpenCB::Filter out '-Xfatal-warnings', matches setting pattern '^-?-Xfatal-warnings'
255Compile scalacOptions: -encoding, utf8, -unchecked, -language:experimental.macros, -language:higherKinds, -language:implicitConversions, -Xkind-projector, -Wvalue-discard, -Wnonunit-statement, -Wunused:implicits, -Wunused:explicits, -Wunused:imports, -Wunused:locals, -Wunused:params, -Wunused:privates, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
256[info] compiling 52 Scala sources to /build/repo/Base/target/jvm-3/classes ...
257[warn] -- [E198] Unused Symbol Warning: /build/repo/Base/src/main/scala-3/VersionSpecificUnapplyExpr.scala:24:7
258[warn] 24 | {(value:Expr[Z]) => exprTrue},
259[warn] | ^^^^^
260[warn] | unused explicit parameter
261[warn] -- [E198] Unused Symbol Warning: /build/repo/Base/src/main/scala-3/typeclass/VersionSpecificEithered.scala:44:77
262[warn] 44 | given eitherUnitAny[Expr[_], B, Z](using ev:BiOptionally[Expr, B, Z])(using Quotes):BiEithered[Expr, Unit, B, Z] = BiEithered(
263[warn] | ^
264[warn] | unused implicit parameter
265[warn] -- [E198] Unused Symbol Warning: /build/repo/Base/src/main/scala-3/typeclass/VersionSpecificEithered.scala:53:77
266[warn] 53 | given eitherAnyUnit[Expr[_], A, Z](using ev:BiOptionally[Expr, A, Z])(using Quotes):BiEithered[Expr, A, Unit, Z] = BiEithered(
267[warn] | ^
268[warn] | unused implicit parameter
269[warn] three warnings found
270[info] done compiling
271[info] compiling 6 Scala sources to /build/repo/Base/target/jvm-3/test-classes ...
272[warn] -- [E198] Unused Symbol Warning: /build/repo/Base/src/test/scala-3/PointerSpacesCompat.scala:4:18
273[warn] 4 | inline def apply(v2:Int, v3:Int) = (" " * v3) + "^"
274[warn] | ^^
275[warn] | unused explicit parameter
276[warn] one warning found
277[warn] one warning found
278[info] done compiling
279name.rayrobdod.stringContextParserCombinator.InterpolatorTest.optionally.PossessiveTest:
280 + when input is empty, then returns None 0.024s
281 + when input has length 1, then returns some with that value 0.002s
282 + when input has length two-or-greater, then returns some with first value 0.0s
283name.rayrobdod.stringContextParserCombinator.InterpolatorTest.repeat.ZeroOrOnePosessive:
284 + does not match empty input 0.024s
285 + matches single input 0.002s
286 + matches multiple input 0.001s
287name.rayrobdod.stringContextParserCombinator.ExtractorTest.void.VoidedWidenedOfType:
288 + when base matches on an input, then dut matches on unit input 0.024s
289 + when base not matches on an input, then dut matches on unit input 0.001s
290 + when base fails on an input, then dut fails on unit input 0.004s
291name.rayrobdod.stringContextParserCombinator.ExtractorTest.repeat.ZeroOrMoreLazy:
292 + when input has length 0 and scrutinee has length 0, then matches 0.024s
293 + when input has length 0 and scrutinee has length 1, then not matches 0.001s
294 + when input has length 1 and scrutinee has length 0, then matches 0.005s
295 + when input has length 1 and scrutinee has length 1, then not matches 0.001s
296 + when input has length 1 and scrutinee has length 2, then not matches 0.0s
297 + when input has length 2 and scrutinee has length 0, then matches 0.001s
298 + when input has length 2 and scrutinee has length 1, then not matches 0.001s
299 + when input has length 2 and scrutinee has length 2, then not matches 0.001s
300 + when input has length 2 and scrutinee has length 3, then not matches 0.0s
301 + will backtrack 0.007s
302name.rayrobdod.stringContextParserCombinator.InterpolatorTest.filter.IsEven:
303 + if base parser fails, parser passes through the failure 0.0s
304 + if base parser succeeds and predicate succeeds for all branches, parser passes through the success 0.0s
305 + if base parser succeeds and predicate fails for all branches, returns a failure including the filter description 0.004s
306name.rayrobdod.stringContextParserCombinator.ExtractorTest.repeat.ZeroOrMore:
307 + when input has length 0 and scrutinee has length 0, then matches 0.0s
308 + when input has length 0 and scrutinee has length 1, then not matches 0.001s
309 + when input has length 1 and scrutinee has length 0, then not matches 0.005s
310 + when input has length 1 and scrutinee has length 1, then matches 0.001s
311 + when input has length 1 and scrutinee has length 2, then not matches 0.0s
312 + when input has length 2 and scrutinee has length 0, then not matches 0.001s
313 + when input has length 2 and scrutinee has length 1, then not matches 0.0s
314 + when input has length 2 and scrutinee has length 2, then matches 0.0s
315 + when input has length 2 and scrutinee has length 3, then not matches 0.001s
316 + will backtrack 0.006s
317name.rayrobdod.stringContextParserCombinator.ExtractorTest.orElse.IsStringOrElseIsString:
318 + when string is left and scrutinee is left, then matches 0.004s
319 + when string is left and scrutinee is right, then not matches 0.0s
320 + when string is right and scrutinee is left, then not matches 0.001s
321 + when string is right and scrutinee is right, then matches 0.0s
322 + throws if string is neither 0.006s
323name.rayrobdod.stringContextParserCombinator.ExtractorTest.repeat.ZeroOrMorePossessive:
324 + when input has length 0 and scrutinee has length 0, then matches 0.0s
325 + when input has length 0 and scrutinee has length 1, then not matches 0.001s
326 + when input has length 1 and scrutinee has length 0, then not matches 0.009s
327 + when input has length 1 and scrutinee has length 1, then matches 0.001s
328 + when input has length 1 and scrutinee has length 2, then not matches 0.0s
329 + when input has length 2 and scrutinee has length 0, then not matches 0.001s
330 + when input has length 2 and scrutinee has length 1, then not matches 0.0s
331 + when input has length 2 and scrutinee has length 2, then matches 0.001s
332 + when input has length 2 and scrutinee has length 3, then not matches 0.005s
333 + will not backtrack 0.005s
334name.rayrobdod.stringContextParserCombinator.InterpolatorTest.optionally.GreedyTest:
335 + when input is empty, then returns None 0.001s
336 + when input has length 1, then returns some with that value 0.001s
337 + when input has length two-or-greater, then returns some with first value 0.0s
338name.rayrobdod.stringContextParserCombinator.InterpolatorTest.Pass:
339 + returns unit when the input is empty 0.001s
340 + Returns unit when the next input is a char 0.0s
341 + Returns unit when the next input is an expr 0.0s
342name.rayrobdod.stringContextParserCombinator.ExtractorTest.void.VoidedCharIn:
343 + when base matches on an input, then dut matches on unit input 0.0s
344 + when base fails on an input, then dut fails on unit input 0.001s
345name.rayrobdod.stringContextParserCombinator.InterpolatorTest.map.BarToFoo:
346 + Returns the mapped Foo when the next input is an a Expr Bar 0.001s
347name.rayrobdod.stringContextParserCombinator.typeclass.repeated.IdFromSplicesToList:
348 + Nil 0.002s
349 + Zero 0.001s
350 + Scalar 0.002s
351 + Splice 0.004s
352 + Mix 0.001s
353name.rayrobdod.stringContextParserCombinator.InterpolatorTest.repeat.ZeroOrMoreGreedy:
354 + matches empty input 0.0s
355 + matches single input 0.0s
356 + matches multiple input 0.0s
357 + matches single input (with backtracking) 0.002s
358 + matches multiple input (with backtracking) 0.007s
359 + matches empty input (with andThen) 0.001s
360 + does not match partial child and has cut 0.0s
361 + does not match full child followed by unrelated 0.001s
362 + does not match full child followed by partial child and has cut 0.0s
363name.rayrobdod.stringContextParserCombinator.ExtractorTest.repeat.ZeroOrOne:
364 + when input has length 0 and scrutinee has length 0, then matches 0.006s
365 + when input has length 0 and scrutinee has length 1, then not matches 0.0s
366 + when input has length 1 and scrutinee has length 0, then not matches 0.001s
367 + when input has length 1 and scrutinee has length 1, then matches 0.0s
368 + when input has length 1 and scrutinee has length 2, then not matches 0.0s
369 + when input has length 2 and scrutinee has length 0, then not matches 0.001s
370 + when input has length 2 and scrutinee has length 1, then matches 0.0s
371 + when input has length 2 and scrutinee has length 2, then not matches 0.001s
372 + when input has length 2 and scrutinee has length 3, then not matches 0.006s
373name.rayrobdod.stringContextParserCombinator.ExtractorTest.repeat.TwoOrMoreWithDelimiter:
374 + when input has length 1, throws and reports expecting the delimiter 0.0s
375name.rayrobdod.stringContextParserCombinator.InterpolatorTest.End:
376 + returns unit when the input is empty 0.0s
377 + throws when the next value is a character 0.001s
378 + throws when the next input is an expr 0.0s
379name.rayrobdod.stringContextParserCombinator.ExtractorTest.andThen.DigitAndThenAlpha:
380 + throws when the input is empty 0.0s
381 + throws when expression has only one char; points at EOF 0.001s
382 + passes when expression has two matching chars 0.0s
383 + throws when expression has incorrect first char; points at first char 0.001s
384 + throws when expression has incorrect second char; points at second char 0.0s
385name.rayrobdod.stringContextParserCombinator.ExtractorTest.andThen.TildeGt:
386 + Rejects a left-hand side that is not a void interpolator 0.025s
387name.rayrobdod.stringContextParserCombinator.InterpolatorTest.andThen.TildeGt:
388 + Rejects a left-hand side that is not a void interpolator 0.032s
389name.rayrobdod.stringContextParserCombinator.InterpolatorTest.CharWhere.IsAsciiDigit:
390 + throws when the input is empty 0.0s
391 + throws when the next input is an expr 0.001s
392 + returns 0 when input is '0' 0.0s
393 + returns 9 when input is '9' 0.0s
394 + throws when the next input is the character 'a' 0.0s
395 + throws when the next input is the character '/' 0.001s
396 + throws when the next input is the character ':' 0.003s
397 + throws when the next input is the character '\\u0000' 0.0s
398 + throws when the next input is the character '\\uFFFF' 0.001s
399name.rayrobdod.stringContextParserCombinator.ExtractorTest.End:
400 + does match an empty input 0.0s
401 + throws when the next value is a character 0.001s
402 + throws when the next input is an expr 0.002s
403name.rayrobdod.stringContextParserCombinator.InterpolatorTest.ComboAndThenRepeat:
404 + If the repeat is permissibly empty and right fails, then fails and shows both inputs as expected options 0.002s
405 + If the repeat is permissibly empty and right succeeds, then result is a success 0.001s
406 + If the repeat has consumed input, then the result matches that failure 0.0s
407 + missing right with any repeat fails and shows both inputs as options 0.001s
408 + unexpected right with any repeat fails and shows both inputs as options 0.0s
409 + input too short for repeat 0.002s
410 + input too long for repeat 0.0s
411 + pattern.repeat(Greedy) andThen subset 0.001s
412 + pattern.repeat(Greedy) andThen subset twice 0.0s
413 + pattern.repeat(Possessive) andThen subset 0.0s
414 + unexpected right with any repeat and delimiter fails and shows delimiter and right as options 0.001s
415 + successful with delimiter 0.0s
416 + right associative variant of "'[' ~ 'a'.rep(',') ~ ']' reports the delimiter as an option when the suffix is not found" 0.001s
417 + '[' ~ 'a'.rep(',') ~ ']' reports the delimiter as an option when the suffix is not found 0.0s
418name.rayrobdod.stringContextParserCombinator.ExtractorTest.OfType:
419 + throws when the input is empty 0.0s
420 + throws when the next value is a character 0.001s
421 + Returns the scrutinee when the next input is an expr 0.002s
422name.rayrobdod.stringContextParserCombinator.ExtractorTest.contramap.BarToFoo:
423 + Returns the mapped Foo when the next input is an Expr and the scrutinee is a Bar 0.004s
424name.rayrobdod.stringContextParserCombinator.InterpolatorTest.repeat.ZeroOrMoreLazy:
425 + matches empty input 0.001s
426 + matches single input 0.002s
427 + matches multiple input 0.0s
428 + matches single input with backtracking 0.001s
429 + matches multiple input with backtracking 0.0s
430name.rayrobdod.stringContextParserCombinator.InterpolatorTest.CharWhere.ConstTrue:
431 + throws when the input is empty 0.0s
432 + throws when the next input is an expr 0.001s
433 + returns the character when the input is a single-character string ('\\u0000') 0.0s
434 + returns the character when the input is a single-character string ('a') 0.0s
435 + returns the character when the input is a single-character string ('\\uFFFF') 0.001s
436 + Returns the first character of a multiple-character input 0.003s
437name.rayrobdod.stringContextParserCombinator.ExtractorTest.repeat.ZeroOrMoreWithDelimiter:
438 + when input has length 0 and scrutinee has length 0, then matches 0.0s
439 + when input has length 0 with scrutinee has length 1, then not matches 0.0s
440 + when input has length 1 with scrutinee has length 0, then not matches 0.0s
441 + when input has length 1 and scrutinee has length 1, then matches 0.0s
442 + when input has length 1 with scrutinee has length 2, then not matches 0.001s
443 + when input has length 5 with delims and scrutinee has length 5, then matches 0.005s
444 + when input has length 5 sans delims, then pattern only matches one input 0.0s
445name.rayrobdod.stringContextParserCombinator.InterpolatorTest.repeat.OneOrMorePosessive:
446 + does not match empty input 0.0s
447 + matches single input 0.001s
448 + matches multiple input 0.002s
449name.rayrobdod.stringContextParserCombinator.ExtractorTest.hide:
450 + hide does not affect parse success 0.001s
451 + on failure, when second branch is `.hide`, don't list that branch in expect 0.001s
452 + on failure, when first branch is `.hide`, don't list that branch in expect 0.002s
453 + When all branches are hidden, just says parse failed without an expects 0.0s
454name.rayrobdod.stringContextParserCombinator.ExtractorTest.repeat.OneOrMore:
455 + when input has length 0 then throws 0.001s
456 + when input has length 1 and scrutinee has length 0, then not matches 0.0s
457 + when input has length 1 and scrutinee has length 1, then matches 0.001s
458 + when input has length 1 and scrutinee has length 2, then not matches 0.0s
459 + when input has length 2 and scrutinee has length 0, then not matches 0.0s
460 + when input has length 2 and scrutinee has length 1, then not matches 0.0s
461 + when input has length 2 and scrutinee has length 2, then matches 0.001s
462 + when input has length 2 and scrutinee has length 3, then not matches 0.0s
463name.rayrobdod.stringContextParserCombinator.InterpolatorTest.repeat.ZeroOrOneLazy:
464 + does not match empty input 0.005s
465 + matches single input 0.0s
466 + matches multiple input 0.001s
467name.rayrobdod.stringContextParserCombinator.ExtractorTest.widenWith.IsInstanceOf:
468 + on match 0.001s
469 + on not match 0.001s
470name.rayrobdod.stringContextParserCombinator.InterpolatorTest.CharWhere.ConstFalse:
471 + throws when the input is empty 0.001s
472 + throws when the next input is an expr 0.0s
473 + throws when the next input is the character '\\u0000' 0.0s
474 + throws when the next input is the character 'a' 0.001s
475 + throws when the next input is the character '\\uFFFF' 0.0s
476 + throws when the next input is the character '\\uD83D' 0.0s
477name.rayrobdod.stringContextParserCombinator.InterpolatorTest.andThen.DigitAndThenAlpha:
478 + throws when the input is empty 0.001s
479 + throws when expression has only one char; points at EOF 0.003s
480 + passes when expression has two matching chars 0.0s
481 + throws when expression has incorrect first char; points at first char 0.001s
482 + throws when expression has incorrect second char; points at second char 0.0s
483name.rayrobdod.stringContextParserCombinator.InterpolatorTest.CodePointWhere.ConstFalse:
484 + throws when the input is empty 0.001s
485 + throws when the next input is an expr 0.0s
486 + throws when the next input is the character '\\u0000' 0.001s
487 + throws when the next input is the character 'a' 0.0s
488 + throws when the next input is the character '\\uFFFF' 0.0s
489 + throws when the next input is the character '\\uD83D' 0.0s
490name.rayrobdod.stringContextParserCombinator.ExtractorTest.CodePointWhere.ConstTrue:
491 + throws when the input is empty 0.001s
492 + throws when the next input is an expr 0.0s
493 + returns Some(List()) when input is '\\u0000' and scrutinee is '\\u0000' 0.001s
494 + returns Some(List()) when input is 'a' and scrutinee is '\\u0000' 0.002s
495 + returns Some(List()) when input is '\\uFFFF' and scrutinee is '\\u0000' 0.0s
496 + returns Some(List()) when input is '\\U{10FFFF}' and scrutinee is '\\u0000' 0.0s
497 + matches the entire surrogate pair 0.0s
498name.rayrobdod.stringContextParserCombinator.ExtractorTest.CodePointWhere.ConstFalse:
499 + throws when the input is empty 0.0s
500 + throws when the next input is an expr 0.001s
501 + throws when the next input is the character '\\u0000' 0.0s
502 + throws when the next input is the character 'a' 0.0s
503 + throws when the next input is the character '\\uFFFF' 0.0s
504 + throws when the next input is the character '\\uD83D' 0.001s
505name.rayrobdod.stringContextParserCombinator.ExtractorTest.repeat.RepeatedRepeated:
506 + does not hang indefinitely 0.001s
507name.rayrobdod.stringContextParserCombinator.InterpolatorTest.OfType:
508 + throws when the input is empty 0.0s
509 + throws when the next value is a character 0.0s
510 + Returns the next input when the next input is an expr 0.001s
511name.rayrobdod.stringContextParserCombinator.InterpolatorTest.repeat.OneOrMoreGreedy:
512 + does not match empty input 0.0s
513 + matches single input 0.001s
514 + matches multiple input 0.001s
515name.rayrobdod.stringContextParserCombinator.ExtractorTest.orElse.PartsThatMayConsumeInput:
516 + even if left branch consumes input, then backtracking 0.001s
517name.rayrobdod.stringContextParserCombinator.ExtractorTest.CharWhere.ConstFalse:
518 + throws when the input is empty 0.001s
519 + throws when the next input is an expr 0.0s
520 + throws when the next input is the character '\\u0000' 0.0s
521 + throws when the next input is the character 'a' 0.001s
522 + throws when the next input is the character '\\uFFFF' 0.0s
523 + throws when the next input is the character '\\uD83D' 0.0s
524name.rayrobdod.stringContextParserCombinator.InterpolatorTest.CodePointWhere.ConstTrue:
525 + throws when the input is empty 0.001s
526 + throws when the next input is an expr 0.0s
527 + returns \u0000 when input is '\\u0000' 0.0s
528 + returns a when input is 'a' 0.0s
529 + returns when input is '\\uFFFF' 0.0s
530 + returns when input is '\\U{10FFFF}' 0.009s
531 + matches the entire surrogate pair 0.0s
532name.rayrobdod.stringContextParserCombinator.ExtractorTest.repeat.PassRepeated:
533 + does not hang indefinitely 0.001s
534name.rayrobdod.stringContextParserCombinator.InterpolatorTest.optionally.LazyTest:
535 + when input is empty, then returns None 0.001s
536 + when input has length 1, then returns None 0.0s
537 + when input has length two-or-greater, then returns None 0.0s
538 + when input has length 1, will backtrack to return Some 0.0s
539name.rayrobdod.stringContextParserCombinator.InterpolatorTest.repeat.OneOrMoreLazy:
540 + does not match empty input 0.0s
541 + matches single input 0.0s
542 + matches multiple input 0.001s
543name.rayrobdod.stringContextParserCombinator.InterpolatorTest.repeat.WithDelimiter:
544 + matches empty input 0.0s
545 + matches single input 0.0s
546 + matches multiple input 0.004s
547 + `a{2,}` with delim `b` does not match `a` and report expecting 'b' 0.001s
548name.rayrobdod.stringContextParserCombinator.InterpolatorTest.CodePointWhere.IsPlayingCard:
549 + throws when the input is empty 0.0s
550 + throws when the next input is an expr 0.001s
551 + returns 🂡 when input is '\\U{1F0A1}' 0.0s
552 + returns 🂨 when input is '\\U{1F0A8}' 0.0s
553 + returns 🂮 when input is '\\U{1F0AE}' 0.0s
554 + throws when the next input is the character '\\u0000' 0.0s
555 + throws when the next input is the character '\\U{1F0A0}' 0.0s
556 + throws when the next input is the character '\\U{1F0AF}' 0.0s
557 + throws when the next input is the character '\\uFFFF' 0.0s
558 + throws when the next input is the character '\\U{10FFFF}' 0.0s
559name.rayrobdod.stringContextParserCombinator.InterpolatorTest.hide:
560 + hide does not affect parse success 0.001s
561 + on failure, when second branch is `.hide`, don't list that branch in expect 0.0s
562 + on failure, when first branch is `.hide`, don't list that branch in expect 0.001s
563 + When all branches are hidden, just says parse failed without an expects 0.004s
564name.rayrobdod.stringContextParserCombinator.InterpolatorTest.orElse:
565 + `Success | Whatever` returns that success 0.001s
566 + `Advanced | Whatever` returns that failure 0.0s
567 + `NonConsume | Success` returns that success 0.001s
568 + `NonConsume | Advanced` returns a failure that mentions only the cut branch 0.0s
569 + `NonConsume | NonConsume` returns a failure that mentions both branches 0.0s
570name.rayrobdod.stringContextParserCombinator.ExtractorTest.CharWhere.ConstTrue:
571 + throws when the input is empty 0.003s
572 + throws when the next input is an expr 0.0s
573 + returns Some(List()) when input is '\\u0000' and scrutinee is '\\u0000' 0.0s
574 + returns Some(List()) when input is 'a' and scrutinee is '\\u0000' 0.0s
575 + returns Some(List()) when input is '\\uFFFF' and scrutinee is '\\u0000' 0.001s
576name.rayrobdod.stringContextParserCombinator.typeclass.repeated.QuotedConcatenateStringTest:
577 + 0 0.001s
578 + 1 0.004s
579 + many 0.0s
580name.rayrobdod.stringContextParserCombinator.InterpolatorTest.repeat.ZeroOrOneGreedy:
581 + does not match empty input 0.001s
582 + matches single input 0.0s
583 + matches multiple input 0.0s
584name.rayrobdod.stringContextParserCombinator.InterpolatorTest.repeat.ZeroOrMorePosessive:
585 + matches empty input 0.0s
586 + matches single input 0.0s
587 + matches multiple input 0.001s
588 + does not match single input with backtracking 0.0s
589 + does not match multiple input with backtracking 0.0s
590name.rayrobdod.stringContextParserCombinator.ExtractorTest.optionally.ZeroOrOne:
591 + when input has length 0 and scrutinee is None, then matches 0.001s
592 + when input has length 1 and scrutinee is None, then not matches 0.0s
593 + when input has length 0 and scrutinee is Some, then not matches 0.0s
594 + when input has length 1 and scrutinee is Some, then matches 0.001s
595name.rayrobdod.stringContextParserCombinator.ExtractorTest.CharWhere.IsAsciiDigit:
596 + throws when the input is empty 0.001s
597 + throws when the next input is an expr 0.0s
598 + returns Some(List()) when input is '0' and scrutinee is '\\u0000' 0.001s
599 + returns Some(List()) when input is '9' and scrutinee is '\\u0000' 0.0s
600 + throws when the next input is the character 'a' 0.0s
601 + throws when the next input is the character '/' 0.0s
602 + throws when the next input is the character ':' 0.001s
603 + throws when the next input is the character '\\u0000' 0.0s
604 + throws when the next input is the character '\\uFFFF' 0.0s
605name.rayrobdod.stringContextParserCombinator.InterpolatorTest.repeat.EmptyChildParserDoesNotCauseHang:
606 + `<pass>*` does not hang indefinitely 0.001s
607 + `(a*)*` does not hang indefinitely 0.007s
608name.rayrobdod.stringContextParserCombinator.ExtractorTest.CodePointWhere.IsPlayingCard:
609 + throws when the input is empty 0.001s
610 + throws when the next input is an expr 0.0s
611 + returns Some(List()) when input is '\\U{1F0A1}' and scrutinee is '\\u0000' 0.0s
612 + returns Some(List()) when input is '\\U{1F0A8}' and scrutinee is '\\u0000' 0.0s
613 + returns Some(List()) when input is '\\U{1F0AE}' and scrutinee is '\\u0000' 0.001s
614 + throws when the next input is the character '\\u0000' 0.0s
615 + throws when the next input is the character '\\U{1F0A0}' 0.0s
616 + throws when the next input is the character '\\U{1F0AF}' 0.0s
617 + throws when the next input is the character '\\uFFFF' 0.001s
618 + throws when the next input is the character '\\U{10FFFF}' 0.0s
619name.rayrobdod.stringContextParserCombinator.InterpolatorTest.filter.PoorMansMinMaxRepeats:
620 + if base parser succeeds and predicate fails for some branches, returns a success with the variants that passed the predicate 0.001s
621name.rayrobdod.stringContextParserCombinator.InterpolatorTest.void.VoidedBar:
622 + When base matches an input, then dut result is unit 0.004s
623name.rayrobdod.stringContextParserCombinator.ExtractorTest.repeat.SequenceRepeated:
624 + matches "" 0.001s
625 + does not match "a" 0.0s
626 + does match "abcde" 0.001s
627 + does not match "abca" 0.0s
628name.rayrobdod.stringContextParserCombinator.typeclass.repeated.IdConcatenateString:
629 + 0 0.0s
630 + 1 0.001s
631 + many 0.0s
632name.rayrobdod.stringContextParserCombinator.typeclass.repeated.QuotedFromSplicesUsingBuilderTest:
633 + 0 items with ifZero 0.001s
634 + 0 items without ifZero 0.0s
635 + 1 scalar with ifOneScalar 0.0s
636 + 1 scalar without ifOneScalar 0.001s
637 + multiple scalars 0.002s
638 + 1 splice with ifOneSplice 0.001s
639 + 1 splice without ifOneSplice 0.0s
640 + multiple splices 0.0s
641 + mix 0.0s
642
643************************
644Build summary:
645[{
646 "module": "string-context-parser-combinator",
647 "compile": {"status": "ok", "tookMs": 15041, "warnings": 3, "errors": 0, "sourceVersion": "3.8"},
648 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
649 "test-compile": {"status": "ok", "tookMs": 6008, "warnings": 1, "errors": 0, "sourceVersion": "3.8"},
650 "test": {"status": "ok", "tookMs": 1109, "passed": 299, "failed": 0, "ignored": 0, "skipped": 0, "total": 299, "byFramework": [{"framework": "munit", "stats": {"passed": 299, "failed": 0, "ignored": 0, "skipped": 0, "total": 299}}]},
651 "publish": {"status": "skipped", "tookMs": 0},
652 "metadata": {
653 "crossScalaVersions": ["2.12.20"]
654}
655}]
656************************
657[success] Total time: 32 s, completed Dec 4, 2025, 2:42:13 PM
658[0JChecking patch project/plugins.sbt...
659Checking patch project/build.properties...
660Checking patch build.sbt...
661Applied patch project/plugins.sbt cleanly.
662Applied patch project/build.properties cleanly.
663Applied patch build.sbt cleanly.