Build Logs

rayrobdod/string-context-parser-combinator • 3.8.0-RC4:2025-12-22

Errors

0

Warnings

19

Total Lines

598

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-RC4
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-RC4
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-RC4
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-RC4
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-RC4"
70"++3.8.0-RC4 -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-RC4 """{"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.088s.
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-RC4
90OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC4 in jsonJS3/crossScalaVersions
91OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.16) in timeNative/crossScalaVersions
92OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC4 in baseJS3/crossScalaVersions
93OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC4) in baseJS3/crossScalaVersions
94OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC4 in uri3/crossScalaVersions
95OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC4) in uri3/crossScalaVersions
96OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC4) in jsonJS3/crossScalaVersions
97OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC4 in xml3/crossScalaVersions
98OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC4) in xml3/crossScalaVersions
99OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC4 in base3/crossScalaVersions
100OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC4) in base3/crossScalaVersions
101OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC4 in jsonNative3/crossScalaVersions
102OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC4) in jsonNative3/crossScalaVersions
103OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC4 in timeJS3/crossScalaVersions
104OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC4) in timeJS3/crossScalaVersions
105OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.16) in jsonNative/crossScalaVersions
106OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC4 in timeNative3/crossScalaVersions
107OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC4) in timeNative3/crossScalaVersions
108OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.16) in baseNative/crossScalaVersions
109OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.16) in baseJS/crossScalaVersions
110OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC4 in time3/crossScalaVersions
111OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.16) in uri/crossScalaVersions
112OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.16) in time/crossScalaVersions
113OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.16) in timeJS/crossScalaVersions
114OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC4) in time3/crossScalaVersions
115OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC4 in json3/crossScalaVersions
116OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC4) in json3/crossScalaVersions
117OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.16) in base/crossScalaVersions
118OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.16) in jsonJS/crossScalaVersions
119OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(2.13.16) in json/crossScalaVersions
120OpenCB::Changing crossVersion 3.3.5 -> 3.8.0-RC4 in baseNative3/crossScalaVersions
121OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC4) in baseNative3/crossScalaVersions
122[info] set current project to repo (in build file:/build/repo/)
123[info] Setting Scala version to 3.8.0-RC4 on 11 projects.
124[info] Switching Scala version on:
125[info] base3 (3.8.0-RC4)
126[info] jsonNative3 (3.8.0-RC4)
127[info] jsonJS3 (3.8.0-RC4)
128[info] baseJS3 (3.8.0-RC4)
129[info] baseNative3 (3.8.0-RC4)
130[info] json3 (3.8.0-RC4)
131[info] time3 (3.8.0-RC4)
132[info] timeNative3 (3.8.0-RC4)
133[info] uri3 (3.8.0-RC4)
134[info] xml3 (3.8.0-RC4)
135[info] timeJS3 (3.8.0-RC4)
136[info] Excluding projects:
137[info] jsonNative (2.13.16)
138[info] json (2.13.16)
139[info] jsonJS2_12 (2.12.20)
140[info] uri (2.13.16)
141[info] baseNative2_12 (2.12.20)
142[info] jsonNative2_12 (2.12.20)
143[info] time2_12 (2.12.20)
144[info] json2_12 (2.12.20)
145[info] timeJS2_12 (2.12.20)
146[info] base (2.13.16)
147[info] baseJS2_12 (2.12.20)
148[info] timeNative2_12 (2.12.20)
149[info] timeJS (2.13.16)
150[info] baseJS (2.13.16)
151[info] time (2.13.16)
152[info] * repo (2.12.20)
153[info] timeNative (2.13.16)
154[info] jsonJS (2.13.16)
155[info] base2_12 (2.12.20)
156[info] uri2_12 (2.12.20)
157[info] baseNative (2.13.16)
158[info] Reapplying settings...
159[info] set current project to repo (in build file:/build/repo/)
160Execute mapScalacOptions: ,REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
161[info] Reapplying settings...
162[info] set current project to repo (in build file:/build/repo/)
163[info] Defining Global / credentials, base / credentials and 30 others.
164[info] The new values will be used by Global / pgpSelectPassphrase, Global / pgpSigningKey and 159 others.
165[info] Run `last` for details.
166[info] Reapplying settings...
167[info] set current project to repo (in build file:/build/repo/)
168Execute excludeLibraryDependency: com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}
169[info] Reapplying settings...
170OpenCB::Failed to reapply settings in excludeLibraryDependency: Reference to undefined setting:
171
172 Global / allExcludeDependencies from Global / allExcludeDependencies (CommunityBuildPlugin.scala:331)
173 Did you mean jsonJS2_12 / allExcludeDependencies ?
174 , retry without global scopes
175[info] Reapplying settings...
176[info] set current project to repo (in build file:/build/repo/)
177Execute removeScalacOptionsStartingWith: -P:wartremover
178[info] Reapplying settings...
179[info] set current project to repo (in build file:/build/repo/)
180[success] Total time: 0 s, completed Dec 22, 2025, 7:37:31 PM
181Build 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\""}]}
182Parsed config: Success(ProjectBuildConfig(ProjectsConfig(List(),Map()),Full,List()))
183Starting build...
184Projects: Set(base3)
185Starting build for ProjectRef(file:/build/repo/,base3) (string-context-parser-combinator)... [0/1]
186OpenCB::Exclude Scala3 specific scalacOption `REQUIRE:-source:3.8` in Scala 2.12.20 module Global
187OpenCB::Filter out '-deprecation', matches setting pattern '^-?-deprecation'
188OpenCB::Filter out '-feature', matches setting pattern '^-?-feature'
189OpenCB::Filter out '-Xfatal-warnings', matches setting pattern '^-?-Xfatal-warnings'
190Compile 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
191[info] compiling 52 Scala sources to /build/repo/Base/target/jvm-3/classes ...
192[warn] -- [E198] Unused Symbol Warning: /build/repo/Base/src/main/scala-3/VersionSpecificUnapplyExpr.scala:24:7
193[warn] 24 | {(value:Expr[Z]) => exprTrue},
194[warn] | ^^^^^
195[warn] | unused explicit parameter
196[warn] -- [E198] Unused Symbol Warning: /build/repo/Base/src/main/scala-3/typeclass/VersionSpecificEithered.scala:44:77
197[warn] 44 | given eitherUnitAny[Expr[_], B, Z](using ev:BiOptionally[Expr, B, Z])(using Quotes):BiEithered[Expr, Unit, B, Z] = BiEithered(
198[warn] | ^
199[warn] | unused implicit parameter
200[warn] -- [E198] Unused Symbol Warning: /build/repo/Base/src/main/scala-3/typeclass/VersionSpecificEithered.scala:53:77
201[warn] 53 | given eitherAnyUnit[Expr[_], A, Z](using ev:BiOptionally[Expr, A, Z])(using Quotes):BiEithered[Expr, A, Unit, Z] = BiEithered(
202[warn] | ^
203[warn] | unused implicit parameter
204[warn] three warnings found
205[info] done compiling
206[info] compiling 6 Scala sources to /build/repo/Base/target/jvm-3/test-classes ...
207[warn] -- [E198] Unused Symbol Warning: /build/repo/Base/src/test/scala-3/PointerSpacesCompat.scala:4:18
208[warn] 4 | inline def apply(v2:Int, v3:Int) = (" " * v3) + "^"
209[warn] | ^^
210[warn] | unused explicit parameter
211[warn] one warning found
212[warn] one warning found
213[info] done compiling
214name.rayrobdod.stringContextParserCombinator.InterpolatorTest.optionally.LazyTest:
215 + when input is empty, then returns None 0.023s
216 + when input has length 1, then returns None 0.004s
217 + when input has length two-or-greater, then returns None 0.0s
218 + when input has length 1, will backtrack to return Some 0.006s
219name.rayrobdod.stringContextParserCombinator.InterpolatorTest.CodePointWhere.ConstTrue:
220 + throws when the input is empty 0.023s
221 + throws when the next input is an expr 0.005s
222 + returns \u0000 when input is '\\u0000' 0.001s
223 + returns a when input is 'a' 0.0s
224 + returns ￿ when input is '\\uFFFF' 0.001s
225 + returns 􏿿 when input is '\\U{10FFFF}' 0.001s
226 + matches the entire surrogate pair 0.0s
227name.rayrobdod.stringContextParserCombinator.InterpolatorTest.CharWhere.ConstTrue:
228 + throws when the input is empty 0.022s
229 + throws when the next input is an expr 0.003s
230 + returns the character when the input is a single-character string ('\\u0000') 0.001s
231 + returns the character when the input is a single-character string ('a') 0.0s
232 + returns the character when the input is a single-character string ('\\uFFFF') 0.0s
233 + Returns the first character of a multiple-character input 0.006s
234name.rayrobdod.stringContextParserCombinator.ExtractorTest.repeat.OneOrMore:
235 + when input has length 0 then throws 0.024s
236 + when input has length 1 and scrutinee has length 0, then not matches 0.013s
237 + when input has length 1 and scrutinee has length 1, then matches 0.001s
238 + when input has length 1 and scrutinee has length 2, then not matches 0.0s
239 + when input has length 2 and scrutinee has length 0, then not matches 0.001s
240 + when input has length 2 and scrutinee has length 1, then not matches 0.005s
241 + when input has length 2 and scrutinee has length 2, then matches 0.0s
242 + when input has length 2 and scrutinee has length 3, then not matches 0.001s
243name.rayrobdod.stringContextParserCombinator.ExtractorTest.widenWith.IsInstanceOf:
244 + on match 0.001s
245 + on not match 0.006s
246name.rayrobdod.stringContextParserCombinator.ExtractorTest.void.VoidedCharIn:
247 + when base matches on an input, then dut matches on unit input 0.005s
248 + when base fails on an input, then dut fails on unit input 0.001s
249name.rayrobdod.stringContextParserCombinator.InterpolatorTest.filter.PoorMansMinMaxRepeats:
250 + if base parser succeeds and predicate fails for some branches, returns a success with the variants that passed the predicate 0.019s
251name.rayrobdod.stringContextParserCombinator.ExtractorTest.repeat.ZeroOrOne:
252 + when input has length 0 and scrutinee has length 0, then matches 0.001s
253 + when input has length 0 and scrutinee has length 1, then not matches 0.0s
254 + when input has length 1 and scrutinee has length 0, then not matches 0.0s
255 + when input has length 1 and scrutinee has length 1, then matches 0.003s
256 + when input has length 1 and scrutinee has length 2, then not matches 0.0s
257 + when input has length 2 and scrutinee has length 0, then not matches 0.002s
258 + when input has length 2 and scrutinee has length 1, then matches 0.0s
259 + when input has length 2 and scrutinee has length 2, then not matches 0.001s
260 + when input has length 2 and scrutinee has length 3, then not matches 0.0s
261name.rayrobdod.stringContextParserCombinator.InterpolatorTest.repeat.ZeroOrOneLazy:
262 + does not match empty input 0.009s
263 + matches single input 0.0s
264 + matches multiple input 0.001s
265name.rayrobdod.stringContextParserCombinator.ExtractorTest.andThen.TildeGt:
266 + Rejects a left-hand side that is not a void interpolator 0.039s
267name.rayrobdod.stringContextParserCombinator.InterpolatorTest.filter.IsEven:
268 + if base parser fails, parser passes through the failure 0.004s
269 + if base parser succeeds and predicate succeeds for all branches, parser passes through the success 0.001s
270 + if base parser succeeds and predicate fails for all branches, returns a failure including the filter description 0.001s
271name.rayrobdod.stringContextParserCombinator.InterpolatorTest.repeat.ZeroOrOneGreedy:
272 + does not match empty input 0.0s
273 + matches single input 0.003s
274 + matches multiple input 0.0s
275name.rayrobdod.stringContextParserCombinator.ExtractorTest.repeat.ZeroOrMorePossessive:
276 + when input has length 0 and scrutinee has length 0, then matches 0.006s
277 + when input has length 0 and scrutinee has length 1, then not matches 0.0s
278 + when input has length 1 and scrutinee has length 0, then not matches 0.006s
279 + when input has length 1 and scrutinee has length 1, then matches 0.001s
280 + when input has length 1 and scrutinee has length 2, then not matches 0.0s
281 + when input has length 2 and scrutinee has length 0, then not matches 0.0s
282 + when input has length 2 and scrutinee has length 1, then not matches 0.0s
283 + when input has length 2 and scrutinee has length 2, then matches 0.0s
284 + when input has length 2 and scrutinee has length 3, then not matches 0.001s
285 + will not backtrack 0.005s
286name.rayrobdod.stringContextParserCombinator.ExtractorTest.orElse.IsStringOrElseIsString:
287 + when string is left and scrutinee is left, then matches 0.009s
288 + when string is left and scrutinee is right, then not matches 0.0s
289 + when string is right and scrutinee is left, then not matches 0.001s
290 + when string is right and scrutinee is right, then matches 0.0s
291 + throws if string is neither 0.005s
292name.rayrobdod.stringContextParserCombinator.typeclass.repeated.IdFromSplicesToList:
293 + Nil 0.001s
294 + Zero 0.004s
295 + Scalar 0.001s
296 + Splice 0.004s
297 + Mix 0.001s
298name.rayrobdod.stringContextParserCombinator.InterpolatorTest.void.VoidedBar:
299 + When base matches an input, then dut result is unit 0.0s
300name.rayrobdod.stringContextParserCombinator.ExtractorTest.repeat.PassRepeated:
301 + does not hang indefinitely 0.0s
302name.rayrobdod.stringContextParserCombinator.InterpolatorTest.Pass:
303 + returns unit when the input is empty 0.0s
304 + Returns unit when the next input is a char 0.0s
305 + Returns unit when the next input is an expr 0.0s
306name.rayrobdod.stringContextParserCombinator.InterpolatorTest.repeat.EmptyChildParserDoesNotCauseHang:
307 + `<pass>*` does not hang indefinitely 0.001s
308 + `(a*)*` does not hang indefinitely 0.011s
309name.rayrobdod.stringContextParserCombinator.ExtractorTest.orElse.PartsThatMayConsumeInput:
310 + even if left branch consumes input, then backtracking 0.002s
311name.rayrobdod.stringContextParserCombinator.InterpolatorTest.repeat.OneOrMoreLazy:
312 + does not match empty input 0.0s
313 + matches single input 0.001s
314 + matches multiple input 0.0s
315name.rayrobdod.stringContextParserCombinator.ExtractorTest.repeat.RepeatedRepeated:
316 + does not hang indefinitely 0.001s
317name.rayrobdod.stringContextParserCombinator.ExtractorTest.CharWhere.ConstTrue:
318 + throws when the input is empty 0.0s
319 + throws when the next input is an expr 0.003s
320 + returns Some(List()) when input is '\\u0000' and scrutinee is '\\u0000' 0.0s
321 + returns Some(List()) when input is 'a' and scrutinee is '\\u0000' 0.001s
322 + returns Some(List()) when input is '\\uFFFF' and scrutinee is '\\u0000' 0.001s
323name.rayrobdod.stringContextParserCombinator.InterpolatorTest.CodePointWhere.ConstFalse:
324 + throws when the input is empty 0.0s
325 + throws when the next input is an expr 0.001s
326 + throws when the next input is the character '\\u0000' 0.0s
327 + throws when the next input is the character 'a' 0.0s
328 + throws when the next input is the character '\\uFFFF' 0.001s
329 + throws when the next input is the character '\\uD83D' 0.0s
330name.rayrobdod.stringContextParserCombinator.typeclass.repeated.IdConcatenateString:
331 + 0 0.001s
332 + 1 0.0s
333 + many 0.007s
334name.rayrobdod.stringContextParserCombinator.ExtractorTest.optionally.ZeroOrOne:
335 + when input has length 0 and scrutinee is None, then matches 0.004s
336 + when input has length 1 and scrutinee is None, then not matches 0.0s
337 + when input has length 0 and scrutinee is Some, then not matches 0.001s
338 + when input has length 1 and scrutinee is Some, then matches 0.0s
339name.rayrobdod.stringContextParserCombinator.InterpolatorTest.hide:
340 + hide does not affect parse success 0.001s
341 + on failure, when second branch is `.hide`, don't list that branch in expect 0.004s
342 + on failure, when first branch is `.hide`, don't list that branch in expect 0.0s
343 + When all branches are hidden, just says parse failed without an expects 0.001s
344name.rayrobdod.stringContextParserCombinator.ExtractorTest.repeat.ZeroOrMore:
345 + when input has length 0 and scrutinee has length 0, then matches 0.0s
346 + when input has length 0 and scrutinee has length 1, then not matches 0.0s
347 + when input has length 1 and scrutinee has length 0, then not matches 0.0s
348 + when input has length 1 and scrutinee has length 1, then matches 0.0s
349 + when input has length 1 and scrutinee has length 2, then not matches 0.0s
350 + when input has length 2 and scrutinee has length 0, then not matches 0.0s
351 + when input has length 2 and scrutinee has length 1, then not matches 0.0s
352 + when input has length 2 and scrutinee has length 2, then matches 0.001s
353 + when input has length 2 and scrutinee has length 3, then not matches 0.0s
354 + will backtrack 0.005s
355name.rayrobdod.stringContextParserCombinator.InterpolatorTest.andThen.DigitAndThenAlpha:
356 + throws when the input is empty 0.0s
357 + throws when expression has only one char; points at EOF 0.0s
358 + passes when expression has two matching chars 0.0s
359 + throws when expression has incorrect first char; points at first char 0.0s
360 + throws when expression has incorrect second char; points at second char 0.001s
361name.rayrobdod.stringContextParserCombinator.ExtractorTest.hide:
362 + hide does not affect parse success 0.001s
363 + on failure, when second branch is `.hide`, don't list that branch in expect 0.001s
364 + on failure, when first branch is `.hide`, don't list that branch in expect 0.0s
365 + When all branches are hidden, just says parse failed without an expects 0.0s
366name.rayrobdod.stringContextParserCombinator.InterpolatorTest.repeat.ZeroOrOnePosessive:
367 + does not match empty input 0.0s
368 + matches single input 0.0s
369 + matches multiple input 0.001s
370name.rayrobdod.stringContextParserCombinator.ExtractorTest.repeat.TwoOrMoreWithDelimiter:
371 + when input has length 1, throws and reports expecting the delimiter 0.0s
372name.rayrobdod.stringContextParserCombinator.InterpolatorTest.ComboAndThenRepeat:
373 + If the repeat is permissibly empty and right fails, then fails and shows both inputs as expected options 0.0s
374 + If the repeat is permissibly empty and right succeeds, then result is a success 0.0s
375 + If the repeat has consumed input, then the result matches that failure 0.0s
376 + missing right with any repeat fails and shows both inputs as options 0.001s
377 + unexpected right with any repeat fails and shows both inputs as options 0.0s
378 + input too short for repeat 0.01s
379 + input too long for repeat 0.001s
380 + pattern.repeat(Greedy) andThen subset 0.003s
381 + pattern.repeat(Greedy) andThen subset twice 0.0s
382 + pattern.repeat(Possessive) andThen subset 0.001s
383 + unexpected right with any repeat and delimiter fails and shows delimiter and right as options 0.005s
384 + successful with delimiter 0.0s
385 + right associative variant of "'[' ~ 'a'.rep(',') ~ ']' reports the delimiter as an option when the suffix is not found" 0.001s
386 + '[' ~ 'a'.rep(',') ~ ']' reports the delimiter as an option when the suffix is not found 0.0s
387name.rayrobdod.stringContextParserCombinator.ExtractorTest.repeat.ZeroOrMoreLazy:
388 + when input has length 0 and scrutinee has length 0, then matches 0.001s
389 + when input has length 0 and scrutinee has length 1, then not matches 0.0s
390 + when input has length 1 and scrutinee has length 0, then matches 0.0s
391 + when input has length 1 and scrutinee has length 1, then not matches 0.001s
392 + when input has length 1 and scrutinee has length 2, then not matches 0.004s
393 + when input has length 2 and scrutinee has length 0, then matches 0.001s
394 + when input has length 2 and scrutinee has length 1, then not matches 0.0s
395 + when input has length 2 and scrutinee has length 2, then not matches 0.001s
396 + when input has length 2 and scrutinee has length 3, then not matches 0.0s
397 + will backtrack 0.001s
398name.rayrobdod.stringContextParserCombinator.ExtractorTest.End:
399 + does match an empty input 0.0s
400 + throws when the next value is a character 0.0s
401 + throws when the next input is an expr 0.001s
402name.rayrobdod.stringContextParserCombinator.ExtractorTest.CharWhere.IsAsciiDigit:
403 + throws when the input is empty 0.0s
404 + throws when the next input is an expr 0.0s
405 + returns Some(List()) when input is '0' and scrutinee is '\\u0000' 0.001s
406 + returns Some(List()) when input is '9' and scrutinee is '\\u0000' 0.0s
407 + throws when the next input is the character 'a' 0.0s
408 + throws when the next input is the character '/' 0.0s
409 + throws when the next input is the character ':' 0.002s
410 + throws when the next input is the character '\\u0000' 0.0s
411 + throws when the next input is the character '\\uFFFF' 0.001s
412name.rayrobdod.stringContextParserCombinator.InterpolatorTest.map.BarToFoo:
413 + Returns the mapped Foo when the next input is an a Expr Bar 0.001s
414name.rayrobdod.stringContextParserCombinator.InterpolatorTest.repeat.ZeroOrMorePosessive:
415 + matches empty input 0.0s
416 + matches single input 0.0s
417 + matches multiple input 0.002s
418 + does not match single input with backtracking 0.003s
419 + does not match multiple input with backtracking 0.001s
420name.rayrobdod.stringContextParserCombinator.InterpolatorTest.repeat.OneOrMoreGreedy:
421 + does not match empty input 0.001s
422 + matches single input 0.0s
423 + matches multiple input 0.0s
424name.rayrobdod.stringContextParserCombinator.ExtractorTest.OfType:
425 + throws when the input is empty 0.0s
426 + throws when the next value is a character 0.0s
427 + Returns the scrutinee when the next input is an expr 0.001s
428name.rayrobdod.stringContextParserCombinator.InterpolatorTest.optionally.GreedyTest:
429 + when input is empty, then returns None 0.0s
430 + when input has length 1, then returns some with that value 0.0s
431 + when input has length two-or-greater, then returns some with first value 0.0s
432name.rayrobdod.stringContextParserCombinator.ExtractorTest.void.VoidedWidenedOfType:
433 + when base matches on an input, then dut matches on unit input 0.001s
434 + when base not matches on an input, then dut matches on unit input 0.001s
435 + when base fails on an input, then dut fails on unit input 0.001s
436name.rayrobdod.stringContextParserCombinator.ExtractorTest.repeat.ZeroOrMoreWithDelimiter:
437 + when input has length 0 and scrutinee has length 0, then matches 0.001s
438 + when input has length 0 with scrutinee has length 1, then not matches 0.0s
439 + when input has length 1 with scrutinee has length 0, then not matches 0.0s
440 + when input has length 1 and scrutinee has length 1, then matches 0.0s
441 + when input has length 1 with scrutinee has length 2, then not matches 0.001s
442 + when input has length 5 with delims and scrutinee has length 5, then matches 0.0s
443 + when input has length 5 sans delims, then pattern only matches one input 0.0s
444name.rayrobdod.stringContextParserCombinator.ExtractorTest.CodePointWhere.ConstFalse:
445 + throws when the input is empty 0.0s
446 + throws when the next input is an expr 0.0s
447 + throws when the next input is the character '\\u0000' 0.0s
448 + throws when the next input is the character 'a' 0.001s
449 + throws when the next input is the character '\\uFFFF' 0.0s
450 + throws when the next input is the character '\\uD83D' 0.0s
451name.rayrobdod.stringContextParserCombinator.InterpolatorTest.repeat.ZeroOrMoreLazy:
452 + matches empty input 0.001s
453 + matches single input 0.0s
454 + matches multiple input 0.0s
455 + matches single input with backtracking 0.001s
456 + matches multiple input with backtracking 0.006s
457name.rayrobdod.stringContextParserCombinator.InterpolatorTest.CharWhere.IsAsciiDigit:
458 + throws when the input is empty 0.0s
459 + throws when the next input is an expr 0.001s
460 + returns 0 when input is '0' 0.0s
461 + returns 9 when input is '9' 0.0s
462 + throws when the next input is the character 'a' 0.001s
463 + throws when the next input is the character '/' 0.0s
464 + throws when the next input is the character ':' 0.0s
465 + throws when the next input is the character '\\u0000' 0.0s
466 + throws when the next input is the character '\\uFFFF' 0.001s
467name.rayrobdod.stringContextParserCombinator.InterpolatorTest.CodePointWhere.IsPlayingCard:
468 + throws when the input is empty 0.0s
469 + throws when the next input is an expr 0.0s
470 + returns 🂡 when input is '\\U{1F0A1}' 0.0s
471 + returns 🂨 when input is '\\U{1F0A8}' 0.001s
472 + returns 🂮 when input is '\\U{1F0AE}' 0.0s
473 + throws when the next input is the character '\\u0000' 0.002s
474 + throws when the next input is the character '\\U{1F0A0}' 0.0s
475 + throws when the next input is the character '\\U{1F0AF}' 0.001s
476 + throws when the next input is the character '\\uFFFF' 0.0s
477 + throws when the next input is the character '\\U{10FFFF}' 0.0s
478name.rayrobdod.stringContextParserCombinator.ExtractorTest.andThen.DigitAndThenAlpha:
479 + throws when the input is empty 0.0s
480 + throws when expression has only one char; points at EOF 0.006s
481 + passes when expression has two matching chars 0.0s
482 + throws when expression has incorrect first char; points at first char 0.0s
483 + throws when expression has incorrect second char; points at second char 0.001s
484name.rayrobdod.stringContextParserCombinator.InterpolatorTest.repeat.OneOrMorePosessive:
485 + does not match empty input 0.001s
486 + matches single input 0.0s
487 + matches multiple input 0.0s
488name.rayrobdod.stringContextParserCombinator.ExtractorTest.CodePointWhere.IsPlayingCard:
489 + throws when the input is empty 0.0s
490 + throws when the next input is an expr 0.001s
491 + returns Some(List()) when input is '\\U{1F0A1}' and scrutinee is '\\u0000' 0.003s
492 + returns Some(List()) when input is '\\U{1F0A8}' and scrutinee is '\\u0000' 0.0s
493 + returns Some(List()) when input is '\\U{1F0AE}' and scrutinee is '\\u0000' 0.0s
494 + throws when the next input is the character '\\u0000' 0.001s
495 + throws when the next input is the character '\\U{1F0A0}' 0.0s
496 + throws when the next input is the character '\\U{1F0AF}' 0.0s
497 + throws when the next input is the character '\\uFFFF' 0.0s
498 + throws when the next input is the character '\\U{10FFFF}' 0.0s
499name.rayrobdod.stringContextParserCombinator.InterpolatorTest.optionally.PossessiveTest:
500 + when input is empty, then returns None 0.0s
501 + when input has length 1, then returns some with that value 0.001s
502 + when input has length two-or-greater, then returns some with first value 0.0s
503name.rayrobdod.stringContextParserCombinator.typeclass.repeated.QuotedFromSplicesUsingBuilderTest:
504 + 0 items with ifZero 0.002s
505 + 0 items without ifZero 0.0s
506 + 1 scalar with ifOneScalar 0.001s
507 + 1 scalar without ifOneScalar 0.0s
508 + multiple scalars 0.0s
509 + 1 splice with ifOneSplice 0.001s
510 + 1 splice without ifOneSplice 0.0s
511 + multiple splices 0.001s
512 + mix 0.0s
513name.rayrobdod.stringContextParserCombinator.InterpolatorTest.repeat.WithDelimiter:
514 + matches empty input 0.0s
515 + matches single input 0.001s
516 + matches multiple input 0.0s
517 + `a{2,}` with delim `b` does not match `a` and report expecting 'b' 0.0s
518name.rayrobdod.stringContextParserCombinator.ExtractorTest.repeat.SequenceRepeated:
519 + matches "" 0.0s
520 + does not match "a" 0.0s
521 + does match "abcde" 0.0s
522 + does not match "abca" 0.002s
523name.rayrobdod.stringContextParserCombinator.typeclass.repeated.QuotedConcatenateStringTest:
524 + 0 0.001s
525 + 1 0.0s
526 + many 0.001s
527name.rayrobdod.stringContextParserCombinator.InterpolatorTest.CharWhere.ConstFalse:
528 + throws when the input is empty 0.001s
529 + throws when the next input is an expr 0.0s
530 + throws when the next input is the character '\\u0000' 0.001s
531 + throws when the next input is the character 'a' 0.0s
532 + throws when the next input is the character '\\uFFFF' 0.0s
533 + throws when the next input is the character '\\uD83D' 0.0s
534name.rayrobdod.stringContextParserCombinator.InterpolatorTest.andThen.TildeGt:
535 + Rejects a left-hand side that is not a void interpolator 0.0s
536name.rayrobdod.stringContextParserCombinator.ExtractorTest.CharWhere.ConstFalse:
537 + throws when the input is empty 0.001s
538 + throws when the next input is an expr 0.0s
539 + throws when the next input is the character '\\u0000' 0.0s
540 + throws when the next input is the character 'a' 0.0s
541 + throws when the next input is the character '\\uFFFF' 0.001s
542 + throws when the next input is the character '\\uD83D' 0.0s
543name.rayrobdod.stringContextParserCombinator.ExtractorTest.contramap.BarToFoo:
544 + Returns the mapped Foo when the next input is an Expr and the scrutinee is a Bar 0.0s
545name.rayrobdod.stringContextParserCombinator.InterpolatorTest.OfType:
546 + throws when the input is empty 0.002s
547 + throws when the next value is a character 0.0s
548 + Returns the next input when the next input is an expr 0.001s
549name.rayrobdod.stringContextParserCombinator.InterpolatorTest.repeat.ZeroOrMoreGreedy:
550 + matches empty input 0.0s
551 + matches single input 0.0s
552 + matches multiple input 0.001s
553 + matches single input (with backtracking) 0.0s
554 + matches multiple input (with backtracking) 0.0s
555 + matches empty input (with andThen) 0.0s
556 + does not match partial child and has cut 0.0s
557 + does not match full child followed by unrelated 0.0s
558 + does not match full child followed by partial child and has cut 0.001s
559name.rayrobdod.stringContextParserCombinator.InterpolatorTest.End:
560 + returns unit when the input is empty 0.0s
561 + throws when the next value is a character 0.0s
562 + throws when the next input is an expr 0.0s
563name.rayrobdod.stringContextParserCombinator.InterpolatorTest.orElse:
564 + `Success | Whatever` returns that success 0.0s
565 + `Advanced | Whatever` returns that failure 0.001s
566 + `NonConsume | Success` returns that success 0.0s
567 + `NonConsume | Advanced` returns a failure that mentions only the cut branch 0.0s
568 + `NonConsume | NonConsume` returns a failure that mentions both branches 0.0s
569name.rayrobdod.stringContextParserCombinator.ExtractorTest.CodePointWhere.ConstTrue:
570 + throws when the input is empty 0.0s
571 + throws when the next input is an expr 0.001s
572 + returns Some(List()) when input is '\\u0000' and scrutinee is '\\u0000' 0.0s
573 + returns Some(List()) when input is 'a' and scrutinee is '\\u0000' 0.0s
574 + returns Some(List()) when input is '\\uFFFF' and scrutinee is '\\u0000' 0.0s
575 + returns Some(List()) when input is '\\U{10FFFF}' and scrutinee is '\\u0000' 0.0s
576 + matches the entire surrogate pair 0.001s
577
578************************
579Build summary:
580[{
581 "module": "string-context-parser-combinator",
582 "compile": {"status": "ok", "tookMs": 14927, "warnings": 3, "errors": 0, "sourceVersion": "3.8"},
583 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
584 "test-compile": {"status": "ok", "tookMs": 5474, "warnings": 1, "errors": 0, "sourceVersion": "3.8"},
585 "test": {"status": "ok", "tookMs": 854, "passed": 299, "failed": 0, "ignored": 0, "skipped": 0, "total": 299, "byFramework": [{"framework": "munit", "stats": {"passed": 299, "failed": 0, "ignored": 0, "skipped": 0, "total": 299}}]},
586 "publish": {"status": "skipped", "tookMs": 0},
587 "metadata": {
588 "crossScalaVersions": ["2.12.20"]
589}
590}]
591************************
592[success] Total time: 31 s, completed Dec 22, 2025, 7:38:02 PM
593[0JChecking patch project/plugins.sbt...
594Checking patch project/build.properties...
595Checking patch build.sbt...
596Applied patch project/plugins.sbt cleanly.
597Applied patch project/build.properties cleanly.
598Applied patch build.sbt cleanly.