fix mono tests with wrapping custom function

This commit is contained in:
Brendan Hansknecht 2023-11-28 12:12:31 -08:00
parent 32c3d49e85
commit 79a58843b5
No known key found for this signature in database
GPG key ID: 0EA784685083E75B
9 changed files with 1364 additions and 17 deletions

View file

@ -86,7 +86,7 @@ InspectFormatter implements
Inspector f := f -> f where f implements InspectFormatter
custom : (f -> f) -> Inspector f where f implements InspectFormatter
custom = @Inspector
custom = \fn -> @Inspector fn
apply : Inspector f, f -> f where f implements InspectFormatter
apply = \@Inspector fn, fmt -> fn fmt

View file

@ -0,0 +1,172 @@
procedure #Derived.0 (#Derived.1):
let #Derived_gen.0 : List I64 = CallByName Inspect.30 #Derived.1;
ret #Derived_gen.0;
procedure #Derived.3 (#Derived.2):
let #Derived_gen.7 : I64 = CallByName Inspect.54 #Derived.2;
ret #Derived_gen.7;
procedure #Derived.4 (#Derived.5, #Derived.1):
let #Derived_gen.5 : {} = Struct {};
let #Derived_gen.6 : {} = Struct {};
let #Derived_gen.4 : {List I64, {}, {}} = CallByName Inspect.37 #Derived.1 #Derived_gen.5 #Derived_gen.6;
let #Derived_gen.3 : Str = CallByName Inspect.31 #Derived_gen.4 #Derived.5;
ret #Derived_gen.3;
procedure Bool.1 ():
let Bool.24 : Int1 = false;
ret Bool.24;
procedure Bool.2 ():
let Bool.23 : Int1 = true;
ret Bool.23;
procedure Inspect.155 (Inspect.156, #Attr.12):
let Inspect.154 : {} = StructAtIndex 2 #Attr.12;
let Inspect.153 : {} = StructAtIndex 1 #Attr.12;
let Inspect.152 : List I64 = StructAtIndex 0 #Attr.12;
let Inspect.345 : Str = "[";
let Inspect.328 : Str = CallByName Inspect.61 Inspect.156 Inspect.345;
let Inspect.329 : {List I64, {}, {}} = Struct {Inspect.152, Inspect.153, Inspect.154};
let Inspect.324 : {Str, Int1} = CallByName Inspect.157 Inspect.328 Inspect.329;
let Inspect.325 : {} = Struct {};
let Inspect.320 : Str = CallByName Inspect.166 Inspect.324;
let Inspect.321 : Str = "]";
let Inspect.319 : Str = CallByName Inspect.61 Inspect.320 Inspect.321;
ret Inspect.319;
procedure Inspect.157 (Inspect.158, #Attr.12):
let Inspect.154 : {} = StructAtIndex 2 #Attr.12;
let Inspect.153 : {} = StructAtIndex 1 #Attr.12;
let Inspect.152 : List I64 = StructAtIndex 0 #Attr.12;
let Bool.1 : Int1 = CallByName Bool.1;
let Inspect.332 : {Str, Int1} = Struct {Inspect.158, Bool.1};
let Inspect.331 : {Str, Int1} = CallByName List.18 Inspect.152 Inspect.332 Inspect.154;
ret Inspect.331;
procedure Inspect.159 (Inspect.334, Inspect.162, Inspect.154):
let Inspect.160 : Str = StructAtIndex 0 Inspect.334;
let Inspect.161 : Int1 = StructAtIndex 1 Inspect.334;
joinpoint Inspect.343 Inspect.163:
let Inspect.340 : I64 = CallByName #Derived.3 Inspect.162;
let Inspect.337 : Str = CallByName Inspect.31 Inspect.340 Inspect.163;
let Inspect.338 : {} = Struct {};
let Inspect.336 : {Str, Int1} = CallByName Inspect.164 Inspect.337;
ret Inspect.336;
in
if Inspect.161 then
let Inspect.344 : Str = ", ";
let Inspect.342 : Str = CallByName Inspect.61 Inspect.160 Inspect.344;
jump Inspect.343 Inspect.342;
else
jump Inspect.343 Inspect.160;
procedure Inspect.164 (Inspect.165):
let Bool.2 : Int1 = CallByName Bool.2;
let Inspect.339 : {Str, Int1} = Struct {Inspect.165, Bool.2};
ret Inspect.339;
procedure Inspect.166 (Inspect.326):
let Inspect.327 : Str = StructAtIndex 0 Inspect.326;
ret Inspect.327;
procedure Inspect.277 (Inspect.278, Inspect.276):
let Inspect.351 : Str = CallByName Num.96 Inspect.276;
let Inspect.350 : Str = CallByName Inspect.61 Inspect.278 Inspect.351;
ret Inspect.350;
procedure Inspect.30 (Inspect.147):
ret Inspect.147;
procedure Inspect.30 (Inspect.147):
ret Inspect.147;
procedure Inspect.30 (Inspect.147):
ret Inspect.147;
procedure Inspect.31 (Inspect.305, Inspect.149):
let Inspect.314 : Str = CallByName Inspect.155 Inspect.149 Inspect.305;
ret Inspect.314;
procedure Inspect.31 (Inspect.305, Inspect.149):
let Inspect.341 : Str = CallByName Inspect.277 Inspect.149 Inspect.305;
ret Inspect.341;
procedure Inspect.35 (Inspect.300):
ret Inspect.300;
procedure Inspect.36 (Inspect.304):
let Inspect.311 : Str = "";
ret Inspect.311;
procedure Inspect.37 (Inspect.152, Inspect.153, Inspect.154):
let Inspect.316 : {List I64, {}, {}} = Struct {Inspect.152, Inspect.153, Inspect.154};
let Inspect.315 : {List I64, {}, {}} = CallByName Inspect.30 Inspect.316;
ret Inspect.315;
procedure Inspect.5 (Inspect.150):
let Inspect.312 : List I64 = CallByName #Derived.0 Inspect.150;
let Inspect.309 : {} = Struct {};
let Inspect.308 : Str = CallByName Inspect.36 Inspect.309;
let Inspect.307 : Str = CallByName #Derived.4 Inspect.308 Inspect.312;
ret Inspect.307;
procedure Inspect.54 (Inspect.276):
let Inspect.346 : I64 = CallByName Inspect.30 Inspect.276;
ret Inspect.346;
procedure Inspect.61 (Inspect.303, Inspect.298):
let Inspect.323 : Str = CallByName Str.3 Inspect.303 Inspect.298;
dec Inspect.298;
ret Inspect.323;
procedure List.18 (List.154, List.155, List.156):
let List.554 : U64 = 0i64;
let List.555 : U64 = CallByName List.6 List.154;
let List.553 : {Str, Int1} = CallByName List.88 List.154 List.155 List.156 List.554 List.555;
ret List.553;
procedure List.6 (#Attr.2):
let List.564 : U64 = lowlevel ListLen #Attr.2;
ret List.564;
procedure List.66 (#Attr.2, #Attr.3):
let List.563 : I64 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.563;
procedure List.88 (#Derived_gen.17, #Derived_gen.18, #Derived_gen.19, #Derived_gen.20, #Derived_gen.21):
joinpoint List.556 List.157 List.158 List.159 List.160 List.161:
let List.558 : Int1 = CallByName Num.22 List.160 List.161;
if List.558 then
let List.562 : I64 = CallByName List.66 List.157 List.160;
let List.162 : {Str, Int1} = CallByName Inspect.159 List.158 List.562 List.159;
let List.561 : U64 = 1i64;
let List.560 : U64 = CallByName Num.51 List.160 List.561;
jump List.556 List.157 List.162 List.159 List.560 List.161;
else
dec List.157;
ret List.158;
in
jump List.556 #Derived_gen.17 #Derived_gen.18 #Derived_gen.19 #Derived_gen.20 #Derived_gen.21;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.293 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.293;
procedure Num.51 (#Attr.2, #Attr.3):
let Num.292 : U64 = lowlevel NumAddWrap #Attr.2 #Attr.3;
ret Num.292;
procedure Num.96 (#Attr.2):
let Num.291 : Str = lowlevel NumToStr #Attr.2;
ret Num.291;
procedure Str.3 (#Attr.2, #Attr.3):
let Str.292 : Str = lowlevel StrConcat #Attr.2 #Attr.3;
ret Str.292;
procedure Test.0 ():
let Test.3 : List I64 = Array [1i64, 2i64, 3i64];
let Test.2 : Str = CallByName Inspect.5 Test.3;
let Test.1 : Str = CallByName Inspect.35 Test.2;
ret Test.1;

View file

@ -0,0 +1,274 @@
procedure #Derived.0 (#Derived.1):
let #Derived_gen.0 : Str = CallByName Inspect.30 #Derived.1;
ret #Derived_gen.0;
procedure #Derived.2 (#Derived.3, #Derived.1):
let #Derived_gen.7 : Str = "a";
let #Derived_gen.8 : Str = CallByName #Derived.4 #Derived.1;
let #Derived_gen.6 : {Str, Str} = Struct {#Derived_gen.7, #Derived_gen.8};
let #Derived_gen.5 : List {Str, Str} = Array [#Derived_gen.6];
let #Derived_gen.4 : List {Str, Str} = CallByName Inspect.42 #Derived_gen.5;
let #Derived_gen.3 : Str = CallByName Inspect.31 #Derived_gen.4 #Derived.3;
ret #Derived_gen.3;
procedure #Derived.4 (#Derived.5):
let #Derived_gen.10 : Str = CallByName Inspect.30 #Derived.5;
ret #Derived_gen.10;
procedure #Derived.6 (#Derived.7, #Derived.5):
let #Derived_gen.17 : Str = "b";
let #Derived_gen.18 : Str = CallByName Inspect.44 #Derived.5;
let #Derived_gen.16 : {Str, Str} = Struct {#Derived_gen.17, #Derived_gen.18};
let #Derived_gen.15 : List {Str, Str} = Array [#Derived_gen.16];
let #Derived_gen.14 : List {Str, Str} = CallByName Inspect.42 #Derived_gen.15;
let #Derived_gen.13 : Str = CallByName Inspect.31 #Derived_gen.14 #Derived.7;
ret #Derived_gen.13;
procedure Bool.1 ():
let Bool.26 : Int1 = false;
ret Bool.26;
procedure Bool.2 ():
let Bool.25 : Int1 = true;
ret Bool.25;
procedure Inspect.228 (Inspect.229, Inspect.227):
let Inspect.350 : Str = "{";
let Inspect.328 : Str = CallByName Inspect.61 Inspect.229 Inspect.350;
let Inspect.324 : {Str, Int1} = CallByName Inspect.230 Inspect.328 Inspect.227;
let Inspect.325 : {} = Struct {};
let Inspect.320 : Str = CallByName Inspect.242 Inspect.324;
let Inspect.321 : Str = "}";
let Inspect.319 : Str = CallByName Inspect.61 Inspect.320 Inspect.321;
ret Inspect.319;
procedure Inspect.228 (Inspect.229, Inspect.227):
let Inspect.388 : Str = "{";
let Inspect.366 : Str = CallByName Inspect.61 Inspect.229 Inspect.388;
let Inspect.362 : {Str, Int1} = CallByName Inspect.230 Inspect.366 Inspect.227;
let Inspect.363 : {} = Struct {};
let Inspect.358 : Str = CallByName Inspect.242 Inspect.362;
let Inspect.359 : Str = "}";
let Inspect.357 : Str = CallByName Inspect.61 Inspect.358 Inspect.359;
ret Inspect.357;
procedure Inspect.230 (Inspect.231, Inspect.227):
let Bool.1 : Int1 = CallByName Bool.1;
let Inspect.332 : {Str, Int1} = Struct {Inspect.231, Bool.1};
let Inspect.333 : {} = Struct {};
let Inspect.331 : {Str, Int1} = CallByName List.18 Inspect.227 Inspect.332 Inspect.333;
ret Inspect.331;
procedure Inspect.230 (Inspect.231, Inspect.227):
let Bool.1 : Int1 = CallByName Bool.1;
let Inspect.370 : {Str, Int1} = Struct {Inspect.231, Bool.1};
let Inspect.371 : {} = Struct {};
let Inspect.369 : {Str, Int1} = CallByName List.18 Inspect.227 Inspect.370 Inspect.371;
ret Inspect.369;
procedure Inspect.232 (Inspect.334, Inspect.335):
let Inspect.235 : Str = StructAtIndex 0 Inspect.335;
let Inspect.236 : Str = StructAtIndex 1 Inspect.335;
let Inspect.233 : Str = StructAtIndex 0 Inspect.334;
let Inspect.234 : Int1 = StructAtIndex 1 Inspect.334;
joinpoint Inspect.348 Inspect.237:
let Inspect.345 : Str = CallByName Inspect.61 Inspect.237 Inspect.235;
let Inspect.346 : Str = ": ";
let Inspect.340 : Str = CallByName Inspect.61 Inspect.345 Inspect.346;
let Inspect.337 : Str = CallByName Inspect.238 Inspect.340 Inspect.236;
let Inspect.338 : {} = Struct {};
let Inspect.336 : {Str, Int1} = CallByName Inspect.240 Inspect.337;
ret Inspect.336;
in
if Inspect.234 then
let Inspect.349 : Str = ", ";
let Inspect.347 : Str = CallByName Inspect.61 Inspect.233 Inspect.349;
jump Inspect.348 Inspect.347;
else
jump Inspect.348 Inspect.233;
procedure Inspect.232 (Inspect.334, Inspect.335):
let Inspect.235 : Str = StructAtIndex 0 Inspect.335;
let Inspect.236 : Str = StructAtIndex 1 Inspect.335;
let Inspect.233 : Str = StructAtIndex 0 Inspect.334;
let Inspect.234 : Int1 = StructAtIndex 1 Inspect.334;
joinpoint Inspect.386 Inspect.237:
let Inspect.383 : Str = CallByName Inspect.61 Inspect.237 Inspect.235;
let Inspect.384 : Str = ": ";
let Inspect.378 : Str = CallByName Inspect.61 Inspect.383 Inspect.384;
let Inspect.375 : Str = CallByName Inspect.238 Inspect.378 Inspect.236;
let Inspect.376 : {} = Struct {};
let Inspect.374 : {Str, Int1} = CallByName Inspect.240 Inspect.375;
ret Inspect.374;
in
if Inspect.234 then
let Inspect.387 : Str = ", ";
let Inspect.385 : Str = CallByName Inspect.61 Inspect.233 Inspect.387;
jump Inspect.386 Inspect.385;
else
jump Inspect.386 Inspect.233;
procedure Inspect.238 (Inspect.239, Inspect.236):
let Inspect.343 : Str = CallByName Inspect.31 Inspect.236 Inspect.239;
ret Inspect.343;
procedure Inspect.238 (Inspect.239, Inspect.236):
let Inspect.381 : Str = CallByName Inspect.31 Inspect.236 Inspect.239;
ret Inspect.381;
procedure Inspect.240 (Inspect.241):
let Bool.2 : Int1 = CallByName Bool.2;
let Inspect.377 : {Str, Int1} = Struct {Inspect.241, Bool.2};
ret Inspect.377;
procedure Inspect.242 (Inspect.326):
let Inspect.365 : Str = StructAtIndex 0 Inspect.326;
ret Inspect.365;
procedure Inspect.249 (Inspect.250, Inspect.248):
let Inspect.397 : Str = "\"";
let Inspect.396 : Str = CallByName Inspect.61 Inspect.250 Inspect.397;
let Inspect.394 : Str = CallByName Inspect.61 Inspect.396 Inspect.248;
let Inspect.395 : Str = "\"";
let Inspect.393 : Str = CallByName Inspect.61 Inspect.394 Inspect.395;
ret Inspect.393;
procedure Inspect.30 (Inspect.147):
ret Inspect.147;
procedure Inspect.30 (Inspect.147):
ret Inspect.147;
procedure Inspect.30 (Inspect.147):
ret Inspect.147;
procedure Inspect.30 (Inspect.147):
ret Inspect.147;
procedure Inspect.30 (Inspect.147):
ret Inspect.147;
procedure Inspect.31 (Inspect.305, Inspect.149):
let Inspect.314 : Str = CallByName Inspect.228 Inspect.149 Inspect.305;
ret Inspect.314;
procedure Inspect.31 (Inspect.305, Inspect.149):
let Inspect.344 : Str = CallByName #Derived.6 Inspect.149 Inspect.305;
ret Inspect.344;
procedure Inspect.31 (Inspect.305, Inspect.149):
let Inspect.352 : Str = CallByName Inspect.228 Inspect.149 Inspect.305;
ret Inspect.352;
procedure Inspect.31 (Inspect.305, Inspect.149):
let Inspect.382 : Str = CallByName Inspect.249 Inspect.149 Inspect.305;
ret Inspect.382;
procedure Inspect.35 (Inspect.300):
ret Inspect.300;
procedure Inspect.36 (Inspect.304):
let Inspect.311 : Str = "";
ret Inspect.311;
procedure Inspect.42 (Inspect.227):
let Inspect.315 : List {Str, Str} = CallByName Inspect.30 Inspect.227;
ret Inspect.315;
procedure Inspect.42 (Inspect.227):
let Inspect.353 : List {Str, Str} = CallByName Inspect.30 Inspect.227;
ret Inspect.353;
procedure Inspect.44 (Inspect.248):
let Inspect.389 : Str = CallByName Inspect.30 Inspect.248;
ret Inspect.389;
procedure Inspect.5 (Inspect.150):
let Inspect.312 : Str = CallByName #Derived.0 Inspect.150;
let Inspect.309 : {} = Struct {};
let Inspect.308 : Str = CallByName Inspect.36 Inspect.309;
let Inspect.307 : Str = CallByName #Derived.2 Inspect.308 Inspect.312;
ret Inspect.307;
procedure Inspect.61 (Inspect.303, Inspect.298):
let Inspect.361 : Str = CallByName Str.3 Inspect.303 Inspect.298;
dec Inspect.298;
ret Inspect.361;
procedure List.18 (List.154, List.155, List.156):
let List.554 : U64 = 0i64;
let List.555 : U64 = CallByName List.6 List.154;
let List.553 : {Str, Int1} = CallByName List.88 List.154 List.155 List.156 List.554 List.555;
ret List.553;
procedure List.18 (List.154, List.155, List.156):
let List.566 : U64 = 0i64;
let List.567 : U64 = CallByName List.6 List.154;
let List.565 : {Str, Int1} = CallByName List.88 List.154 List.155 List.156 List.566 List.567;
ret List.565;
procedure List.6 (#Attr.2):
let List.564 : U64 = lowlevel ListLen #Attr.2;
ret List.564;
procedure List.6 (#Attr.2):
let List.576 : U64 = lowlevel ListLen #Attr.2;
ret List.576;
procedure List.66 (#Attr.2, #Attr.3):
let List.563 : {Str, Str} = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.563;
procedure List.66 (#Attr.2, #Attr.3):
let List.575 : {Str, Str} = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.575;
procedure List.88 (#Derived_gen.30, #Derived_gen.31, #Derived_gen.32, #Derived_gen.33, #Derived_gen.34):
joinpoint List.568 List.157 List.158 List.159 List.160 List.161:
let List.570 : Int1 = CallByName Num.22 List.160 List.161;
if List.570 then
let List.574 : {Str, Str} = CallByName List.66 List.157 List.160;
inc List.574;
let List.162 : {Str, Int1} = CallByName Inspect.232 List.158 List.574;
let List.573 : U64 = 1i64;
let List.572 : U64 = CallByName Num.51 List.160 List.573;
jump List.568 List.157 List.162 List.159 List.572 List.161;
else
dec List.157;
ret List.158;
in
jump List.568 #Derived_gen.30 #Derived_gen.31 #Derived_gen.32 #Derived_gen.33 #Derived_gen.34;
procedure List.88 (#Derived_gen.41, #Derived_gen.42, #Derived_gen.43, #Derived_gen.44, #Derived_gen.45):
joinpoint List.556 List.157 List.158 List.159 List.160 List.161:
let List.558 : Int1 = CallByName Num.22 List.160 List.161;
if List.558 then
let List.562 : {Str, Str} = CallByName List.66 List.157 List.160;
inc List.562;
let List.162 : {Str, Int1} = CallByName Inspect.232 List.158 List.562;
let List.561 : U64 = 1i64;
let List.560 : U64 = CallByName Num.51 List.160 List.561;
jump List.556 List.157 List.162 List.159 List.560 List.161;
else
dec List.157;
ret List.158;
in
jump List.556 #Derived_gen.41 #Derived_gen.42 #Derived_gen.43 #Derived_gen.44 #Derived_gen.45;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.294 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.294;
procedure Num.51 (#Attr.2, #Attr.3):
let Num.293 : U64 = lowlevel NumAddWrap #Attr.2 #Attr.3;
ret Num.293;
procedure Str.3 (#Attr.2, #Attr.3):
let Str.293 : Str = lowlevel StrConcat #Attr.2 #Attr.3;
ret Str.293;
procedure Test.0 ():
let Test.5 : Str = "bar";
let Test.2 : Str = CallByName Inspect.5 Test.5;
let Test.1 : Str = CallByName Inspect.35 Test.2;
ret Test.1;

View file

@ -0,0 +1,204 @@
procedure #Derived.0 (#Derived.1):
let #Derived_gen.0 : {Decimal, I64} = CallByName Inspect.30 #Derived.1;
ret #Derived_gen.0;
procedure #Derived.2 (#Derived.3, #Derived.1):
let #Derived_gen.13 : I64 = StructAtIndex 1 #Derived.1;
let #Derived_gen.11 : [C I64, C Decimal] = CallByName Inspect.54 #Derived_gen.13;
let #Derived_gen.12 : Str = "a";
let #Derived_gen.6 : {[C I64, C Decimal], Str} = Struct {#Derived_gen.11, #Derived_gen.12};
let #Derived_gen.10 : Decimal = StructAtIndex 0 #Derived.1;
let #Derived_gen.8 : [C I64, C Decimal] = CallByName Inspect.60 #Derived_gen.10;
let #Derived_gen.9 : Str = "b";
let #Derived_gen.7 : {[C I64, C Decimal], Str} = Struct {#Derived_gen.8, #Derived_gen.9};
let #Derived_gen.5 : List {[C I64, C Decimal], Str} = Array [#Derived_gen.6, #Derived_gen.7];
let #Derived_gen.4 : List {[C I64, C Decimal], Str} = CallByName Inspect.42 #Derived_gen.5;
let #Derived_gen.3 : Str = CallByName Inspect.31 #Derived_gen.4 #Derived.3;
ret #Derived_gen.3;
procedure Bool.1 ():
let Bool.24 : Int1 = false;
ret Bool.24;
procedure Bool.2 ():
let Bool.23 : Int1 = true;
ret Bool.23;
procedure Inspect.228 (Inspect.229, Inspect.227):
let Inspect.351 : Str = "{";
let Inspect.328 : Str = CallByName Inspect.61 Inspect.229 Inspect.351;
let Inspect.324 : {Str, Int1} = CallByName Inspect.230 Inspect.328 Inspect.227;
let Inspect.325 : {} = Struct {};
let Inspect.320 : Str = CallByName Inspect.242 Inspect.324;
let Inspect.321 : Str = "}";
let Inspect.319 : Str = CallByName Inspect.61 Inspect.320 Inspect.321;
ret Inspect.319;
procedure Inspect.230 (Inspect.231, Inspect.227):
let Bool.1 : Int1 = CallByName Bool.1;
let Inspect.332 : {Str, Int1} = Struct {Inspect.231, Bool.1};
let Inspect.333 : {} = Struct {};
let Inspect.331 : {Str, Int1} = CallByName List.18 Inspect.227 Inspect.332 Inspect.333;
ret Inspect.331;
procedure Inspect.232 (Inspect.334, Inspect.335):
let Inspect.236 : [C I64, C Decimal] = StructAtIndex 0 Inspect.335;
let Inspect.235 : Str = StructAtIndex 1 Inspect.335;
let Inspect.233 : Str = StructAtIndex 0 Inspect.334;
let Inspect.234 : Int1 = StructAtIndex 1 Inspect.334;
joinpoint Inspect.349 Inspect.237:
let Inspect.346 : Str = CallByName Inspect.61 Inspect.237 Inspect.235;
let Inspect.347 : Str = ": ";
let Inspect.340 : Str = CallByName Inspect.61 Inspect.346 Inspect.347;
let Inspect.337 : Str = CallByName Inspect.238 Inspect.340 Inspect.236;
let Inspect.338 : {} = Struct {};
let Inspect.336 : {Str, Int1} = CallByName Inspect.240 Inspect.337;
ret Inspect.336;
in
if Inspect.234 then
let Inspect.350 : Str = ", ";
let Inspect.348 : Str = CallByName Inspect.61 Inspect.233 Inspect.350;
jump Inspect.349 Inspect.348;
else
jump Inspect.349 Inspect.233;
procedure Inspect.238 (Inspect.239, Inspect.236):
let Inspect.343 : Str = CallByName Inspect.31 Inspect.236 Inspect.239;
ret Inspect.343;
procedure Inspect.240 (Inspect.241):
let Bool.2 : Int1 = CallByName Bool.2;
let Inspect.339 : {Str, Int1} = Struct {Inspect.241, Bool.2};
ret Inspect.339;
procedure Inspect.242 (Inspect.326):
let Inspect.327 : Str = StructAtIndex 0 Inspect.326;
ret Inspect.327;
procedure Inspect.277 (Inspect.278, #Attr.12):
let Inspect.364 : I64 = UnionAtIndex (Id 0) (Index 0) #Attr.12;
let Inspect.363 : Str = CallByName Num.96 Inspect.364;
let Inspect.362 : Str = CallByName Inspect.61 Inspect.278 Inspect.363;
ret Inspect.362;
procedure Inspect.295 (Inspect.296, #Attr.12):
let Inspect.358 : Decimal = UnionAtIndex (Id 1) (Index 0) #Attr.12;
let Inspect.357 : Str = CallByName Num.96 Inspect.358;
let Inspect.356 : Str = CallByName Inspect.61 Inspect.296 Inspect.357;
ret Inspect.356;
procedure Inspect.30 (Inspect.147):
ret Inspect.147;
procedure Inspect.30 (Inspect.147):
ret Inspect.147;
procedure Inspect.30 (Inspect.147):
ret Inspect.147;
procedure Inspect.31 (Inspect.305, Inspect.149):
let Inspect.314 : Str = CallByName Inspect.228 Inspect.149 Inspect.305;
ret Inspect.314;
procedure Inspect.31 (Inspect.305, Inspect.149):
let Inspect.345 : U8 = GetTagId Inspect.305;
switch Inspect.345:
case 0:
let Inspect.344 : Str = CallByName Inspect.277 Inspect.149 Inspect.305;
ret Inspect.344;
default:
let Inspect.344 : Str = CallByName Inspect.295 Inspect.149 Inspect.305;
ret Inspect.344;
procedure Inspect.35 (Inspect.300):
ret Inspect.300;
procedure Inspect.36 (Inspect.304):
let Inspect.311 : Str = "";
ret Inspect.311;
procedure Inspect.42 (Inspect.227):
let Inspect.315 : List {[C I64, C Decimal], Str} = CallByName Inspect.30 Inspect.227;
ret Inspect.315;
procedure Inspect.5 (Inspect.150):
let Inspect.312 : {Decimal, I64} = CallByName #Derived.0 Inspect.150;
let Inspect.309 : {} = Struct {};
let Inspect.308 : Str = CallByName Inspect.36 Inspect.309;
let Inspect.307 : Str = CallByName #Derived.2 Inspect.308 Inspect.312;
ret Inspect.307;
procedure Inspect.54 (Inspect.276):
let Inspect.360 : [C I64, C Decimal] = TagId(0) Inspect.276;
let Inspect.359 : [C I64, C Decimal] = CallByName Inspect.30 Inspect.360;
ret Inspect.359;
procedure Inspect.60 (Inspect.294):
let Inspect.353 : [C I64, C Decimal] = TagId(1) Inspect.294;
let Inspect.352 : [C I64, C Decimal] = CallByName Inspect.30 Inspect.353;
ret Inspect.352;
procedure Inspect.61 (Inspect.303, Inspect.298):
let Inspect.323 : Str = CallByName Str.3 Inspect.303 Inspect.298;
dec Inspect.298;
ret Inspect.323;
procedure List.18 (List.154, List.155, List.156):
let List.554 : U64 = 0i64;
let List.555 : U64 = CallByName List.6 List.154;
let List.553 : {Str, Int1} = CallByName List.88 List.154 List.155 List.156 List.554 List.555;
ret List.553;
procedure List.6 (#Attr.2):
let List.564 : U64 = lowlevel ListLen #Attr.2;
ret List.564;
procedure List.66 (#Attr.2, #Attr.3):
let List.563 : {[C I64, C Decimal], Str} = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.563;
procedure List.88 (#Derived_gen.14, #Derived_gen.15, #Derived_gen.16, #Derived_gen.17, #Derived_gen.18):
joinpoint List.556 List.157 List.158 List.159 List.160 List.161:
let List.558 : Int1 = CallByName Num.22 List.160 List.161;
if List.558 then
let List.562 : {[C I64, C Decimal], Str} = CallByName List.66 List.157 List.160;
inc List.562;
let List.162 : {Str, Int1} = CallByName Inspect.232 List.158 List.562;
let List.561 : U64 = 1i64;
let List.560 : U64 = CallByName Num.51 List.160 List.561;
jump List.556 List.157 List.162 List.159 List.560 List.161;
else
dec List.157;
ret List.158;
in
jump List.556 #Derived_gen.14 #Derived_gen.15 #Derived_gen.16 #Derived_gen.17 #Derived_gen.18;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.294 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.294;
procedure Num.51 (#Attr.2, #Attr.3):
let Num.293 : U64 = lowlevel NumAddWrap #Attr.2 #Attr.3;
ret Num.293;
procedure Num.96 (#Attr.2):
let Num.291 : Str = lowlevel NumToStr #Attr.2;
ret Num.291;
procedure Num.96 (#Attr.2):
let Num.292 : Str = lowlevel NumToStr #Attr.2;
ret Num.292;
procedure Str.3 (#Attr.2, #Attr.3):
let Str.292 : Str = lowlevel StrConcat #Attr.2 #Attr.3;
ret Str.292;
procedure Test.0 ():
let Test.4 : Decimal = 3dec;
let Test.5 : I64 = 7i64;
let Test.3 : {Decimal, I64} = Struct {Test.4, Test.5};
let Test.2 : Str = CallByName Inspect.5 Test.3;
let Test.1 : Str = CallByName Inspect.35 Test.2;
ret Test.1;

View file

@ -0,0 +1,171 @@
procedure #Derived.0 (#Derived.1):
let #Derived_gen.0 : Str = CallByName Inspect.30 #Derived.1;
ret #Derived_gen.0;
procedure #Derived.2 (#Derived.3, #Derived.1):
let #Derived_gen.7 : Str = "a";
let #Derived_gen.8 : Str = CallByName Inspect.44 #Derived.1;
let #Derived_gen.6 : {Str, Str} = Struct {#Derived_gen.7, #Derived_gen.8};
let #Derived_gen.5 : List {Str, Str} = Array [#Derived_gen.6];
let #Derived_gen.4 : List {Str, Str} = CallByName Inspect.42 #Derived_gen.5;
let #Derived_gen.3 : Str = CallByName Inspect.31 #Derived_gen.4 #Derived.3;
ret #Derived_gen.3;
procedure Bool.1 ():
let Bool.24 : Int1 = false;
ret Bool.24;
procedure Bool.2 ():
let Bool.23 : Int1 = true;
ret Bool.23;
procedure Inspect.228 (Inspect.229, Inspect.227):
let Inspect.350 : Str = "{";
let Inspect.328 : Str = CallByName Inspect.61 Inspect.229 Inspect.350;
let Inspect.324 : {Str, Int1} = CallByName Inspect.230 Inspect.328 Inspect.227;
let Inspect.325 : {} = Struct {};
let Inspect.320 : Str = CallByName Inspect.242 Inspect.324;
let Inspect.321 : Str = "}";
let Inspect.319 : Str = CallByName Inspect.61 Inspect.320 Inspect.321;
ret Inspect.319;
procedure Inspect.230 (Inspect.231, Inspect.227):
let Bool.1 : Int1 = CallByName Bool.1;
let Inspect.332 : {Str, Int1} = Struct {Inspect.231, Bool.1};
let Inspect.333 : {} = Struct {};
let Inspect.331 : {Str, Int1} = CallByName List.18 Inspect.227 Inspect.332 Inspect.333;
ret Inspect.331;
procedure Inspect.232 (Inspect.334, Inspect.335):
let Inspect.235 : Str = StructAtIndex 0 Inspect.335;
let Inspect.236 : Str = StructAtIndex 1 Inspect.335;
let Inspect.233 : Str = StructAtIndex 0 Inspect.334;
let Inspect.234 : Int1 = StructAtIndex 1 Inspect.334;
joinpoint Inspect.348 Inspect.237:
let Inspect.345 : Str = CallByName Inspect.61 Inspect.237 Inspect.235;
let Inspect.346 : Str = ": ";
let Inspect.340 : Str = CallByName Inspect.61 Inspect.345 Inspect.346;
let Inspect.337 : Str = CallByName Inspect.238 Inspect.340 Inspect.236;
let Inspect.338 : {} = Struct {};
let Inspect.336 : {Str, Int1} = CallByName Inspect.240 Inspect.337;
ret Inspect.336;
in
if Inspect.234 then
let Inspect.349 : Str = ", ";
let Inspect.347 : Str = CallByName Inspect.61 Inspect.233 Inspect.349;
jump Inspect.348 Inspect.347;
else
jump Inspect.348 Inspect.233;
procedure Inspect.238 (Inspect.239, Inspect.236):
let Inspect.343 : Str = CallByName Inspect.31 Inspect.236 Inspect.239;
ret Inspect.343;
procedure Inspect.240 (Inspect.241):
let Bool.2 : Int1 = CallByName Bool.2;
let Inspect.339 : {Str, Int1} = Struct {Inspect.241, Bool.2};
ret Inspect.339;
procedure Inspect.242 (Inspect.326):
let Inspect.327 : Str = StructAtIndex 0 Inspect.326;
ret Inspect.327;
procedure Inspect.249 (Inspect.250, Inspect.248):
let Inspect.359 : Str = "\"";
let Inspect.358 : Str = CallByName Inspect.61 Inspect.250 Inspect.359;
let Inspect.356 : Str = CallByName Inspect.61 Inspect.358 Inspect.248;
let Inspect.357 : Str = "\"";
let Inspect.355 : Str = CallByName Inspect.61 Inspect.356 Inspect.357;
ret Inspect.355;
procedure Inspect.30 (Inspect.147):
ret Inspect.147;
procedure Inspect.30 (Inspect.147):
ret Inspect.147;
procedure Inspect.30 (Inspect.147):
ret Inspect.147;
procedure Inspect.31 (Inspect.305, Inspect.149):
let Inspect.314 : Str = CallByName Inspect.228 Inspect.149 Inspect.305;
ret Inspect.314;
procedure Inspect.31 (Inspect.305, Inspect.149):
let Inspect.344 : Str = CallByName Inspect.249 Inspect.149 Inspect.305;
ret Inspect.344;
procedure Inspect.35 (Inspect.300):
ret Inspect.300;
procedure Inspect.36 (Inspect.304):
let Inspect.311 : Str = "";
ret Inspect.311;
procedure Inspect.42 (Inspect.227):
let Inspect.315 : List {Str, Str} = CallByName Inspect.30 Inspect.227;
ret Inspect.315;
procedure Inspect.44 (Inspect.248):
let Inspect.351 : Str = CallByName Inspect.30 Inspect.248;
ret Inspect.351;
procedure Inspect.5 (Inspect.150):
let Inspect.312 : Str = CallByName #Derived.0 Inspect.150;
let Inspect.309 : {} = Struct {};
let Inspect.308 : Str = CallByName Inspect.36 Inspect.309;
let Inspect.307 : Str = CallByName #Derived.2 Inspect.308 Inspect.312;
ret Inspect.307;
procedure Inspect.61 (Inspect.303, Inspect.298):
let Inspect.323 : Str = CallByName Str.3 Inspect.303 Inspect.298;
dec Inspect.298;
ret Inspect.323;
procedure List.18 (List.154, List.155, List.156):
let List.554 : U64 = 0i64;
let List.555 : U64 = CallByName List.6 List.154;
let List.553 : {Str, Int1} = CallByName List.88 List.154 List.155 List.156 List.554 List.555;
ret List.553;
procedure List.6 (#Attr.2):
let List.564 : U64 = lowlevel ListLen #Attr.2;
ret List.564;
procedure List.66 (#Attr.2, #Attr.3):
let List.563 : {Str, Str} = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.563;
procedure List.88 (#Derived_gen.14, #Derived_gen.15, #Derived_gen.16, #Derived_gen.17, #Derived_gen.18):
joinpoint List.556 List.157 List.158 List.159 List.160 List.161:
let List.558 : Int1 = CallByName Num.22 List.160 List.161;
if List.558 then
let List.562 : {Str, Str} = CallByName List.66 List.157 List.160;
inc List.562;
let List.162 : {Str, Int1} = CallByName Inspect.232 List.158 List.562;
let List.561 : U64 = 1i64;
let List.560 : U64 = CallByName Num.51 List.160 List.561;
jump List.556 List.157 List.162 List.159 List.560 List.161;
else
dec List.157;
ret List.158;
in
jump List.556 #Derived_gen.14 #Derived_gen.15 #Derived_gen.16 #Derived_gen.17 #Derived_gen.18;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.292 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.292;
procedure Num.51 (#Attr.2, #Attr.3):
let Num.291 : U64 = lowlevel NumAddWrap #Attr.2 #Attr.3;
ret Num.291;
procedure Str.3 (#Attr.2, #Attr.3):
let Str.292 : Str = lowlevel StrConcat #Attr.2 #Attr.3;
ret Str.292;
procedure Test.0 ():
let Test.4 : Str = "foo";
let Test.2 : Str = CallByName Inspect.5 Test.4;
let Test.1 : Str = CallByName Inspect.35 Test.2;
ret Test.1;

View file

@ -0,0 +1,180 @@
procedure #Derived.0 (#Derived.1):
let #Derived_gen.0 : {Str, Str} = CallByName Inspect.30 #Derived.1;
ret #Derived_gen.0;
procedure #Derived.2 (#Derived.3, #Derived.1):
let #Derived_gen.11 : Str = "a";
let #Derived_gen.13 : Str = StructAtIndex 0 #Derived.1;
inc #Derived_gen.13;
let #Derived_gen.12 : Str = CallByName Inspect.44 #Derived_gen.13;
let #Derived_gen.6 : {Str, Str} = Struct {#Derived_gen.11, #Derived_gen.12};
let #Derived_gen.8 : Str = "b";
let #Derived_gen.10 : Str = StructAtIndex 1 #Derived.1;
dec #Derived_gen.13;
let #Derived_gen.9 : Str = CallByName Inspect.44 #Derived_gen.10;
let #Derived_gen.7 : {Str, Str} = Struct {#Derived_gen.8, #Derived_gen.9};
let #Derived_gen.5 : List {Str, Str} = Array [#Derived_gen.6, #Derived_gen.7];
let #Derived_gen.4 : List {Str, Str} = CallByName Inspect.42 #Derived_gen.5;
let #Derived_gen.3 : Str = CallByName Inspect.31 #Derived_gen.4 #Derived.3;
ret #Derived_gen.3;
procedure Bool.1 ():
let Bool.24 : Int1 = false;
ret Bool.24;
procedure Bool.2 ():
let Bool.23 : Int1 = true;
ret Bool.23;
procedure Inspect.228 (Inspect.229, Inspect.227):
let Inspect.350 : Str = "{";
let Inspect.328 : Str = CallByName Inspect.61 Inspect.229 Inspect.350;
let Inspect.324 : {Str, Int1} = CallByName Inspect.230 Inspect.328 Inspect.227;
let Inspect.325 : {} = Struct {};
let Inspect.320 : Str = CallByName Inspect.242 Inspect.324;
let Inspect.321 : Str = "}";
let Inspect.319 : Str = CallByName Inspect.61 Inspect.320 Inspect.321;
ret Inspect.319;
procedure Inspect.230 (Inspect.231, Inspect.227):
let Bool.1 : Int1 = CallByName Bool.1;
let Inspect.332 : {Str, Int1} = Struct {Inspect.231, Bool.1};
let Inspect.333 : {} = Struct {};
let Inspect.331 : {Str, Int1} = CallByName List.18 Inspect.227 Inspect.332 Inspect.333;
ret Inspect.331;
procedure Inspect.232 (Inspect.334, Inspect.335):
let Inspect.235 : Str = StructAtIndex 0 Inspect.335;
let Inspect.236 : Str = StructAtIndex 1 Inspect.335;
let Inspect.233 : Str = StructAtIndex 0 Inspect.334;
let Inspect.234 : Int1 = StructAtIndex 1 Inspect.334;
joinpoint Inspect.348 Inspect.237:
let Inspect.345 : Str = CallByName Inspect.61 Inspect.237 Inspect.235;
let Inspect.346 : Str = ": ";
let Inspect.340 : Str = CallByName Inspect.61 Inspect.345 Inspect.346;
let Inspect.337 : Str = CallByName Inspect.238 Inspect.340 Inspect.236;
let Inspect.338 : {} = Struct {};
let Inspect.336 : {Str, Int1} = CallByName Inspect.240 Inspect.337;
ret Inspect.336;
in
if Inspect.234 then
let Inspect.349 : Str = ", ";
let Inspect.347 : Str = CallByName Inspect.61 Inspect.233 Inspect.349;
jump Inspect.348 Inspect.347;
else
jump Inspect.348 Inspect.233;
procedure Inspect.238 (Inspect.239, Inspect.236):
let Inspect.343 : Str = CallByName Inspect.31 Inspect.236 Inspect.239;
ret Inspect.343;
procedure Inspect.240 (Inspect.241):
let Bool.2 : Int1 = CallByName Bool.2;
let Inspect.339 : {Str, Int1} = Struct {Inspect.241, Bool.2};
ret Inspect.339;
procedure Inspect.242 (Inspect.326):
let Inspect.327 : Str = StructAtIndex 0 Inspect.326;
ret Inspect.327;
procedure Inspect.249 (Inspect.250, Inspect.248):
let Inspect.359 : Str = "\"";
let Inspect.358 : Str = CallByName Inspect.61 Inspect.250 Inspect.359;
let Inspect.356 : Str = CallByName Inspect.61 Inspect.358 Inspect.248;
let Inspect.357 : Str = "\"";
let Inspect.355 : Str = CallByName Inspect.61 Inspect.356 Inspect.357;
ret Inspect.355;
procedure Inspect.30 (Inspect.147):
ret Inspect.147;
procedure Inspect.30 (Inspect.147):
ret Inspect.147;
procedure Inspect.30 (Inspect.147):
ret Inspect.147;
procedure Inspect.31 (Inspect.305, Inspect.149):
let Inspect.314 : Str = CallByName Inspect.228 Inspect.149 Inspect.305;
ret Inspect.314;
procedure Inspect.31 (Inspect.305, Inspect.149):
let Inspect.344 : Str = CallByName Inspect.249 Inspect.149 Inspect.305;
ret Inspect.344;
procedure Inspect.35 (Inspect.300):
ret Inspect.300;
procedure Inspect.36 (Inspect.304):
let Inspect.311 : Str = "";
ret Inspect.311;
procedure Inspect.42 (Inspect.227):
let Inspect.315 : List {Str, Str} = CallByName Inspect.30 Inspect.227;
ret Inspect.315;
procedure Inspect.44 (Inspect.248):
let Inspect.360 : Str = CallByName Inspect.30 Inspect.248;
ret Inspect.360;
procedure Inspect.5 (Inspect.150):
let Inspect.312 : {Str, Str} = CallByName #Derived.0 Inspect.150;
let Inspect.309 : {} = Struct {};
let Inspect.308 : Str = CallByName Inspect.36 Inspect.309;
let Inspect.307 : Str = CallByName #Derived.2 Inspect.308 Inspect.312;
ret Inspect.307;
procedure Inspect.61 (Inspect.303, Inspect.298):
let Inspect.323 : Str = CallByName Str.3 Inspect.303 Inspect.298;
dec Inspect.298;
ret Inspect.323;
procedure List.18 (List.154, List.155, List.156):
let List.554 : U64 = 0i64;
let List.555 : U64 = CallByName List.6 List.154;
let List.553 : {Str, Int1} = CallByName List.88 List.154 List.155 List.156 List.554 List.555;
ret List.553;
procedure List.6 (#Attr.2):
let List.564 : U64 = lowlevel ListLen #Attr.2;
ret List.564;
procedure List.66 (#Attr.2, #Attr.3):
let List.563 : {Str, Str} = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.563;
procedure List.88 (#Derived_gen.18, #Derived_gen.19, #Derived_gen.20, #Derived_gen.21, #Derived_gen.22):
joinpoint List.556 List.157 List.158 List.159 List.160 List.161:
let List.558 : Int1 = CallByName Num.22 List.160 List.161;
if List.558 then
let List.562 : {Str, Str} = CallByName List.66 List.157 List.160;
inc List.562;
let List.162 : {Str, Int1} = CallByName Inspect.232 List.158 List.562;
let List.561 : U64 = 1i64;
let List.560 : U64 = CallByName Num.51 List.160 List.561;
jump List.556 List.157 List.162 List.159 List.560 List.161;
else
dec List.157;
ret List.158;
in
jump List.556 #Derived_gen.18 #Derived_gen.19 #Derived_gen.20 #Derived_gen.21 #Derived_gen.22;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.292 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.292;
procedure Num.51 (#Attr.2, #Attr.3):
let Num.291 : U64 = lowlevel NumAddWrap #Attr.2 #Attr.3;
ret Num.291;
procedure Str.3 (#Attr.2, #Attr.3):
let Str.292 : Str = lowlevel StrConcat #Attr.2 #Attr.3;
ret Str.292;
procedure Test.0 ():
let Test.4 : Str = "foo";
let Test.5 : Str = "bar";
let Test.3 : {Str, Str} = Struct {Test.4, Test.5};
let Test.2 : Str = CallByName Inspect.5 Test.3;
let Test.1 : Str = CallByName Inspect.35 Test.2;
ret Test.1;

View file

@ -1,17 +1,13 @@
procedure Inspect.147 (Inspect.317):
procedure Inspect.249 (Inspect.250, Inspect.248):
let Inspect.323 : Str = "\"";
let Inspect.322 : Str = CallByName Inspect.61 Inspect.250 Inspect.323;
let Inspect.318 : Str = CallByName Inspect.61 Inspect.322 Inspect.248;
let Inspect.319 : Str = "\"";
let Inspect.317 : Str = CallByName Inspect.61 Inspect.318 Inspect.319;
ret Inspect.317;
procedure Inspect.249 (Inspect.250, Inspect.248):
let Inspect.326 : Str = "\"";
let Inspect.325 : Str = CallByName Inspect.61 Inspect.250 Inspect.326;
let Inspect.321 : Str = CallByName Inspect.61 Inspect.325 Inspect.248;
let Inspect.322 : Str = "\"";
let Inspect.320 : Str = CallByName Inspect.61 Inspect.321 Inspect.322;
ret Inspect.320;
procedure Inspect.30 ():
let Inspect.316 : {} = Struct {};
ret Inspect.316;
procedure Inspect.30 (Inspect.147):
ret Inspect.147;
procedure Inspect.35 (Inspect.300):
ret Inspect.300;
@ -21,8 +17,7 @@ procedure Inspect.36 (Inspect.304):
ret Inspect.311;
procedure Inspect.44 (Inspect.248):
let Inspect.314 : {} = CallByName Inspect.30;
let Inspect.313 : Str = CallByName Inspect.147 Inspect.248;
let Inspect.313 : Str = CallByName Inspect.30 Inspect.248;
ret Inspect.313;
procedure Inspect.5 (Inspect.150):
@ -33,9 +28,9 @@ procedure Inspect.5 (Inspect.150):
ret Inspect.307;
procedure Inspect.61 (Inspect.303, Inspect.298):
let Inspect.324 : Str = CallByName Str.3 Inspect.303 Inspect.298;
let Inspect.321 : Str = CallByName Str.3 Inspect.303 Inspect.298;
dec Inspect.298;
ret Inspect.324;
ret Inspect.321;
procedure Str.3 (#Attr.2, #Attr.3):
let Str.292 : Str = lowlevel StrConcat #Attr.2 #Attr.3;

View file

@ -0,0 +1,173 @@
procedure #Derived.0 (#Derived.1):
let #Derived_gen.0 : Str = CallByName Inspect.30 #Derived.1;
ret #Derived_gen.0;
procedure #Derived.3 (#Derived.4, #Derived.1):
joinpoint #Derived_gen.5 #Derived_gen.4:
let #Derived_gen.3 : Str = CallByName Inspect.31 #Derived_gen.4 #Derived.4;
ret #Derived_gen.3;
in
let #Derived_gen.7 : Str = "A";
let #Derived_gen.9 : Str = CallByName Inspect.44 #Derived.1;
let #Derived_gen.8 : List Str = Array [#Derived_gen.9];
let #Derived_gen.6 : [C Str, C Str List Str] = CallByName Inspect.40 #Derived_gen.7 #Derived_gen.8;
jump #Derived_gen.5 #Derived_gen.6;
procedure Bool.11 (#Attr.2, #Attr.3):
let Bool.23 : Int1 = lowlevel Eq #Attr.2 #Attr.3;
ret Bool.23;
procedure Inspect.203 (Inspect.204, #Attr.12):
let Inspect.346 : Str = UnionAtIndex (Id 0) (Index 0) #Attr.12;
let Inspect.345 : Str = CallByName Inspect.61 Inspect.204 Inspect.346;
ret Inspect.345;
procedure Inspect.205 (Inspect.206, #Attr.12):
let Inspect.340 : List Str = UnionAtIndex (Id 1) (Index 1) #Attr.12;
let Inspect.339 : Str = UnionAtIndex (Id 1) (Index 0) #Attr.12;
let Inspect.338 : Str = "(";
let Inspect.337 : Str = CallByName Inspect.61 Inspect.206 Inspect.338;
let Inspect.325 : Str = CallByName Inspect.61 Inspect.337 Inspect.339;
let Inspect.321 : Str = CallByName Inspect.207 Inspect.325 Inspect.340;
let Inspect.322 : Str = ")";
let Inspect.320 : Str = CallByName Inspect.61 Inspect.321 Inspect.322;
ret Inspect.320;
procedure Inspect.207 (Inspect.208, Inspect.202):
let Inspect.329 : {} = Struct {};
let Inspect.328 : Str = CallByName List.18 Inspect.202 Inspect.208 Inspect.329;
ret Inspect.328;
procedure Inspect.209 (Inspect.210, Inspect.211):
let Inspect.336 : Str = " ";
let Inspect.331 : Str = CallByName Inspect.61 Inspect.210 Inspect.336;
let Inspect.330 : Str = CallByName Inspect.212 Inspect.331 Inspect.211;
ret Inspect.330;
procedure Inspect.212 (Inspect.213, Inspect.211):
let Inspect.334 : Str = CallByName Inspect.31 Inspect.211 Inspect.213;
ret Inspect.334;
procedure Inspect.249 (Inspect.250, Inspect.248):
let Inspect.355 : Str = "\"";
let Inspect.354 : Str = CallByName Inspect.61 Inspect.250 Inspect.355;
let Inspect.352 : Str = CallByName Inspect.61 Inspect.354 Inspect.248;
let Inspect.353 : Str = "\"";
let Inspect.351 : Str = CallByName Inspect.61 Inspect.352 Inspect.353;
ret Inspect.351;
procedure Inspect.30 (Inspect.147):
ret Inspect.147;
procedure Inspect.30 (Inspect.147):
ret Inspect.147;
procedure Inspect.30 (Inspect.147):
ret Inspect.147;
procedure Inspect.31 (Inspect.305, Inspect.149):
let Inspect.315 : U8 = GetTagId Inspect.305;
switch Inspect.315:
case 0:
let Inspect.314 : Str = CallByName Inspect.203 Inspect.149 Inspect.305;
ret Inspect.314;
default:
let Inspect.314 : Str = CallByName Inspect.205 Inspect.149 Inspect.305;
ret Inspect.314;
procedure Inspect.31 (Inspect.305, Inspect.149):
let Inspect.335 : Str = CallByName Inspect.249 Inspect.149 Inspect.305;
ret Inspect.335;
procedure Inspect.35 (Inspect.300):
ret Inspect.300;
procedure Inspect.36 (Inspect.304):
let Inspect.311 : Str = "";
ret Inspect.311;
procedure Inspect.40 (Inspect.201, Inspect.202):
inc Inspect.202;
let Inspect.341 : Int1 = CallByName List.1 Inspect.202;
if Inspect.341 then
dec Inspect.202;
let Inspect.343 : [C Str, C Str List Str] = TagId(0) Inspect.201;
let Inspect.342 : [C Str, C Str List Str] = CallByName Inspect.30 Inspect.343;
ret Inspect.342;
else
let Inspect.317 : [C Str, C Str List Str] = TagId(1) Inspect.201 Inspect.202;
let Inspect.316 : [C Str, C Str List Str] = CallByName Inspect.30 Inspect.317;
ret Inspect.316;
procedure Inspect.44 (Inspect.248):
let Inspect.347 : Str = CallByName Inspect.30 Inspect.248;
ret Inspect.347;
procedure Inspect.5 (Inspect.150):
let Inspect.312 : Str = CallByName #Derived.0 Inspect.150;
let Inspect.309 : {} = Struct {};
let Inspect.308 : Str = CallByName Inspect.36 Inspect.309;
let Inspect.307 : Str = CallByName #Derived.3 Inspect.308 Inspect.312;
ret Inspect.307;
procedure Inspect.61 (Inspect.303, Inspect.298):
let Inspect.324 : Str = CallByName Str.3 Inspect.303 Inspect.298;
dec Inspect.298;
ret Inspect.324;
procedure List.1 (List.102):
let List.566 : U64 = CallByName List.6 List.102;
dec List.102;
let List.567 : U64 = 0i64;
let List.565 : Int1 = CallByName Bool.11 List.566 List.567;
ret List.565;
procedure List.18 (List.154, List.155, List.156):
let List.554 : U64 = 0i64;
let List.555 : U64 = CallByName List.6 List.154;
let List.553 : Str = CallByName List.88 List.154 List.155 List.156 List.554 List.555;
ret List.553;
procedure List.6 (#Attr.2):
let List.564 : U64 = lowlevel ListLen #Attr.2;
ret List.564;
procedure List.66 (#Attr.2, #Attr.3):
let List.563 : Str = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.563;
procedure List.88 (#Derived_gen.18, #Derived_gen.19, #Derived_gen.20, #Derived_gen.21, #Derived_gen.22):
joinpoint List.556 List.157 List.158 List.159 List.160 List.161:
let List.558 : Int1 = CallByName Num.22 List.160 List.161;
if List.558 then
let List.562 : Str = CallByName List.66 List.157 List.160;
inc List.562;
let List.162 : Str = CallByName Inspect.209 List.158 List.562;
let List.561 : U64 = 1i64;
let List.560 : U64 = CallByName Num.51 List.160 List.561;
jump List.556 List.157 List.162 List.159 List.560 List.161;
else
dec List.157;
ret List.158;
in
jump List.556 #Derived_gen.18 #Derived_gen.19 #Derived_gen.20 #Derived_gen.21 #Derived_gen.22;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.292 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.292;
procedure Num.51 (#Attr.2, #Attr.3):
let Num.291 : U64 = lowlevel NumAddWrap #Attr.2 #Attr.3;
ret Num.291;
procedure Str.3 (#Attr.2, #Attr.3):
let Str.292 : Str = lowlevel StrConcat #Attr.2 #Attr.3;
ret Str.292;
procedure Test.0 ():
let Test.5 : Str = "foo";
let Test.4 : Str = CallByName Inspect.5 Test.5;
let Test.3 : Str = CallByName Inspect.35 Test.4;
ret Test.3;

View file

@ -0,0 +1,178 @@
procedure #Derived.0 (#Derived.1):
let #Derived_gen.0 : {Str, Str} = CallByName Inspect.30 #Derived.1;
ret #Derived_gen.0;
procedure #Derived.4 (#Derived.5, #Derived.1):
joinpoint #Derived_gen.5 #Derived_gen.4:
let #Derived_gen.3 : Str = CallByName Inspect.31 #Derived_gen.4 #Derived.5;
ret #Derived_gen.3;
in
let #Derived.2 : Str = StructAtIndex 0 #Derived.1;
let #Derived.3 : Str = StructAtIndex 1 #Derived.1;
let #Derived_gen.7 : Str = "A";
let #Derived_gen.9 : Str = CallByName Inspect.44 #Derived.2;
let #Derived_gen.10 : Str = CallByName Inspect.44 #Derived.3;
let #Derived_gen.8 : List Str = Array [#Derived_gen.9, #Derived_gen.10];
let #Derived_gen.6 : [C Str, C Str List Str] = CallByName Inspect.40 #Derived_gen.7 #Derived_gen.8;
jump #Derived_gen.5 #Derived_gen.6;
procedure Bool.11 (#Attr.2, #Attr.3):
let Bool.23 : Int1 = lowlevel Eq #Attr.2 #Attr.3;
ret Bool.23;
procedure Inspect.203 (Inspect.204, #Attr.12):
let Inspect.346 : Str = UnionAtIndex (Id 0) (Index 0) #Attr.12;
let Inspect.345 : Str = CallByName Inspect.61 Inspect.204 Inspect.346;
ret Inspect.345;
procedure Inspect.205 (Inspect.206, #Attr.12):
let Inspect.340 : List Str = UnionAtIndex (Id 1) (Index 1) #Attr.12;
let Inspect.339 : Str = UnionAtIndex (Id 1) (Index 0) #Attr.12;
let Inspect.338 : Str = "(";
let Inspect.337 : Str = CallByName Inspect.61 Inspect.206 Inspect.338;
let Inspect.325 : Str = CallByName Inspect.61 Inspect.337 Inspect.339;
let Inspect.321 : Str = CallByName Inspect.207 Inspect.325 Inspect.340;
let Inspect.322 : Str = ")";
let Inspect.320 : Str = CallByName Inspect.61 Inspect.321 Inspect.322;
ret Inspect.320;
procedure Inspect.207 (Inspect.208, Inspect.202):
let Inspect.329 : {} = Struct {};
let Inspect.328 : Str = CallByName List.18 Inspect.202 Inspect.208 Inspect.329;
ret Inspect.328;
procedure Inspect.209 (Inspect.210, Inspect.211):
let Inspect.336 : Str = " ";
let Inspect.331 : Str = CallByName Inspect.61 Inspect.210 Inspect.336;
let Inspect.330 : Str = CallByName Inspect.212 Inspect.331 Inspect.211;
ret Inspect.330;
procedure Inspect.212 (Inspect.213, Inspect.211):
let Inspect.334 : Str = CallByName Inspect.31 Inspect.211 Inspect.213;
ret Inspect.334;
procedure Inspect.249 (Inspect.250, Inspect.248):
let Inspect.355 : Str = "\"";
let Inspect.354 : Str = CallByName Inspect.61 Inspect.250 Inspect.355;
let Inspect.352 : Str = CallByName Inspect.61 Inspect.354 Inspect.248;
let Inspect.353 : Str = "\"";
let Inspect.351 : Str = CallByName Inspect.61 Inspect.352 Inspect.353;
ret Inspect.351;
procedure Inspect.30 (Inspect.147):
ret Inspect.147;
procedure Inspect.30 (Inspect.147):
ret Inspect.147;
procedure Inspect.30 (Inspect.147):
ret Inspect.147;
procedure Inspect.31 (Inspect.305, Inspect.149):
let Inspect.315 : U8 = GetTagId Inspect.305;
switch Inspect.315:
case 0:
let Inspect.314 : Str = CallByName Inspect.203 Inspect.149 Inspect.305;
ret Inspect.314;
default:
let Inspect.314 : Str = CallByName Inspect.205 Inspect.149 Inspect.305;
ret Inspect.314;
procedure Inspect.31 (Inspect.305, Inspect.149):
let Inspect.335 : Str = CallByName Inspect.249 Inspect.149 Inspect.305;
ret Inspect.335;
procedure Inspect.35 (Inspect.300):
ret Inspect.300;
procedure Inspect.36 (Inspect.304):
let Inspect.311 : Str = "";
ret Inspect.311;
procedure Inspect.40 (Inspect.201, Inspect.202):
inc Inspect.202;
let Inspect.341 : Int1 = CallByName List.1 Inspect.202;
if Inspect.341 then
dec Inspect.202;
let Inspect.343 : [C Str, C Str List Str] = TagId(0) Inspect.201;
let Inspect.342 : [C Str, C Str List Str] = CallByName Inspect.30 Inspect.343;
ret Inspect.342;
else
let Inspect.317 : [C Str, C Str List Str] = TagId(1) Inspect.201 Inspect.202;
let Inspect.316 : [C Str, C Str List Str] = CallByName Inspect.30 Inspect.317;
ret Inspect.316;
procedure Inspect.44 (Inspect.248):
let Inspect.356 : Str = CallByName Inspect.30 Inspect.248;
ret Inspect.356;
procedure Inspect.5 (Inspect.150):
let Inspect.312 : {Str, Str} = CallByName #Derived.0 Inspect.150;
let Inspect.309 : {} = Struct {};
let Inspect.308 : Str = CallByName Inspect.36 Inspect.309;
let Inspect.307 : Str = CallByName #Derived.4 Inspect.308 Inspect.312;
ret Inspect.307;
procedure Inspect.61 (Inspect.303, Inspect.298):
let Inspect.324 : Str = CallByName Str.3 Inspect.303 Inspect.298;
dec Inspect.298;
ret Inspect.324;
procedure List.1 (List.102):
let List.566 : U64 = CallByName List.6 List.102;
dec List.102;
let List.567 : U64 = 0i64;
let List.565 : Int1 = CallByName Bool.11 List.566 List.567;
ret List.565;
procedure List.18 (List.154, List.155, List.156):
let List.554 : U64 = 0i64;
let List.555 : U64 = CallByName List.6 List.154;
let List.553 : Str = CallByName List.88 List.154 List.155 List.156 List.554 List.555;
ret List.553;
procedure List.6 (#Attr.2):
let List.564 : U64 = lowlevel ListLen #Attr.2;
ret List.564;
procedure List.66 (#Attr.2, #Attr.3):
let List.563 : Str = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.563;
procedure List.88 (#Derived_gen.19, #Derived_gen.20, #Derived_gen.21, #Derived_gen.22, #Derived_gen.23):
joinpoint List.556 List.157 List.158 List.159 List.160 List.161:
let List.558 : Int1 = CallByName Num.22 List.160 List.161;
if List.558 then
let List.562 : Str = CallByName List.66 List.157 List.160;
inc List.562;
let List.162 : Str = CallByName Inspect.209 List.158 List.562;
let List.561 : U64 = 1i64;
let List.560 : U64 = CallByName Num.51 List.160 List.561;
jump List.556 List.157 List.162 List.159 List.560 List.161;
else
dec List.157;
ret List.158;
in
jump List.556 #Derived_gen.19 #Derived_gen.20 #Derived_gen.21 #Derived_gen.22 #Derived_gen.23;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.292 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.292;
procedure Num.51 (#Attr.2, #Attr.3):
let Num.291 : U64 = lowlevel NumAddWrap #Attr.2 #Attr.3;
ret Num.291;
procedure Str.3 (#Attr.2, #Attr.3):
let Str.292 : Str = lowlevel StrConcat #Attr.2 #Attr.3;
ret Str.292;
procedure Test.0 ():
let Test.6 : Str = "foo";
let Test.5 : Str = "foo";
let Test.1 : {Str, Str} = Struct {Test.5, Test.6};
let Test.4 : Str = CallByName Inspect.5 Test.1;
let Test.3 : Str = CallByName Inspect.35 Test.4;
ret Test.3;