roc
roc copied to clipboard
Reference counting bug in pattern match
thread 'main' panicked at 'assertion failed: !self.not_reference_counted.contains(symbol)', crates/compiler/mono/src/inc_dec.rs:91:13
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
app "AoC"
packages {
pf: "https://github.com/roc-lang/basic-cli/releases/download/0.6.2/c7T4Hp8bAdWz3r9ZrhboBzibCjJag8d0IP_ljb42yVc.tar.br",
}
imports [pf.Stdout, pf.Task.{ Task }, "day-1-part-1.txt" as part1Input : Str]
provides [main] to pf
main : Task {} *
main = Stdout.line part1
part1 : Str
part1 =
part1Input
|> Str.split "\n"
|> List.map Str.toUtf8
|> List.map determineCalibration
|> List.sum
|> Num.toStr
determineCalibration = \input ->
walk = \f, s, l ->
when (f, s, l) is
(Some m, Some n, _) -> m * 10 + n
(Some m, None, [n, ..]) if n >= '0' && n <= '9' -> walk (Some m) (Some (n - '0')) l
(None, _, [n, ..]) if n >= '0' && n <= '9' -> walk (Some (n - '0')) None l
(_, _, [n, .. as rest]) -> walk f s rest
(_, _, _) -> crash "Invalid input"
walk None None input
Simpler reproduction:
app "main"
packages { pf: "https://github.com/roc-lang/basic-cli/releases/download/0.7.0/bkGby8jb0tmZYsy2hg1E_B2QrCgcSTxdUlHtETwm5m4.tar.br" }
imports [pf.Task.{ Task }]
provides [main] to pf
main =
_ = f None None []
Task.ok {}
f = \a, b, c ->
when (a, b, c) is
(Some m, Some n, [_]) -> m + n
_ -> crash "invalid"
Thanks @JRI98 :)