mirror of
https://github.com/roc-lang/roc.git
synced 2025-08-04 04:08:19 +00:00
Get started with semantic layouts for tag unions
This commit is contained in:
parent
24e65cbf8d
commit
8ca71c7eda
6 changed files with 95 additions and 29 deletions
|
@ -58,7 +58,7 @@ procedure Test.11 (Test.53, Test.54):
|
|||
joinpoint Test.27 Test.12 #Attr.12:
|
||||
let Test.8 : Int1 = UnionAtIndex (Id 2) (Index 1) #Attr.12;
|
||||
let Test.7 : [<rnw><null>, C *self Int1, C *self Int1] = UnionAtIndex (Id 2) (Index 0) #Attr.12;
|
||||
joinpoint #Derived_gen.5:
|
||||
joinpoint #Derived_gen.3:
|
||||
joinpoint Test.31 Test.29:
|
||||
let Test.30 : U8 = GetTagId Test.7;
|
||||
switch Test.30:
|
||||
|
@ -85,14 +85,14 @@ procedure Test.11 (Test.53, Test.54):
|
|||
jump Test.31 Test.32;
|
||||
|
||||
in
|
||||
let #Derived_gen.6 : Int1 = lowlevel RefCountIsUnique #Attr.12;
|
||||
if #Derived_gen.6 then
|
||||
let #Derived_gen.4 : Int1 = lowlevel RefCountIsUnique #Attr.12;
|
||||
if #Derived_gen.4 then
|
||||
decref #Attr.12;
|
||||
jump #Derived_gen.5;
|
||||
jump #Derived_gen.3;
|
||||
else
|
||||
inc Test.7;
|
||||
decref #Attr.12;
|
||||
jump #Derived_gen.5;
|
||||
jump #Derived_gen.3;
|
||||
in
|
||||
jump Test.27 Test.53 Test.54;
|
||||
|
||||
|
@ -125,7 +125,7 @@ procedure Test.6 (Test.7, Test.8, Test.5):
|
|||
procedure Test.9 (Test.10, #Attr.12):
|
||||
let Test.8 : Int1 = UnionAtIndex (Id 1) (Index 1) #Attr.12;
|
||||
let Test.7 : [<rnw><null>, C *self Int1, C *self Int1] = UnionAtIndex (Id 1) (Index 0) #Attr.12;
|
||||
joinpoint #Derived_gen.3:
|
||||
joinpoint #Derived_gen.5:
|
||||
let Test.37 : U8 = GetTagId Test.7;
|
||||
joinpoint Test.38 Test.36:
|
||||
switch Test.8:
|
||||
|
@ -153,14 +153,14 @@ procedure Test.9 (Test.10, #Attr.12):
|
|||
jump Test.38 Test.39;
|
||||
|
||||
in
|
||||
let #Derived_gen.4 : Int1 = lowlevel RefCountIsUnique #Attr.12;
|
||||
if #Derived_gen.4 then
|
||||
let #Derived_gen.6 : Int1 = lowlevel RefCountIsUnique #Attr.12;
|
||||
if #Derived_gen.6 then
|
||||
decref #Attr.12;
|
||||
jump #Derived_gen.3;
|
||||
jump #Derived_gen.5;
|
||||
else
|
||||
inc Test.7;
|
||||
decref #Attr.12;
|
||||
jump #Derived_gen.3;
|
||||
jump #Derived_gen.5;
|
||||
|
||||
procedure Test.0 ():
|
||||
let Test.41 : Int1 = false;
|
||||
|
|
|
@ -212,8 +212,8 @@ procedure Json.42 (Json.298):
|
|||
let Json.496 : U64 = 1i64;
|
||||
let Json.495 : {List U8, List U8} = CallByName List.52 Json.304 Json.496;
|
||||
let Json.309 : List U8 = StructAtIndex 1 Json.495;
|
||||
let #Derived_gen.0 : List U8 = StructAtIndex 0 Json.495;
|
||||
dec #Derived_gen.0;
|
||||
let #Derived_gen.1 : List U8 = StructAtIndex 0 Json.495;
|
||||
dec #Derived_gen.1;
|
||||
let Json.494 : [C {}, C Str] = TagId(1) Json.307;
|
||||
let Json.493 : {List U8, [C {}, C Str]} = Struct {Json.309, Json.494};
|
||||
ret Json.493;
|
||||
|
@ -347,8 +347,8 @@ procedure Str.9 (Str.79):
|
|||
else
|
||||
let Str.300 : U8 = StructAtIndex 3 Str.80;
|
||||
let Str.301 : U64 = StructAtIndex 0 Str.80;
|
||||
let #Derived_gen.1 : Str = StructAtIndex 1 Str.80;
|
||||
dec #Derived_gen.1;
|
||||
let #Derived_gen.0 : Str = StructAtIndex 1 Str.80;
|
||||
dec #Derived_gen.0;
|
||||
let Str.299 : {U64, U8} = Struct {Str.301, Str.300};
|
||||
let Str.298 : [C {U64, U8}, C Str] = TagId(0) Str.299;
|
||||
ret Str.298;
|
||||
|
|
|
@ -190,8 +190,8 @@ procedure Json.42 (Json.298):
|
|||
let Json.496 : U64 = 1i64;
|
||||
let Json.495 : {List U8, List U8} = CallByName List.52 Json.304 Json.496;
|
||||
let Json.309 : List U8 = StructAtIndex 1 Json.495;
|
||||
let #Derived_gen.0 : List U8 = StructAtIndex 0 Json.495;
|
||||
dec #Derived_gen.0;
|
||||
let #Derived_gen.1 : List U8 = StructAtIndex 0 Json.495;
|
||||
dec #Derived_gen.1;
|
||||
let Json.494 : [C {}, C Str] = TagId(1) Json.307;
|
||||
let Json.493 : {List U8, [C {}, C Str]} = Struct {Json.309, Json.494};
|
||||
ret Json.493;
|
||||
|
@ -345,8 +345,8 @@ procedure Str.9 (Str.79):
|
|||
else
|
||||
let Str.314 : U8 = StructAtIndex 3 Str.80;
|
||||
let Str.315 : U64 = StructAtIndex 0 Str.80;
|
||||
let #Derived_gen.1 : Str = StructAtIndex 1 Str.80;
|
||||
dec #Derived_gen.1;
|
||||
let #Derived_gen.0 : Str = StructAtIndex 1 Str.80;
|
||||
dec #Derived_gen.0;
|
||||
let Str.313 : {U64, U8} = Struct {Str.315, Str.314};
|
||||
let Str.312 : [C {U64, U8}, C Str] = TagId(0) Str.313;
|
||||
ret Str.312;
|
||||
|
|
|
@ -2,6 +2,10 @@ procedure Test.1 (Test.4):
|
|||
let Test.12 : Int1 = false;
|
||||
ret Test.12;
|
||||
|
||||
procedure Test.1 (Test.4):
|
||||
let Test.14 : Int1 = false;
|
||||
ret Test.14;
|
||||
|
||||
procedure Test.2 (Test.5, Test.6):
|
||||
let Test.10 : U8 = 18i64;
|
||||
ret Test.10;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue