Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

vine: traits #163

Draft
wants to merge 13 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"deque",
"desugared",
"dyntest",
"impls",
"fizzbuzz",
"freelist",
"hashbrown",
Expand All @@ -31,11 +32,13 @@
"primality",
"readback",
"readline",
"rels",
"repr",
"rotr",
"rustyline",
"scrutinee",
"sixel",
"specializer",
"strs",
"unpark",
"vecs",
Expand Down
17 changes: 11 additions & 6 deletions tests/programs/aoc_2024/day_12.vi
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@

use std::data::Array;
use std::unicode::ToString;

pub fn main(&io: &IO) {
let regions = Regions(Array::empty);
Expand Down Expand Up @@ -87,17 +88,21 @@ enum Region {
}

mod Region {
pub fn to_string(self: Region) -> String {
match self {
Region::Root(a, p) { "Root(" ++ a.to_string() ++ ", " ++ p.to_string() ++ ")" }
Region::Child(n) { "Child(" ++ n.to_string() ++ ")" }
pub impl to_string: ToString[Region] {
fn to_string(self: Region) -> String {
match self {
Region::Root(a, p) { "Root(" ++ a.to_string() ++ ", " ++ p.to_string() ++ ")" }
Region::Child(n) { "Child(" ++ n.to_string() ++ ")" }
}
}
}
}

mod Regions {
pub fn to_string(Regions(array)) -> String {
array.to_list().to_string(Region::to_string)
pub impl to_string: ToString[Regions] {
fn to_string(Regions(array)) -> String {
array.to_list().to_string[; Region::to_string]()
}
}

pub fn new(&Regions(array)) -> N32 {
Expand Down
2 changes: 1 addition & 1 deletion tests/programs/cyclist.vi
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ pub fn main(&io: &IO) {

while list.pop_front() is Some(val) {
cycle(&list, val);
io.println(val.to_string() ++ ";\t" ++ list.to_string(N32::to_string));
io.println(val.to_string() ++ ";\t" ++ list.to_string[; N32::to_string]());
}
}

Expand Down
10 changes: 10 additions & 0 deletions tests/programs/specializations.vi
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@

use std::tuple::Pair;

pub fn main(&io: &IO) {
io.println([1, 2, 3, 4].to_string[; N32::to_string]());
io.println(["abc", "def", "ghi"].to_string[; String::to_string]());
io.println(['x', 'y', 'z'].to_string[; Char::to_string]());
io.println([true, false].to_string[; Bool::to_string]());
io.println([(1, 'a'), (2, 'b')].to_string[; Pair::to_string[; N32::to_string, Char::to_string]]());
}
40 changes: 20 additions & 20 deletions tests/snaps/vine/aoc_2024/day_01/compiled.iv
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@
}

::std::data::List::sort_by::5 {
enum(w0 x(w5 x(dup309(w22 w26) x(w3 w25))))
enum(w0 x(w5 x(dup304(w22 w26) x(w3 w25))))
::std::data::List::sort_by::7 = x(w22 x(x(w3 w21) x(x(w0 w19) x(tup(0 tup(w15 w15)) w17))))
::std::data::List::concat = fn(w17 fn(tup(1 tup(tup(w19 w23) w23)) w11))
::std::data::List::concat = fn(w11 fn(w21 w13))
Expand All @@ -145,7 +145,7 @@
::std::data::List::pop_front = fn(ref(w10 w1) enum(::std::data::List::sort_by::10 enum(::std::data::List::sort_by::11 x(w11 x(x(w1 w17) w8)))))
}

::std::data::List::sort_by::10 { enum(w0 x(dup329(fn(ref(w5 w12) fn(ref(w0 w15) ?(::std::data::List::sort_by::14 ::std::data::List::sort_by::13 x(w25 x(w7 x(x(w12 w22) x(w3 w15))))))) w25) x(w7 x(x(w5 w22) w3)))) }
::std::data::List::sort_by::10 { enum(w0 x(dup324(fn(ref(w5 w12) fn(ref(w0 w15) ?(::std::data::List::sort_by::14 ::std::data::List::sort_by::13 x(w25 x(w7 x(x(w12 w22) x(w3 w15))))))) w25) x(w7 x(x(w5 w22) w3)))) }

::std::data::List::sort_by::11 { x(_ x(x(w5 w5) x(x(w3 w3) x(w1 w1)))) }

Expand All @@ -160,9 +160,9 @@
::std::data::List::sort_by::7 = x(w12 x(w11 x(w9 x(w1 w15))))
}

::std::data::List::iter { fn(ref(tup(dup358(w2 w12) tup(w5 w6)) tup(w2 tup(w14 w6))) tup(w12 ref(w5 w14))) }
::std::data::List::iter { fn(ref(tup(dup353(w2 w12) tup(w5 w6)) tup(w2 tup(w14 w6))) tup(w12 ref(w5 w14))) }

::std::data::List::Iter::next { fn(ref(tup(dup365(?(::std::data::List::Iter::next::4 ::std::data::List::Iter::next::3 x(x(w16 w17) x(x(w5 w15) w13))) w16) w5) tup(w17 w15)) w13) }
::std::data::List::Iter::next { fn(ref(tup(dup360(?(::std::data::List::Iter::next::4 ::std::data::List::Iter::next::3 x(x(w16 w17) x(x(w5 w15) w13))) w16) w5) tup(w17 w15)) w13) }

::std::data::List::Iter::next::3 {
x(x(@sub(1 w1) w1) x(x(ref(tup(w4 w7) tup(w5 w8)) ref(w7 w8)) w15))
Expand All @@ -175,7 +175,7 @@

::std::data::List::into_iter { fn(tup(w2 tup(w3 _)) tup(w2 w3)) }

::std::data::List::IntoIter::next { fn(ref(tup(dup394(?(::std::data::List::IntoIter::next::4 ::std::data::List::IntoIter::next::3 x(x(w16 w17) x(x(w5 w15) w13))) w16) w5) tup(w17 w15)) w13) }
::std::data::List::IntoIter::next { fn(ref(tup(dup389(?(::std::data::List::IntoIter::next::4 ::std::data::List::IntoIter::next::3 x(x(w16 w17) x(x(w5 w15) w13))) w16) w5) tup(w17 w15)) w13) }

::std::data::List::IntoIter::next::3 {
x(x(@sub(1 w1) w1) x(x(tup(w3 w4) w4) w9))
Expand All @@ -192,7 +192,7 @@

::std::logical::Option::unwrap::4 { enum(w0 w0) }

::std::numeric::N32::to_string { fn(dup2009(?(::std::numeric::N32::to_string::4 ::std::numeric::N32::to_string::3 x(w8 w7)) w8) w7) }
::std::numeric::N32::to_string { fn(dup1953(?(::std::numeric::N32::to_string::4 ::std::numeric::N32::to_string::3 x(w8 w7)) w8) w7) }

::std::numeric::N32::to_string::3 {
x(w6 w9)
Expand All @@ -201,18 +201,18 @@

::std::numeric::N32::to_string::4 { x(_ tup(1 tup(tup(48 w3) w3))) }

::std::numeric::N32::to_string::5 { x(dup2019(?(::std::numeric::N32::to_string::7 ::std::numeric::N32::to_string::6 x(w6 w2)) w6) w2) }
::std::numeric::N32::to_string::5 { x(dup1963(?(::std::numeric::N32::to_string::7 ::std::numeric::N32::to_string::6 x(w6 w2)) w6) w2) }

::std::numeric::N32::to_string::6 {
x(dup2022(@rem(10 w1) @div(10 w8)) x(w11 w15))
x(dup1966(@rem(10 w1) @div(10 w8)) x(w11 w15))
48 = @add(w1 w2)
::std::data::List::concat = fn(tup(1 tup(tup(w2 w13) w13)) fn(w11 w5))
::std::numeric::N32::to_string::5 = x(w8 x(w5 w15))
}

::std::numeric::N32::to_string::7 { x(_ x(w1 w1)) }

::std::numeric::N32::parse { fn(tup(dup2029(?(::std::numeric::N32::parse::4 ::std::numeric::N32::parse::3 x(w15 x(w7 w13))) w15) tup(w7 _)) w13) }
::std::numeric::N32::parse { fn(tup(dup1973(?(::std::numeric::N32::parse::4 ::std::numeric::N32::parse::3 x(w15 x(w7 w13))) w15) tup(w7 _)) w13) }

::std::numeric::N32::parse::3 {
x(w5 x(w4 w6))
Expand All @@ -224,10 +224,10 @@
::std::numeric::N32::parse::11 = x(w4 ::std::logical::Option::None)
}

::std::numeric::N32::parse::5 { x(dup2040(?(::std::numeric::N32::parse::7 ::std::numeric::N32::parse::6 x(w8 w3)) w8) w3) }
::std::numeric::N32::parse::5 { x(dup1984(?(::std::numeric::N32::parse::7 ::std::numeric::N32::parse::6 x(w8 w3)) w8) w3) }

::std::numeric::N32::parse::6 {
x(w18 x(tup(dup2049(dup2044(w20 @le(57 w23)) w26) w2) x(w16 w25)))
x(w18 x(tup(dup1993(dup1988(w20 @le(57 w23)) w26) w2) x(w16 w25)))
48 = @le(w20 @n32_and(w23 ?(::std::numeric::N32::parse::10 ::std::numeric::N32::parse::9 x(w18 x(w2 x(w16 x(w26 w25)))))))
}

Expand All @@ -246,17 +246,17 @@

::std::numeric::N32::parse::11 { x(w10 w10) }

::std::numeric::N32::ascending { fn(ref(dup2066(w2 @lt(w11 w12)) w2) fn(ref(dup2067(w5 w11) w5) w12)) }
::std::numeric::N32::ascending { fn(ref(dup2010(w2 @lt(w11 w12)) w2) fn(ref(dup2011(w5 w11) w5) w12)) }

::std::unicode::String::len { fn(ref(tup(dup2662(w2 w15) w4) tup(w2 w4)) w15) }
::std::unicode::String::len { fn(ref(tup(dup2610(w2 w15) w4) tup(w2 w4)) w15) }

::std::unicode::String::split {
fn(w2 fn(w3 w10))
::std::unicode::String::split::2 = x(w2 x(w3 x(tup(0 tup(w9 w9)) w10)))
}

::std::unicode::String::split::2 {
x(w14 x(dup2673(w1 w20) x(w12 w18)))
x(w14 x(dup2621(w1 w20) x(w12 w18)))
::std::unicode::String::split_once = fn(w14 fn(w1 tup(w3 enum(::std::unicode::String::split::6 enum(::std::unicode::String::split::7 x(w20 x(w9 w18)))))))
::std::data::List::concat = fn(w12 fn(tup(1 tup(tup(w3 w15) w15)) w9))
}
Expand All @@ -274,9 +274,9 @@
}

::std::unicode::String::split_trim::2 {
x(w24 x(dup2698(w1 w44) x(w22 x(w21 x(x(w20 w41) w39)))))
x(w24 x(dup2646(w1 w44) x(w22 x(w21 x(x(w20 w41) w39)))))
::std::unicode::String::split_once = fn(w24 fn(w1 tup(w3 enum(::std::unicode::String::split_trim::24 enum(::std::unicode::String::split_trim::25 x(w44 x(w33 x(w42 x(x(w36 w41) w39)))))))))
::std::unicode::String::len = fn(ref(w3 w7) @eq(0 dup2709(?(::std::unicode::String::split_trim::5 ::std::unicode::String::split_trim::4 x(w21 dup2702(?(::std::unicode::String::split_trim::11 ::std::unicode::String::split_trim::10 x(x(w22 w33) x(w31 x(w7 _)))) w42))) ?(::std::unicode::String::split_trim::17 ::std::unicode::String::split_trim::16 x(w36 dup2704(w20 w31))))))
::std::unicode::String::len = fn(ref(w3 w7) @eq(0 dup2657(?(::std::unicode::String::split_trim::5 ::std::unicode::String::split_trim::4 x(w21 dup2650(?(::std::unicode::String::split_trim::11 ::std::unicode::String::split_trim::10 x(x(w22 w33) x(w31 x(w7 _)))) w42))) ?(::std::unicode::String::split_trim::17 ::std::unicode::String::split_trim::16 x(w36 dup2652(w20 w31))))))
}

::std::unicode::String::split_trim::4 { x(?(0 1 w3) w3) }
Expand Down Expand Up @@ -331,7 +331,7 @@
}

::std::unicode::String::split_once::9 {
enum(ref(dup2789(w1 w16) w1) x(w9 x(w8 x(w7 x(w6 x(w5 w15))))))
enum(ref(dup2737(w1 w16) w1) x(w9 x(w8 x(w7 x(w6 x(w5 w15))))))
::std::data::List::Iter::next = fn(ref(w5 w11) enum(::std::unicode::String::split_once::13 enum(::std::unicode::String::split_once::14 x(w9 x(w8 x(w7 x(w6 x(w11 x(w16 w15)))))))))
}

Expand All @@ -340,7 +340,7 @@
::std::unicode::String::split_once::15 = x(w4 x(w3 w1))
}

::std::unicode::String::split_once::13 { enum(ref(dup2803(w1 w13) w1) x(w10 x(w9 x(w8 x(w7 x(w6 x(@ne(w13 ?(::std::unicode::String::split_once::6 ::std::unicode::String::split_once::17 x(w10 x(w9 x(w8 x(w7 x(w6 w15))))))) w15))))))) }
::std::unicode::String::split_once::13 { enum(ref(dup2751(w1 w13) w1) x(w10 x(w9 x(w8 x(w7 x(w6 x(@ne(w13 ?(::std::unicode::String::split_once::6 ::std::unicode::String::split_once::17 x(w10 x(w9 x(w8 x(w7 x(w6 w15))))))) w15))))))) }

::std::unicode::String::split_once::14 {
x(_ x(w5 x(w4 x(_ x(w2 x(_ w7))))))
Expand Down Expand Up @@ -383,7 +383,7 @@
::std::IO::print::2 = x(x(w3 w17) x(w9 w10))
}

::std::IO::print::2 { x(w4 x(dup2979(?(::std::IO::print::4 ::std::IO::print::3 x(w4 x(w6 w1))) w6) w1)) }
::std::IO::print::2 { x(w4 x(dup2931(?(::std::IO::print::4 ::std::IO::print::3 x(w4 x(w6 w1))) w6) w1)) }

::std::IO::print::3 {
x(x(w17 w21) x(@sub(1 w1) tup(w4 w5)))
Expand All @@ -402,7 +402,7 @@

::std::IO::full_input::2 {
x(x(w9 w16) x(w7 w12))
::std::IO::read_byte = fn(ref(w9 w1) fn(0 dup3073(@ne(0 ?(::std::IO::full_input::5 ::std::IO::full_input::4 x(x(w1 w16) x(w7 x(w13 w12))))) w13)))
::std::IO::read_byte = fn(ref(w9 w1) fn(0 dup3025(@ne(0 ?(::std::IO::full_input::5 ::std::IO::full_input::4 x(x(w1 w16) x(w7 x(w13 w12))))) w13)))
}

::std::IO::full_input::4 {
Expand Down
34 changes: 17 additions & 17 deletions tests/snaps/vine/aoc_2024/day_02/compiled.iv
Original file line number Diff line number Diff line change
Expand Up @@ -143,9 +143,9 @@

::std::data::List::concat { fn(tup(@add(w12 w20) tup(w8 w13)) fn(tup(w12 tup(w13 w23)) tup(w20 tup(w8 w23)))) }

::std::data::List::iter { fn(ref(tup(dup406(w2 w12) tup(w5 w6)) tup(w2 tup(w14 w6))) tup(w12 ref(w5 w14))) }
::std::data::List::iter { fn(ref(tup(dup401(w2 w12) tup(w5 w6)) tup(w2 tup(w14 w6))) tup(w12 ref(w5 w14))) }

::std::data::List::Iter::next { fn(ref(tup(dup413(?(::std::data::List::Iter::next::4 ::std::data::List::Iter::next::3 x(x(w16 w17) x(x(w5 w15) w13))) w16) w5) tup(w17 w15)) w13) }
::std::data::List::Iter::next { fn(ref(tup(dup408(?(::std::data::List::Iter::next::4 ::std::data::List::Iter::next::3 x(x(w16 w17) x(x(w5 w15) w13))) w16) w5) tup(w17 w15)) w13) }

::std::data::List::Iter::next::3 {
x(x(@sub(1 w1) w1) x(x(ref(tup(w4 w7) tup(w5 w8)) ref(w7 w8)) w15))
Expand All @@ -158,7 +158,7 @@

::std::data::List::into_iter { fn(tup(w2 tup(w3 _)) tup(w2 w3)) }

::std::data::List::IntoIter::next { fn(ref(tup(dup442(?(::std::data::List::IntoIter::next::4 ::std::data::List::IntoIter::next::3 x(x(w16 w17) x(x(w5 w15) w13))) w16) w5) tup(w17 w15)) w13) }
::std::data::List::IntoIter::next { fn(ref(tup(dup437(?(::std::data::List::IntoIter::next::4 ::std::data::List::IntoIter::next::3 x(x(w16 w17) x(x(w5 w15) w13))) w16) w5) tup(w17 w15)) w13) }

::std::data::List::IntoIter::next::3 {
x(x(@sub(1 w1) w1) x(x(tup(w3 w4) w4) w9))
Expand All @@ -175,7 +175,7 @@

::std::logical::Option::unwrap::4 { enum(w0 w0) }

::std::numeric::N32::to_string { fn(dup2057(?(::std::numeric::N32::to_string::4 ::std::numeric::N32::to_string::3 x(w8 w7)) w8) w7) }
::std::numeric::N32::to_string { fn(dup2001(?(::std::numeric::N32::to_string::4 ::std::numeric::N32::to_string::3 x(w8 w7)) w8) w7) }

::std::numeric::N32::to_string::3 {
x(w6 w9)
Expand All @@ -184,18 +184,18 @@

::std::numeric::N32::to_string::4 { x(_ tup(1 tup(tup(48 w3) w3))) }

::std::numeric::N32::to_string::5 { x(dup2067(?(::std::numeric::N32::to_string::7 ::std::numeric::N32::to_string::6 x(w6 w2)) w6) w2) }
::std::numeric::N32::to_string::5 { x(dup2011(?(::std::numeric::N32::to_string::7 ::std::numeric::N32::to_string::6 x(w6 w2)) w6) w2) }

::std::numeric::N32::to_string::6 {
x(dup2070(@rem(10 w1) @div(10 w8)) x(w11 w15))
x(dup2014(@rem(10 w1) @div(10 w8)) x(w11 w15))
48 = @add(w1 w2)
::std::data::List::concat = fn(tup(1 tup(tup(w2 w13) w13)) fn(w11 w5))
::std::numeric::N32::to_string::5 = x(w8 x(w5 w15))
}

::std::numeric::N32::to_string::7 { x(_ x(w1 w1)) }

::std::numeric::N32::parse { fn(tup(dup2077(?(::std::numeric::N32::parse::4 ::std::numeric::N32::parse::3 x(w15 x(w7 w13))) w15) tup(w7 _)) w13) }
::std::numeric::N32::parse { fn(tup(dup2021(?(::std::numeric::N32::parse::4 ::std::numeric::N32::parse::3 x(w15 x(w7 w13))) w15) tup(w7 _)) w13) }

::std::numeric::N32::parse::3 {
x(w5 x(w4 w6))
Expand All @@ -207,10 +207,10 @@
::std::numeric::N32::parse::11 = x(w4 ::std::logical::Option::None)
}

::std::numeric::N32::parse::5 { x(dup2088(?(::std::numeric::N32::parse::7 ::std::numeric::N32::parse::6 x(w8 w3)) w8) w3) }
::std::numeric::N32::parse::5 { x(dup2032(?(::std::numeric::N32::parse::7 ::std::numeric::N32::parse::6 x(w8 w3)) w8) w3) }

::std::numeric::N32::parse::6 {
x(w18 x(tup(dup2097(dup2092(w20 @le(57 w23)) w26) w2) x(w16 w25)))
x(w18 x(tup(dup2041(dup2036(w20 @le(57 w23)) w26) w2) x(w16 w25)))
48 = @le(w20 @n32_and(w23 ?(::std::numeric::N32::parse::10 ::std::numeric::N32::parse::9 x(w18 x(w2 x(w16 x(w26 w25)))))))
}

Expand All @@ -229,15 +229,15 @@

::std::numeric::N32::parse::11 { x(w10 w10) }

::std::unicode::String::len { fn(ref(tup(dup2710(w2 w15) w4) tup(w2 w4)) w15) }
::std::unicode::String::len { fn(ref(tup(dup2658(w2 w15) w4) tup(w2 w4)) w15) }

::std::unicode::String::split {
fn(w2 fn(w3 w10))
::std::unicode::String::split::2 = x(w2 x(w3 x(tup(0 tup(w9 w9)) w10)))
}

::std::unicode::String::split::2 {
x(w14 x(dup2721(w1 w20) x(w12 w18)))
x(w14 x(dup2669(w1 w20) x(w12 w18)))
::std::unicode::String::split_once = fn(w14 fn(w1 tup(w3 enum(::std::unicode::String::split::6 enum(::std::unicode::String::split::7 x(w20 x(w9 w18)))))))
::std::data::List::concat = fn(w12 fn(tup(1 tup(tup(w3 w15) w15)) w9))
}
Expand All @@ -255,9 +255,9 @@
}

::std::unicode::String::split_trim::2 {
x(w24 x(dup2746(w1 w44) x(w22 x(w21 x(x(w20 w41) w39)))))
x(w24 x(dup2694(w1 w44) x(w22 x(w21 x(x(w20 w41) w39)))))
::std::unicode::String::split_once = fn(w24 fn(w1 tup(w3 enum(::std::unicode::String::split_trim::24 enum(::std::unicode::String::split_trim::25 x(w44 x(w33 x(w42 x(x(w36 w41) w39)))))))))
::std::unicode::String::len = fn(ref(w3 w7) @eq(0 dup2757(?(::std::unicode::String::split_trim::5 ::std::unicode::String::split_trim::4 x(w21 dup2750(?(::std::unicode::String::split_trim::11 ::std::unicode::String::split_trim::10 x(x(w22 w33) x(w31 x(w7 _)))) w42))) ?(::std::unicode::String::split_trim::17 ::std::unicode::String::split_trim::16 x(w36 dup2752(w20 w31))))))
::std::unicode::String::len = fn(ref(w3 w7) @eq(0 dup2705(?(::std::unicode::String::split_trim::5 ::std::unicode::String::split_trim::4 x(w21 dup2698(?(::std::unicode::String::split_trim::11 ::std::unicode::String::split_trim::10 x(x(w22 w33) x(w31 x(w7 _)))) w42))) ?(::std::unicode::String::split_trim::17 ::std::unicode::String::split_trim::16 x(w36 dup2700(w20 w31))))))
}

::std::unicode::String::split_trim::4 { x(?(0 1 w3) w3) }
Expand Down Expand Up @@ -312,7 +312,7 @@
}

::std::unicode::String::split_once::9 {
enum(ref(dup2837(w1 w16) w1) x(w9 x(w8 x(w7 x(w6 x(w5 w15))))))
enum(ref(dup2785(w1 w16) w1) x(w9 x(w8 x(w7 x(w6 x(w5 w15))))))
::std::data::List::Iter::next = fn(ref(w5 w11) enum(::std::unicode::String::split_once::13 enum(::std::unicode::String::split_once::14 x(w9 x(w8 x(w7 x(w6 x(w11 x(w16 w15)))))))))
}

Expand All @@ -321,7 +321,7 @@
::std::unicode::String::split_once::15 = x(w4 x(w3 w1))
}

::std::unicode::String::split_once::13 { enum(ref(dup2851(w1 w13) w1) x(w10 x(w9 x(w8 x(w7 x(w6 x(@ne(w13 ?(::std::unicode::String::split_once::6 ::std::unicode::String::split_once::17 x(w10 x(w9 x(w8 x(w7 x(w6 w15))))))) w15))))))) }
::std::unicode::String::split_once::13 { enum(ref(dup2799(w1 w13) w1) x(w10 x(w9 x(w8 x(w7 x(w6 x(@ne(w13 ?(::std::unicode::String::split_once::6 ::std::unicode::String::split_once::17 x(w10 x(w9 x(w8 x(w7 x(w6 w15))))))) w15))))))) }

::std::unicode::String::split_once::14 {
x(_ x(w5 x(w4 x(_ x(w2 x(_ w7))))))
Expand Down Expand Up @@ -364,7 +364,7 @@
::std::IO::print::2 = x(x(w3 w17) x(w9 w10))
}

::std::IO::print::2 { x(w4 x(dup3027(?(::std::IO::print::4 ::std::IO::print::3 x(w4 x(w6 w1))) w6) w1)) }
::std::IO::print::2 { x(w4 x(dup2979(?(::std::IO::print::4 ::std::IO::print::3 x(w4 x(w6 w1))) w6) w1)) }

::std::IO::print::3 {
x(x(w17 w21) x(@sub(1 w1) tup(w4 w5)))
Expand All @@ -383,7 +383,7 @@

::std::IO::full_input::2 {
x(x(w9 w16) x(w7 w12))
::std::IO::read_byte = fn(ref(w9 w1) fn(0 dup3121(@ne(0 ?(::std::IO::full_input::5 ::std::IO::full_input::4 x(x(w1 w16) x(w7 x(w13 w12))))) w13)))
::std::IO::read_byte = fn(ref(w9 w1) fn(0 dup3073(@ne(0 ?(::std::IO::full_input::5 ::std::IO::full_input::4 x(x(w1 w16) x(w7 x(w13 w12))))) w13)))
}

::std::IO::full_input::4 {
Expand Down
Loading
Loading