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