From addc4debef193af48011f9534d5cebd5fbf977b4 Mon Sep 17 00:00:00 2001 From: Luke Boswell Date: Wed, 29 Mar 2023 10:01:38 +1100 Subject: [PATCH] merge main, update fail test descriptions --- crates/compiler/builtins/roc/Json.roc | 241 ++-- .../encode_derived_nested_record_string.txt | 274 ++--- ...encode_derived_record_one_field_string.txt | 150 +-- ...ncode_derived_record_two_field_strings.txt | 152 +-- .../generated/encode_derived_string.txt | 34 +- .../encode_derived_tag_one_field_string.txt | 164 +-- ...encode_derived_tag_two_payloads_string.txt | 166 +-- .../test_mono/generated/issue_4749.txt | 1026 ++++++++--------- ..._4772_weakened_monomorphic_destructure.txt | 1026 ++++++++--------- ...not_duplicate_identical_concrete_types.txt | 168 +-- ...types_without_unification_of_unifiable.txt | 276 ++--- 11 files changed, 1822 insertions(+), 1855 deletions(-) diff --git a/crates/compiler/builtins/roc/Json.roc b/crates/compiler/builtins/roc/Json.roc index 8a7c524044..e910f9c7f1 100644 --- a/crates/compiler/builtins/roc/Json.roc +++ b/crates/compiler/builtins/roc/Json.roc @@ -405,13 +405,11 @@ decodeBool = Decode.custom \bytes, @Json {} -> _ -> { result: Err TooShort, rest: bytes } expect - actual : DecodeResult Bool actual = "true\n" |> Str.toUtf8 |> Decode.fromBytesPartial fromUtf8 expected = Ok Bool.true actual.result == expected expect - actual : DecodeResult Bool actual = "false ]\n" |> Str.toUtf8 |> Decode.fromBytesPartial fromUtf8 expected = Ok Bool.false actual.result == expected @@ -459,12 +457,6 @@ parseExactChar = \bytes, char -> Err _ -> { result: Err TooShort, rest: bytes } -# openBrace : List U8 -> DecodeResult {} -# openBrace = \bytes -> parseExactChar bytes '{' - -# closingBrace : List U8 -> DecodeResult {} -# closingBrace = \bytes -> parseExactChar bytes '}' - openBracket : List U8 -> DecodeResult {} openBracket = \bytes -> parseExactChar bytes '[' @@ -474,9 +466,6 @@ closingBracket = \bytes -> parseExactChar bytes ']' anything : List U8 -> DecodeResult {} anything = \bytes -> { result: Err TooShort, rest: bytes } -# colon : List U8 -> DecodeResult {} -# colon = \bytes -> parseExactChar bytes ':' - comma : List U8 -> DecodeResult {} comma = \bytes -> parseExactChar bytes ',' @@ -588,10 +577,8 @@ expect expected = { result: Ok 2u64, rest: [']'] } actual == expected -# TODO why is this trying to decode as a Record? -# If you use Decode.fromBytesPartial it fails expect - actual = "30,\n" |> Str.toUtf8 |> Decode.decodeWith decodeI64 fromUtf8 + actual = "30,\n" |> Str.toUtf8 |> Decode.fromBytesPartial fromUtf8 expected = { result: Ok 30i64, rest: [',', '\n'] } actual == expected @@ -1077,161 +1064,141 @@ expect # JSON OBJECTS ----------------------------------------------------------------- -# decodeRecord = \initialState, stepField, finalizer -> Decode.custom \bytes, @Json {} -> -# # NB: the stepper function must be passed explicitly until #2894 is resolved. -# decodeFields = \stepper, state, kvBytes -> -# { val: key, rest } <- (Decode.decodeWith kvBytes decodeString (@Json {})) |> tryDecode -# { rest: afterColonBytes } <- colon rest |> tryDecode -# { val: newState, rest: beforeCommaOrBreak } <- tryDecode -# ( -# when stepper state key is -# Skip -> -# { rest: beforeCommaOrBreak } <- afterColonBytes |> anything |> tryDecode -# { result: Ok state, rest: beforeCommaOrBreak } - -# Keep decoder -> -# Decode.decodeWith afterColonBytes decoder (@Json {}) -# ) - -# { result: commaResult, rest: nextBytes } = comma beforeCommaOrBreak - -# when commaResult is -# Ok {} -> decodeFields stepField newState nextBytes -# Err _ -> { result: Ok newState, rest: nextBytes } - -# { rest: afterBraceBytes } <- bytes |> openBrace |> tryDecode - -# { val: endStateResult, rest: beforeClosingBraceBytes } <- decodeFields stepField initialState afterBraceBytes |> tryDecode - -# { rest: afterRecordBytes } <- beforeClosingBraceBytes |> closingBrace |> tryDecode - - # when finalizer endStateResult is - # Ok val -> { result: Ok val, rest: afterRecordBytes } - # Err e -> { result: Err e, rest: afterRecordBytes } - decodeRecord = \initialState, stepField, finalizer -> Decode.custom \bytes, @Json {} -> - # Recursively build up record from object field:value pairs - decodeFields = \recordState, bytesBeforeField -> + # Recursively build up record from object field:value pairs + decodeFields = \recordState, bytesBeforeField -> - # Decode the json string field name - {result: fieldNameResult, rest: bytesAfterField} = - Decode.decodeWith bytesBeforeField decodeString fromUtf8 + # Decode the json string field name + { result: fieldNameResult, rest: bytesAfterField } = + Decode.decodeWith bytesBeforeField decodeString fromUtf8 - # Count the bytes until the field value - countBytesBeforeValue = when List.walkUntil bytesAfterField (BeforeColon 0) objectHelp is - ObjectValueStart n -> n - _ -> 0 + # Count the bytes until the field value + countBytesBeforeValue = + when List.walkUntil bytesAfterField (BeforeColon 0) objectHelp is + AfterColon n -> n + _ -> 0 - valueBytes = List.drop bytesAfterField countBytesBeforeValue + valueBytes = List.drop bytesAfterField countBytesBeforeValue - when fieldNameResult is - Err TooShort -> - # Invalid object, unable to decode field name or find colon ':' - # after field and before the value - {result: Err TooShort, rest: bytes} - Ok fieldName -> - # Decode the json value - {val: updatedRecord, rest: bytesAfterValue } <- - ( - # Retrieve value decoder for the current field - when stepField recordState fieldName is - Skip -> - # TODO This doesn't seem right, shouldn't we eat - # the remaining value bytes if we are skipping this - # field? - # - # Should rest be bytesAfterNextValue or similar? - {result: Ok recordState, rest: valueBytes} + when fieldNameResult is + Err TooShort -> + # Invalid object, unable to decode field name or find colon ':' + # after field and before the value + { result: Err TooShort, rest: bytes } - Keep valueDecoder -> - # Decode the value using the decoder from the recordState - Decode.decodeWith valueBytes valueDecoder fromUtf8 - ) - |> tryDecode + Ok fieldName -> + # Decode the json value + { val: updatedRecord, rest: bytesAfterValue } <- + ( + # Retrieve value decoder for the current field + when stepField recordState fieldName is + Skip -> + # TODO This doesn't seem right, shouldn't we eat + # the remaining value bytes if we are skipping this + # field? + # + # Should rest be bytesAfterNextValue or similar? + { result: Ok recordState, rest: valueBytes } - # Check if another field or '}' for end of object - when List.walkUntil bytesAfterValue (AfterObjectValue 0) objectHelp is - ObjectFieldNameStart n -> - rest = List.drop bytesAfterValue n + Keep valueDecoder -> + # Decode the value using the decoder from the recordState + Decode.decodeWith valueBytes valueDecoder fromUtf8 + ) + |> tryDecode - # Decode the next field and value - decodeFields updatedRecord rest + # Check if another field or '}' for end of object + when List.walkUntil bytesAfterValue (AfterObjectValue 0) objectHelp is + ObjectFieldNameStart n -> + rest = List.drop bytesAfterValue n - AfterClosingBrace n -> - rest = List.drop bytesAfterValue n + # Decode the next field and value + decodeFields updatedRecord rest - # Build final record from decoded fields and values - when finalizer updatedRecord is - Ok val -> { result: Ok val, rest } - Err e -> { result: Err e, rest } + AfterClosingBrace n -> + rest = List.drop bytesAfterValue n - _ -> - # Invalid object - {result : Err TooShort, rest: bytesAfterValue} - - - countBytesBeforeFirstField = - when List.walkUntil bytes (BeforeOpeningBrace 0) objectHelp is - ObjectFieldNameStart n -> n - _ -> 0 + # Build final record from decoded fields and values + when finalizer updatedRecord is + Ok val -> { result: Ok val, rest } + Err e -> { result: Err e, rest } - if countBytesBeforeFirstField == 0 then - # Invalid object, expected opening brace '{' followed by a field - {result: Err TooShort, rest: bytes} - else - bytesBeforeFirstField = (List.drop bytes countBytesBeforeFirstField) + _ -> + # Invalid object + { result: Err TooShort, rest: bytesAfterValue } - # Begin decoding field:value pairs - decodeFields initialState bytesBeforeFirstField + countBytesBeforeFirstField = + when List.walkUntil bytes (BeforeOpeningBrace 0) objectHelp is + ObjectFieldNameStart n -> n + _ -> 0 + + if countBytesBeforeFirstField == 0 then + # Invalid object, expected opening brace '{' followed by a field + { result: Err TooShort, rest: bytes } + else + bytesBeforeFirstField = List.drop bytes countBytesBeforeFirstField + + # Begin decoding field:value pairs + decodeFields initialState bytesBeforeFirstField objectHelp : ObjectState, U8 -> [Break ObjectState, Continue ObjectState] objectHelp = \state, byte -> - when (state, byte) is - (BeforeOpeningBrace n, b) if isWhitespace b -> Continue (BeforeOpeningBrace (n+1)) - (BeforeOpeningBrace n, b) if b == '{' -> Continue (AfterOpeningBrace (n+1)) - (AfterOpeningBrace n, b) if isWhitespace b -> Continue (AfterOpeningBrace (n+1)) + when (state, byte) is + (BeforeOpeningBrace n, b) if isWhitespace b -> Continue (BeforeOpeningBrace (n + 1)) + (BeforeOpeningBrace n, b) if b == '{' -> Continue (AfterOpeningBrace (n + 1)) + (AfterOpeningBrace n, b) if isWhitespace b -> Continue (AfterOpeningBrace (n + 1)) (AfterOpeningBrace n, b) if b == '"' -> Break (ObjectFieldNameStart n) # field names must be a json string - (BeforeColon n, b) if isWhitespace b -> Continue (BeforeColon (n+1)) - (BeforeColon n, b) if b == ':' -> Continue (AfterColon (n+1)) - (AfterColon n, b) if isWhitespace b -> Continue (AfterColon (n+1)) - (AfterColon n, _) -> Break (ObjectValueStart n) # object value could start with **almost** anything - (AfterObjectValue n, b) if isWhitespace b -> Continue (AfterObjectValue (n+1)) - (AfterObjectValue n, b) if b == ',' -> Continue (AfterComma (n+1)) - (AfterObjectValue n, b) if b == '}' -> Continue (AfterClosingBrace (n+1)) - (AfterComma n, b) if isWhitespace b -> Continue (AfterComma (n+1)) + (BeforeColon n, b) if isWhitespace b -> Continue (BeforeColon (n + 1)) + (BeforeColon n, b) if b == ':' -> Continue (AfterColon (n + 1)) + (AfterColon n, b) if isWhitespace b -> Continue (AfterColon (n + 1)) + (AfterColon n, _) -> Break (AfterColon n) # object value could start with lots of things + (AfterObjectValue n, b) if isWhitespace b -> Continue (AfterObjectValue (n + 1)) + (AfterObjectValue n, b) if b == ',' -> Continue (AfterComma (n + 1)) + (AfterObjectValue n, b) if b == '}' -> Continue (AfterClosingBrace (n + 1)) + (AfterComma n, b) if isWhitespace b -> Continue (AfterComma (n + 1)) (AfterComma n, b) if b == '"' -> Break (ObjectFieldNameStart n) - (AfterClosingBrace n, b) if isWhitespace b -> Continue (AfterClosingBrace (n+1)) + (AfterClosingBrace n, b) if isWhitespace b -> Continue (AfterClosingBrace (n + 1)) _ -> Break InvalidObject ObjectState : [ BeforeOpeningBrace Nat, AfterOpeningBrace Nat, ObjectFieldNameStart Nat, - BeforeColon Nat, - AfterColon Nat, - ObjectValueStart Nat, + BeforeColon Nat, + AfterColon Nat, AfterObjectValue Nat, AfterComma Nat, - AfterClosingBrace Nat, + AfterClosingBrace Nat, InvalidObject, ] -# Test decode of simple Json Object into Roc Record -expect - input = Str.toUtf8 "{\"fruit\":2\n} " - - actual = Decode.fromBytesPartial input fromUtf8 - expected = Ok { fruit: 2 } - - actual.result == expected - -# Test decode of simple Json Object into Roc Record -# TODO assertion failed: value == 0 || value == 1 +# Test decode of simple Json Object into Roc Record ignoring whitespace +# TODO this test makes `decodeI64` test fail # expect -# input = Str.toUtf8 "{\"fruit\":\"two\"}" +# input = Str.toUtf8 " {\n\"fruit\"\t:2\n } " # actual = Decode.fromBytesPartial input fromUtf8 -# expected = Ok { fruit: "two" } +# expected = Ok { fruit: 2 } + +# actual.result == expected + +# Test decode of simple Json Object +# TODO this test makes `decodeString` tests fail +# expect +# input = Str.toUtf8 "{\"fruit\": \"apple\" }" + +# actual = Decode.fromBytesPartial input fromUtf8 +# expected = Ok { fruit: "apple" } + +# actual.result == expected + +# Test decode of simple Json Object +# TODO this test makes `decodeBool` tests fail +# expect +# input = Str.toUtf8 "{\"fruit\": true }" + +# actual : DecodeResult { fruit : Bool } +# actual = Decode.fromBytesPartial input fromUtf8 +# expected = Ok { fruit: Bool.true } # actual.result == expected diff --git a/crates/compiler/test_mono/generated/encode_derived_nested_record_string.txt b/crates/compiler/test_mono/generated/encode_derived_nested_record_string.txt index 7558b2be36..f075f74bca 100644 --- a/crates/compiler/test_mono/generated/encode_derived_nested_record_string.txt +++ b/crates/compiler/test_mono/generated/encode_derived_nested_record_string.txt @@ -7,7 +7,7 @@ procedure #Derived.2 (#Derived.3, #Derived.4, #Derived.1): let #Derived_gen.8 : Str = CallByName #Derived.5 #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 Json.24 #Derived_gen.5; + let #Derived_gen.4 : List {Str, Str} = CallByName Json.25 #Derived_gen.5; let #Derived_gen.3 : List U8 = CallByName Encode.24 #Derived.3 #Derived_gen.4 #Derived.4; ret #Derived_gen.3; @@ -17,10 +17,10 @@ procedure #Derived.5 (#Derived.6): procedure #Derived.7 (#Derived.8, #Derived.9, #Derived.6): let #Derived_gen.21 : Str = "b"; - let #Derived_gen.22 : Str = CallByName Json.22 #Derived.6; + let #Derived_gen.22 : Str = CallByName Json.23 #Derived.6; let #Derived_gen.20 : {Str, Str} = Struct {#Derived_gen.21, #Derived_gen.22}; let #Derived_gen.19 : List {Str, Str} = Array [#Derived_gen.20]; - let #Derived_gen.18 : List {Str, Str} = CallByName Json.24 #Derived_gen.19; + let #Derived_gen.18 : List {Str, Str} = CallByName Json.25 #Derived_gen.19; let #Derived_gen.17 : List U8 = CallByName Encode.24 #Derived.8 #Derived_gen.18 #Derived.9; ret #Derived_gen.17; @@ -44,7 +44,7 @@ procedure Encode.24 (Encode.99, Encode.107, Encode.101): ret Encode.111; procedure Encode.24 (Encode.99, Encode.107, Encode.101): - let Encode.118 : List U8 = CallByName Json.155 Encode.99 Encode.101 Encode.107; + let Encode.118 : List U8 = CallByName Json.162 Encode.99 Encode.101 Encode.107; ret Encode.118; procedure Encode.24 (Encode.99, Encode.107, Encode.101): @@ -52,11 +52,11 @@ procedure Encode.24 (Encode.99, Encode.107, Encode.101): ret Encode.120; procedure Encode.24 (Encode.99, Encode.107, Encode.101): - let Encode.130 : List U8 = CallByName Json.155 Encode.99 Encode.101 Encode.107; + let Encode.130 : List U8 = CallByName Json.162 Encode.99 Encode.101 Encode.107; ret Encode.130; procedure Encode.24 (Encode.99, Encode.107, Encode.101): - let Encode.133 : List U8 = CallByName Json.139 Encode.99 Encode.101 Encode.107; + let Encode.133 : List U8 = CallByName Json.146 Encode.99 Encode.101 Encode.107; ret Encode.133; procedure Encode.26 (Encode.105, Encode.106): @@ -66,150 +66,150 @@ procedure Encode.26 (Encode.105, Encode.106): ret Encode.108; procedure Json.1 (): - let Json.814 : {} = Struct {}; - ret Json.814; + let Json.878 : {} = Struct {}; + ret Json.878; -procedure Json.139 (Json.140, Json.893, Json.138): - let Json.902 : I64 = 34i64; - let Json.901 : U8 = CallByName Num.127 Json.902; - let Json.899 : List U8 = CallByName List.4 Json.140 Json.901; - let Json.900 : List U8 = CallByName Str.12 Json.138; - let Json.896 : List U8 = CallByName List.8 Json.899 Json.900; - let Json.898 : I64 = 34i64; - let Json.897 : U8 = CallByName Num.127 Json.898; - let Json.895 : List U8 = CallByName List.4 Json.896 Json.897; - ret Json.895; +procedure Json.146 (Json.147, Json.957, Json.145): + let Json.966 : I64 = 34i64; + let Json.965 : U8 = CallByName Num.127 Json.966; + let Json.963 : List U8 = CallByName List.4 Json.147 Json.965; + let Json.964 : List U8 = CallByName Str.12 Json.145; + let Json.960 : List U8 = CallByName List.8 Json.963 Json.964; + let Json.962 : I64 = 34i64; + let Json.961 : U8 = CallByName Num.127 Json.962; + let Json.959 : List U8 = CallByName List.4 Json.960 Json.961; + ret Json.959; -procedure Json.155 (Json.156, Json.817, Json.154): - let Json.850 : I64 = 123i64; - let Json.849 : U8 = CallByName Num.127 Json.850; - let Json.158 : List U8 = CallByName List.4 Json.156 Json.849; - let Json.848 : U64 = CallByName List.6 Json.154; - let Json.825 : {List U8, U64} = Struct {Json.158, Json.848}; - let Json.826 : {} = Struct {}; - let Json.824 : {List U8, U64} = CallByName List.18 Json.154 Json.825 Json.826; - dec Json.154; - let Json.160 : List U8 = StructAtIndex 0 Json.824; - inc Json.160; - dec Json.824; - let Json.823 : I64 = 125i64; - let Json.822 : U8 = CallByName Num.127 Json.823; - let Json.821 : List U8 = CallByName List.4 Json.160 Json.822; - ret Json.821; - -procedure Json.155 (Json.156, Json.817, Json.154): - let Json.890 : I64 = 123i64; - let Json.889 : U8 = CallByName Num.127 Json.890; - let Json.158 : List U8 = CallByName List.4 Json.156 Json.889; - let Json.888 : U64 = CallByName List.6 Json.154; - let Json.865 : {List U8, U64} = Struct {Json.158, Json.888}; - let Json.866 : {} = Struct {}; - let Json.864 : {List U8, U64} = CallByName List.18 Json.154 Json.865 Json.866; - dec Json.154; - let Json.160 : List U8 = StructAtIndex 0 Json.864; - inc Json.160; - dec Json.864; - let Json.863 : I64 = 125i64; - let Json.862 : U8 = CallByName Num.127 Json.863; - let Json.861 : List U8 = CallByName List.4 Json.160 Json.862; - ret Json.861; - -procedure Json.157 (Json.819, Json.820): - let Json.163 : Str = StructAtIndex 0 Json.820; - inc Json.163; - let Json.164 : Str = StructAtIndex 1 Json.820; - inc Json.164; - dec Json.820; - let Json.161 : List U8 = StructAtIndex 0 Json.819; - inc Json.161; - let Json.162 : U64 = StructAtIndex 1 Json.819; - dec Json.819; - let Json.847 : I64 = 34i64; - let Json.846 : U8 = CallByName Num.127 Json.847; - let Json.844 : List U8 = CallByName List.4 Json.161 Json.846; - let Json.845 : List U8 = CallByName Str.12 Json.163; - let Json.841 : List U8 = CallByName List.8 Json.844 Json.845; - let Json.843 : I64 = 34i64; - let Json.842 : U8 = CallByName Num.127 Json.843; - let Json.838 : List U8 = CallByName List.4 Json.841 Json.842; - let Json.840 : I64 = 58i64; - let Json.839 : U8 = CallByName Num.127 Json.840; - let Json.836 : List U8 = CallByName List.4 Json.838 Json.839; - let Json.837 : {} = Struct {}; - let Json.165 : List U8 = CallByName Encode.24 Json.836 Json.164 Json.837; - joinpoint Json.831 Json.166: - let Json.829 : U64 = 1i64; - let Json.828 : U64 = CallByName Num.20 Json.162 Json.829; - let Json.827 : {List U8, U64} = Struct {Json.166, Json.828}; - ret Json.827; - in - let Json.835 : U64 = 1i64; - let Json.832 : Int1 = CallByName Num.24 Json.162 Json.835; - if Json.832 then - let Json.834 : I64 = 44i64; - let Json.833 : U8 = CallByName Num.127 Json.834; - let Json.830 : List U8 = CallByName List.4 Json.165 Json.833; - jump Json.831 Json.830; - else - jump Json.831 Json.165; - -procedure Json.157 (Json.819, Json.820): - let Json.163 : Str = StructAtIndex 0 Json.820; - inc Json.163; - let Json.164 : Str = StructAtIndex 1 Json.820; - inc Json.164; - dec Json.820; - let Json.161 : List U8 = StructAtIndex 0 Json.819; - inc Json.161; - let Json.162 : U64 = StructAtIndex 1 Json.819; - dec Json.819; - let Json.887 : I64 = 34i64; +procedure Json.162 (Json.163, Json.881, Json.161): + let Json.914 : I64 = 123i64; + let Json.913 : U8 = CallByName Num.127 Json.914; + let Json.165 : List U8 = CallByName List.4 Json.163 Json.913; + let Json.912 : U64 = CallByName List.6 Json.161; + let Json.889 : {List U8, U64} = Struct {Json.165, Json.912}; + let Json.890 : {} = Struct {}; + let Json.888 : {List U8, U64} = CallByName List.18 Json.161 Json.889 Json.890; + dec Json.161; + let Json.167 : List U8 = StructAtIndex 0 Json.888; + inc Json.167; + dec Json.888; + let Json.887 : I64 = 125i64; let Json.886 : U8 = CallByName Num.127 Json.887; - let Json.884 : List U8 = CallByName List.4 Json.161 Json.886; - let Json.885 : List U8 = CallByName Str.12 Json.163; - let Json.881 : List U8 = CallByName List.8 Json.884 Json.885; - let Json.883 : I64 = 34i64; - let Json.882 : U8 = CallByName Num.127 Json.883; - let Json.878 : List U8 = CallByName List.4 Json.881 Json.882; - let Json.880 : I64 = 58i64; - let Json.879 : U8 = CallByName Num.127 Json.880; - let Json.876 : List U8 = CallByName List.4 Json.878 Json.879; - let Json.877 : {} = Struct {}; - let Json.165 : List U8 = CallByName Encode.24 Json.876 Json.164 Json.877; - joinpoint Json.871 Json.166: - let Json.869 : U64 = 1i64; - let Json.868 : U64 = CallByName Num.20 Json.162 Json.869; - let Json.867 : {List U8, U64} = Struct {Json.166, Json.868}; - ret Json.867; + let Json.885 : List U8 = CallByName List.4 Json.167 Json.886; + ret Json.885; + +procedure Json.162 (Json.163, Json.881, Json.161): + let Json.954 : I64 = 123i64; + let Json.953 : U8 = CallByName Num.127 Json.954; + let Json.165 : List U8 = CallByName List.4 Json.163 Json.953; + let Json.952 : U64 = CallByName List.6 Json.161; + let Json.929 : {List U8, U64} = Struct {Json.165, Json.952}; + let Json.930 : {} = Struct {}; + let Json.928 : {List U8, U64} = CallByName List.18 Json.161 Json.929 Json.930; + dec Json.161; + let Json.167 : List U8 = StructAtIndex 0 Json.928; + inc Json.167; + dec Json.928; + let Json.927 : I64 = 125i64; + let Json.926 : U8 = CallByName Num.127 Json.927; + let Json.925 : List U8 = CallByName List.4 Json.167 Json.926; + ret Json.925; + +procedure Json.164 (Json.883, Json.884): + let Json.170 : Str = StructAtIndex 0 Json.884; + inc Json.170; + let Json.171 : Str = StructAtIndex 1 Json.884; + inc Json.171; + dec Json.884; + let Json.168 : List U8 = StructAtIndex 0 Json.883; + inc Json.168; + let Json.169 : U64 = StructAtIndex 1 Json.883; + dec Json.883; + let Json.911 : I64 = 34i64; + let Json.910 : U8 = CallByName Num.127 Json.911; + let Json.908 : List U8 = CallByName List.4 Json.168 Json.910; + let Json.909 : List U8 = CallByName Str.12 Json.170; + let Json.905 : List U8 = CallByName List.8 Json.908 Json.909; + let Json.907 : I64 = 34i64; + let Json.906 : U8 = CallByName Num.127 Json.907; + let Json.902 : List U8 = CallByName List.4 Json.905 Json.906; + let Json.904 : I64 = 58i64; + let Json.903 : U8 = CallByName Num.127 Json.904; + let Json.900 : List U8 = CallByName List.4 Json.902 Json.903; + let Json.901 : {} = Struct {}; + let Json.172 : List U8 = CallByName Encode.24 Json.900 Json.171 Json.901; + joinpoint Json.895 Json.173: + let Json.893 : U64 = 1i64; + let Json.892 : U64 = CallByName Num.20 Json.169 Json.893; + let Json.891 : {List U8, U64} = Struct {Json.173, Json.892}; + ret Json.891; in - let Json.875 : U64 = 1i64; - let Json.872 : Int1 = CallByName Num.24 Json.162 Json.875; - if Json.872 then - let Json.874 : I64 = 44i64; - let Json.873 : U8 = CallByName Num.127 Json.874; - let Json.870 : List U8 = CallByName List.4 Json.165 Json.873; - jump Json.871 Json.870; + let Json.899 : U64 = 1i64; + let Json.896 : Int1 = CallByName Num.24 Json.169 Json.899; + if Json.896 then + let Json.898 : I64 = 44i64; + let Json.897 : U8 = CallByName Num.127 Json.898; + let Json.894 : List U8 = CallByName List.4 Json.172 Json.897; + jump Json.895 Json.894; else - jump Json.871 Json.165; + jump Json.895 Json.172; -procedure Json.22 (Json.138): - let Json.891 : Str = CallByName Encode.23 Json.138; - ret Json.891; +procedure Json.164 (Json.883, Json.884): + let Json.170 : Str = StructAtIndex 0 Json.884; + inc Json.170; + let Json.171 : Str = StructAtIndex 1 Json.884; + inc Json.171; + dec Json.884; + let Json.168 : List U8 = StructAtIndex 0 Json.883; + inc Json.168; + let Json.169 : U64 = StructAtIndex 1 Json.883; + dec Json.883; + let Json.951 : I64 = 34i64; + let Json.950 : U8 = CallByName Num.127 Json.951; + let Json.948 : List U8 = CallByName List.4 Json.168 Json.950; + let Json.949 : List U8 = CallByName Str.12 Json.170; + let Json.945 : List U8 = CallByName List.8 Json.948 Json.949; + let Json.947 : I64 = 34i64; + let Json.946 : U8 = CallByName Num.127 Json.947; + let Json.942 : List U8 = CallByName List.4 Json.945 Json.946; + let Json.944 : I64 = 58i64; + let Json.943 : U8 = CallByName Num.127 Json.944; + let Json.940 : List U8 = CallByName List.4 Json.942 Json.943; + let Json.941 : {} = Struct {}; + let Json.172 : List U8 = CallByName Encode.24 Json.940 Json.171 Json.941; + joinpoint Json.935 Json.173: + let Json.933 : U64 = 1i64; + let Json.932 : U64 = CallByName Num.20 Json.169 Json.933; + let Json.931 : {List U8, U64} = Struct {Json.173, Json.932}; + ret Json.931; + in + let Json.939 : U64 = 1i64; + let Json.936 : Int1 = CallByName Num.24 Json.169 Json.939; + if Json.936 then + let Json.938 : I64 = 44i64; + let Json.937 : U8 = CallByName Num.127 Json.938; + let Json.934 : List U8 = CallByName List.4 Json.172 Json.937; + jump Json.935 Json.934; + else + jump Json.935 Json.172; -procedure Json.24 (Json.154): - let Json.815 : List {Str, Str} = CallByName Encode.23 Json.154; - ret Json.815; +procedure Json.23 (Json.145): + let Json.955 : Str = CallByName Encode.23 Json.145; + ret Json.955; -procedure Json.24 (Json.154): - let Json.857 : List {Str, Str} = CallByName Encode.23 Json.154; - ret Json.857; +procedure Json.25 (Json.161): + let Json.879 : List {Str, Str} = CallByName Encode.23 Json.161; + ret Json.879; + +procedure Json.25 (Json.161): + let Json.921 : List {Str, Str} = CallByName Encode.23 Json.161; + ret Json.921; procedure List.139 (List.140, List.141, List.138): - let List.535 : {List U8, U64} = CallByName Json.157 List.140 List.141; + let List.535 : {List U8, U64} = CallByName Json.164 List.140 List.141; ret List.535; procedure List.139 (List.140, List.141, List.138): - let List.608 : {List U8, U64} = CallByName Json.157 List.140 List.141; + let List.608 : {List U8, U64} = CallByName Json.164 List.140 List.141; ret List.608; procedure List.18 (List.136, List.137, List.138): diff --git a/crates/compiler/test_mono/generated/encode_derived_record_one_field_string.txt b/crates/compiler/test_mono/generated/encode_derived_record_one_field_string.txt index 295ac8a86b..206fa8fdb5 100644 --- a/crates/compiler/test_mono/generated/encode_derived_record_one_field_string.txt +++ b/crates/compiler/test_mono/generated/encode_derived_record_one_field_string.txt @@ -4,10 +4,10 @@ procedure #Derived.0 (#Derived.1): procedure #Derived.2 (#Derived.3, #Derived.4, #Derived.1): let #Derived_gen.7 : Str = "a"; - let #Derived_gen.8 : Str = CallByName Json.22 #Derived.1; + let #Derived_gen.8 : Str = CallByName Json.23 #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 Json.24 #Derived_gen.5; + let #Derived_gen.4 : List {Str, Str} = CallByName Json.25 #Derived_gen.5; let #Derived_gen.3 : List U8 = CallByName Encode.24 #Derived.3 #Derived_gen.4 #Derived.4; ret #Derived_gen.3; @@ -25,11 +25,11 @@ procedure Encode.24 (Encode.99, Encode.107, Encode.101): ret Encode.111; procedure Encode.24 (Encode.99, Encode.107, Encode.101): - let Encode.118 : List U8 = CallByName Json.155 Encode.99 Encode.101 Encode.107; + let Encode.118 : List U8 = CallByName Json.162 Encode.99 Encode.101 Encode.107; ret Encode.118; procedure Encode.24 (Encode.99, Encode.107, Encode.101): - let Encode.121 : List U8 = CallByName Json.139 Encode.99 Encode.101 Encode.107; + let Encode.121 : List U8 = CallByName Json.146 Encode.99 Encode.101 Encode.107; ret Encode.121; procedure Encode.26 (Encode.105, Encode.106): @@ -39,86 +39,86 @@ procedure Encode.26 (Encode.105, Encode.106): ret Encode.108; procedure Json.1 (): - let Json.814 : {} = Struct {}; - ret Json.814; + let Json.878 : {} = Struct {}; + ret Json.878; -procedure Json.139 (Json.140, Json.853, Json.138): - let Json.862 : I64 = 34i64; - let Json.861 : U8 = CallByName Num.127 Json.862; - let Json.859 : List U8 = CallByName List.4 Json.140 Json.861; - let Json.860 : List U8 = CallByName Str.12 Json.138; - let Json.856 : List U8 = CallByName List.8 Json.859 Json.860; - let Json.858 : I64 = 34i64; - let Json.857 : U8 = CallByName Num.127 Json.858; - let Json.855 : List U8 = CallByName List.4 Json.856 Json.857; - ret Json.855; +procedure Json.146 (Json.147, Json.917, Json.145): + let Json.926 : I64 = 34i64; + let Json.925 : U8 = CallByName Num.127 Json.926; + let Json.923 : List U8 = CallByName List.4 Json.147 Json.925; + let Json.924 : List U8 = CallByName Str.12 Json.145; + let Json.920 : List U8 = CallByName List.8 Json.923 Json.924; + let Json.922 : I64 = 34i64; + let Json.921 : U8 = CallByName Num.127 Json.922; + let Json.919 : List U8 = CallByName List.4 Json.920 Json.921; + ret Json.919; -procedure Json.155 (Json.156, Json.817, Json.154): - let Json.850 : I64 = 123i64; - let Json.849 : U8 = CallByName Num.127 Json.850; - let Json.158 : List U8 = CallByName List.4 Json.156 Json.849; - let Json.848 : U64 = CallByName List.6 Json.154; - let Json.825 : {List U8, U64} = Struct {Json.158, Json.848}; - let Json.826 : {} = Struct {}; - let Json.824 : {List U8, U64} = CallByName List.18 Json.154 Json.825 Json.826; - dec Json.154; - let Json.160 : List U8 = StructAtIndex 0 Json.824; - inc Json.160; - dec Json.824; - let Json.823 : I64 = 125i64; - let Json.822 : U8 = CallByName Num.127 Json.823; - let Json.821 : List U8 = CallByName List.4 Json.160 Json.822; - ret Json.821; +procedure Json.162 (Json.163, Json.881, Json.161): + let Json.914 : I64 = 123i64; + let Json.913 : U8 = CallByName Num.127 Json.914; + let Json.165 : List U8 = CallByName List.4 Json.163 Json.913; + let Json.912 : U64 = CallByName List.6 Json.161; + let Json.889 : {List U8, U64} = Struct {Json.165, Json.912}; + let Json.890 : {} = Struct {}; + let Json.888 : {List U8, U64} = CallByName List.18 Json.161 Json.889 Json.890; + dec Json.161; + let Json.167 : List U8 = StructAtIndex 0 Json.888; + inc Json.167; + dec Json.888; + let Json.887 : I64 = 125i64; + let Json.886 : U8 = CallByName Num.127 Json.887; + let Json.885 : List U8 = CallByName List.4 Json.167 Json.886; + ret Json.885; -procedure Json.157 (Json.819, Json.820): - let Json.163 : Str = StructAtIndex 0 Json.820; - inc Json.163; - let Json.164 : Str = StructAtIndex 1 Json.820; - inc Json.164; - dec Json.820; - let Json.161 : List U8 = StructAtIndex 0 Json.819; - inc Json.161; - let Json.162 : U64 = StructAtIndex 1 Json.819; - dec Json.819; - let Json.847 : I64 = 34i64; - let Json.846 : U8 = CallByName Num.127 Json.847; - let Json.844 : List U8 = CallByName List.4 Json.161 Json.846; - let Json.845 : List U8 = CallByName Str.12 Json.163; - let Json.841 : List U8 = CallByName List.8 Json.844 Json.845; - let Json.843 : I64 = 34i64; - let Json.842 : U8 = CallByName Num.127 Json.843; - let Json.838 : List U8 = CallByName List.4 Json.841 Json.842; - let Json.840 : I64 = 58i64; - let Json.839 : U8 = CallByName Num.127 Json.840; - let Json.836 : List U8 = CallByName List.4 Json.838 Json.839; - let Json.837 : {} = Struct {}; - let Json.165 : List U8 = CallByName Encode.24 Json.836 Json.164 Json.837; - joinpoint Json.831 Json.166: - let Json.829 : U64 = 1i64; - let Json.828 : U64 = CallByName Num.20 Json.162 Json.829; - let Json.827 : {List U8, U64} = Struct {Json.166, Json.828}; - ret Json.827; +procedure Json.164 (Json.883, Json.884): + let Json.170 : Str = StructAtIndex 0 Json.884; + inc Json.170; + let Json.171 : Str = StructAtIndex 1 Json.884; + inc Json.171; + dec Json.884; + let Json.168 : List U8 = StructAtIndex 0 Json.883; + inc Json.168; + let Json.169 : U64 = StructAtIndex 1 Json.883; + dec Json.883; + let Json.911 : I64 = 34i64; + let Json.910 : U8 = CallByName Num.127 Json.911; + let Json.908 : List U8 = CallByName List.4 Json.168 Json.910; + let Json.909 : List U8 = CallByName Str.12 Json.170; + let Json.905 : List U8 = CallByName List.8 Json.908 Json.909; + let Json.907 : I64 = 34i64; + let Json.906 : U8 = CallByName Num.127 Json.907; + let Json.902 : List U8 = CallByName List.4 Json.905 Json.906; + let Json.904 : I64 = 58i64; + let Json.903 : U8 = CallByName Num.127 Json.904; + let Json.900 : List U8 = CallByName List.4 Json.902 Json.903; + let Json.901 : {} = Struct {}; + let Json.172 : List U8 = CallByName Encode.24 Json.900 Json.171 Json.901; + joinpoint Json.895 Json.173: + let Json.893 : U64 = 1i64; + let Json.892 : U64 = CallByName Num.20 Json.169 Json.893; + let Json.891 : {List U8, U64} = Struct {Json.173, Json.892}; + ret Json.891; in - let Json.835 : U64 = 1i64; - let Json.832 : Int1 = CallByName Num.24 Json.162 Json.835; - if Json.832 then - let Json.834 : I64 = 44i64; - let Json.833 : U8 = CallByName Num.127 Json.834; - let Json.830 : List U8 = CallByName List.4 Json.165 Json.833; - jump Json.831 Json.830; + let Json.899 : U64 = 1i64; + let Json.896 : Int1 = CallByName Num.24 Json.169 Json.899; + if Json.896 then + let Json.898 : I64 = 44i64; + let Json.897 : U8 = CallByName Num.127 Json.898; + let Json.894 : List U8 = CallByName List.4 Json.172 Json.897; + jump Json.895 Json.894; else - jump Json.831 Json.165; + jump Json.895 Json.172; -procedure Json.22 (Json.138): - let Json.851 : Str = CallByName Encode.23 Json.138; - ret Json.851; +procedure Json.23 (Json.145): + let Json.915 : Str = CallByName Encode.23 Json.145; + ret Json.915; -procedure Json.24 (Json.154): - let Json.815 : List {Str, Str} = CallByName Encode.23 Json.154; - ret Json.815; +procedure Json.25 (Json.161): + let Json.879 : List {Str, Str} = CallByName Encode.23 Json.161; + ret Json.879; procedure List.139 (List.140, List.141, List.138): - let List.541 : {List U8, U64} = CallByName Json.157 List.140 List.141; + let List.541 : {List U8, U64} = CallByName Json.164 List.140 List.141; ret List.541; procedure List.18 (List.136, List.137, List.138): diff --git a/crates/compiler/test_mono/generated/encode_derived_record_two_field_strings.txt b/crates/compiler/test_mono/generated/encode_derived_record_two_field_strings.txt index 626c4a58d6..01739381a7 100644 --- a/crates/compiler/test_mono/generated/encode_derived_record_two_field_strings.txt +++ b/crates/compiler/test_mono/generated/encode_derived_record_two_field_strings.txt @@ -6,16 +6,16 @@ procedure #Derived.2 (#Derived.3, #Derived.4, #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 Json.22 #Derived_gen.13; + let #Derived_gen.12 : Str = CallByName Json.23 #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; inc #Derived_gen.10; dec #Derived.1; - let #Derived_gen.9 : Str = CallByName Json.22 #Derived_gen.10; + let #Derived_gen.9 : Str = CallByName Json.23 #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 Json.24 #Derived_gen.5; + let #Derived_gen.4 : List {Str, Str} = CallByName Json.25 #Derived_gen.5; let #Derived_gen.3 : List U8 = CallByName Encode.24 #Derived.3 #Derived_gen.4 #Derived.4; ret #Derived_gen.3; @@ -33,11 +33,11 @@ procedure Encode.24 (Encode.99, Encode.107, Encode.101): ret Encode.111; procedure Encode.24 (Encode.99, Encode.107, Encode.101): - let Encode.118 : List U8 = CallByName Json.155 Encode.99 Encode.101 Encode.107; + let Encode.118 : List U8 = CallByName Json.162 Encode.99 Encode.101 Encode.107; ret Encode.118; procedure Encode.24 (Encode.99, Encode.107, Encode.101): - let Encode.122 : List U8 = CallByName Json.139 Encode.99 Encode.101 Encode.107; + let Encode.122 : List U8 = CallByName Json.146 Encode.99 Encode.101 Encode.107; ret Encode.122; procedure Encode.26 (Encode.105, Encode.106): @@ -47,86 +47,86 @@ procedure Encode.26 (Encode.105, Encode.106): ret Encode.108; procedure Json.1 (): - let Json.814 : {} = Struct {}; - ret Json.814; + let Json.878 : {} = Struct {}; + ret Json.878; -procedure Json.139 (Json.140, Json.853, Json.138): - let Json.862 : I64 = 34i64; - let Json.861 : U8 = CallByName Num.127 Json.862; - let Json.859 : List U8 = CallByName List.4 Json.140 Json.861; - let Json.860 : List U8 = CallByName Str.12 Json.138; - let Json.856 : List U8 = CallByName List.8 Json.859 Json.860; - let Json.858 : I64 = 34i64; - let Json.857 : U8 = CallByName Num.127 Json.858; - let Json.855 : List U8 = CallByName List.4 Json.856 Json.857; - ret Json.855; +procedure Json.146 (Json.147, Json.917, Json.145): + let Json.926 : I64 = 34i64; + let Json.925 : U8 = CallByName Num.127 Json.926; + let Json.923 : List U8 = CallByName List.4 Json.147 Json.925; + let Json.924 : List U8 = CallByName Str.12 Json.145; + let Json.920 : List U8 = CallByName List.8 Json.923 Json.924; + let Json.922 : I64 = 34i64; + let Json.921 : U8 = CallByName Num.127 Json.922; + let Json.919 : List U8 = CallByName List.4 Json.920 Json.921; + ret Json.919; -procedure Json.155 (Json.156, Json.817, Json.154): - let Json.850 : I64 = 123i64; - let Json.849 : U8 = CallByName Num.127 Json.850; - let Json.158 : List U8 = CallByName List.4 Json.156 Json.849; - let Json.848 : U64 = CallByName List.6 Json.154; - let Json.825 : {List U8, U64} = Struct {Json.158, Json.848}; - let Json.826 : {} = Struct {}; - let Json.824 : {List U8, U64} = CallByName List.18 Json.154 Json.825 Json.826; - dec Json.154; - let Json.160 : List U8 = StructAtIndex 0 Json.824; - inc Json.160; - dec Json.824; - let Json.823 : I64 = 125i64; - let Json.822 : U8 = CallByName Num.127 Json.823; - let Json.821 : List U8 = CallByName List.4 Json.160 Json.822; - ret Json.821; +procedure Json.162 (Json.163, Json.881, Json.161): + let Json.914 : I64 = 123i64; + let Json.913 : U8 = CallByName Num.127 Json.914; + let Json.165 : List U8 = CallByName List.4 Json.163 Json.913; + let Json.912 : U64 = CallByName List.6 Json.161; + let Json.889 : {List U8, U64} = Struct {Json.165, Json.912}; + let Json.890 : {} = Struct {}; + let Json.888 : {List U8, U64} = CallByName List.18 Json.161 Json.889 Json.890; + dec Json.161; + let Json.167 : List U8 = StructAtIndex 0 Json.888; + inc Json.167; + dec Json.888; + let Json.887 : I64 = 125i64; + let Json.886 : U8 = CallByName Num.127 Json.887; + let Json.885 : List U8 = CallByName List.4 Json.167 Json.886; + ret Json.885; -procedure Json.157 (Json.819, Json.820): - let Json.163 : Str = StructAtIndex 0 Json.820; - inc Json.163; - let Json.164 : Str = StructAtIndex 1 Json.820; - inc Json.164; - dec Json.820; - let Json.161 : List U8 = StructAtIndex 0 Json.819; - inc Json.161; - let Json.162 : U64 = StructAtIndex 1 Json.819; - dec Json.819; - let Json.847 : I64 = 34i64; - let Json.846 : U8 = CallByName Num.127 Json.847; - let Json.844 : List U8 = CallByName List.4 Json.161 Json.846; - let Json.845 : List U8 = CallByName Str.12 Json.163; - let Json.841 : List U8 = CallByName List.8 Json.844 Json.845; - let Json.843 : I64 = 34i64; - let Json.842 : U8 = CallByName Num.127 Json.843; - let Json.838 : List U8 = CallByName List.4 Json.841 Json.842; - let Json.840 : I64 = 58i64; - let Json.839 : U8 = CallByName Num.127 Json.840; - let Json.836 : List U8 = CallByName List.4 Json.838 Json.839; - let Json.837 : {} = Struct {}; - let Json.165 : List U8 = CallByName Encode.24 Json.836 Json.164 Json.837; - joinpoint Json.831 Json.166: - let Json.829 : U64 = 1i64; - let Json.828 : U64 = CallByName Num.20 Json.162 Json.829; - let Json.827 : {List U8, U64} = Struct {Json.166, Json.828}; - ret Json.827; +procedure Json.164 (Json.883, Json.884): + let Json.170 : Str = StructAtIndex 0 Json.884; + inc Json.170; + let Json.171 : Str = StructAtIndex 1 Json.884; + inc Json.171; + dec Json.884; + let Json.168 : List U8 = StructAtIndex 0 Json.883; + inc Json.168; + let Json.169 : U64 = StructAtIndex 1 Json.883; + dec Json.883; + let Json.911 : I64 = 34i64; + let Json.910 : U8 = CallByName Num.127 Json.911; + let Json.908 : List U8 = CallByName List.4 Json.168 Json.910; + let Json.909 : List U8 = CallByName Str.12 Json.170; + let Json.905 : List U8 = CallByName List.8 Json.908 Json.909; + let Json.907 : I64 = 34i64; + let Json.906 : U8 = CallByName Num.127 Json.907; + let Json.902 : List U8 = CallByName List.4 Json.905 Json.906; + let Json.904 : I64 = 58i64; + let Json.903 : U8 = CallByName Num.127 Json.904; + let Json.900 : List U8 = CallByName List.4 Json.902 Json.903; + let Json.901 : {} = Struct {}; + let Json.172 : List U8 = CallByName Encode.24 Json.900 Json.171 Json.901; + joinpoint Json.895 Json.173: + let Json.893 : U64 = 1i64; + let Json.892 : U64 = CallByName Num.20 Json.169 Json.893; + let Json.891 : {List U8, U64} = Struct {Json.173, Json.892}; + ret Json.891; in - let Json.835 : U64 = 1i64; - let Json.832 : Int1 = CallByName Num.24 Json.162 Json.835; - if Json.832 then - let Json.834 : I64 = 44i64; - let Json.833 : U8 = CallByName Num.127 Json.834; - let Json.830 : List U8 = CallByName List.4 Json.165 Json.833; - jump Json.831 Json.830; + let Json.899 : U64 = 1i64; + let Json.896 : Int1 = CallByName Num.24 Json.169 Json.899; + if Json.896 then + let Json.898 : I64 = 44i64; + let Json.897 : U8 = CallByName Num.127 Json.898; + let Json.894 : List U8 = CallByName List.4 Json.172 Json.897; + jump Json.895 Json.894; else - jump Json.831 Json.165; + jump Json.895 Json.172; -procedure Json.22 (Json.138): - let Json.863 : Str = CallByName Encode.23 Json.138; - ret Json.863; +procedure Json.23 (Json.145): + let Json.927 : Str = CallByName Encode.23 Json.145; + ret Json.927; -procedure Json.24 (Json.154): - let Json.815 : List {Str, Str} = CallByName Encode.23 Json.154; - ret Json.815; +procedure Json.25 (Json.161): + let Json.879 : List {Str, Str} = CallByName Encode.23 Json.161; + ret Json.879; procedure List.139 (List.140, List.141, List.138): - let List.541 : {List U8, U64} = CallByName Json.157 List.140 List.141; + let List.541 : {List U8, U64} = CallByName Json.164 List.140 List.141; ret List.541; procedure List.18 (List.136, List.137, List.138): diff --git a/crates/compiler/test_mono/generated/encode_derived_string.txt b/crates/compiler/test_mono/generated/encode_derived_string.txt index fd9c768902..d2ced7fae1 100644 --- a/crates/compiler/test_mono/generated/encode_derived_string.txt +++ b/crates/compiler/test_mono/generated/encode_derived_string.txt @@ -2,33 +2,33 @@ procedure Encode.23 (Encode.98): ret Encode.98; procedure Encode.24 (Encode.99, Encode.107, Encode.101): - let Encode.111 : List U8 = CallByName Json.139 Encode.99 Encode.101 Encode.107; + let Encode.111 : List U8 = CallByName Json.146 Encode.99 Encode.101 Encode.107; ret Encode.111; procedure Encode.26 (Encode.105, Encode.106): let Encode.109 : List U8 = Array []; - let Encode.110 : Str = CallByName Json.22 Encode.105; + let Encode.110 : Str = CallByName Json.23 Encode.105; let Encode.108 : List U8 = CallByName Encode.24 Encode.109 Encode.110 Encode.106; ret Encode.108; procedure Json.1 (): - let Json.814 : {} = Struct {}; - ret Json.814; + let Json.878 : {} = Struct {}; + ret Json.878; -procedure Json.139 (Json.140, Json.817, Json.138): - let Json.826 : I64 = 34i64; - let Json.825 : U8 = CallByName Num.127 Json.826; - let Json.823 : List U8 = CallByName List.4 Json.140 Json.825; - let Json.824 : List U8 = CallByName Str.12 Json.138; - let Json.820 : List U8 = CallByName List.8 Json.823 Json.824; - let Json.822 : I64 = 34i64; - let Json.821 : U8 = CallByName Num.127 Json.822; - let Json.819 : List U8 = CallByName List.4 Json.820 Json.821; - ret Json.819; +procedure Json.146 (Json.147, Json.881, Json.145): + let Json.890 : I64 = 34i64; + let Json.889 : U8 = CallByName Num.127 Json.890; + let Json.887 : List U8 = CallByName List.4 Json.147 Json.889; + let Json.888 : List U8 = CallByName Str.12 Json.145; + let Json.884 : List U8 = CallByName List.8 Json.887 Json.888; + let Json.886 : I64 = 34i64; + let Json.885 : U8 = CallByName Num.127 Json.886; + let Json.883 : List U8 = CallByName List.4 Json.884 Json.885; + ret Json.883; -procedure Json.22 (Json.138): - let Json.815 : Str = CallByName Encode.23 Json.138; - ret Json.815; +procedure Json.23 (Json.145): + let Json.879 : Str = CallByName Encode.23 Json.145; + ret Json.879; procedure List.4 (List.107, List.108): let List.503 : U64 = 1i64; diff --git a/crates/compiler/test_mono/generated/encode_derived_tag_one_field_string.txt b/crates/compiler/test_mono/generated/encode_derived_tag_one_field_string.txt index 99b122784b..516cffa430 100644 --- a/crates/compiler/test_mono/generated/encode_derived_tag_one_field_string.txt +++ b/crates/compiler/test_mono/generated/encode_derived_tag_one_field_string.txt @@ -8,9 +8,9 @@ procedure #Derived.3 (#Derived.4, #Derived.5, #Derived.1): ret #Derived_gen.3; in let #Derived_gen.7 : Str = "A"; - let #Derived_gen.9 : Str = CallByName Json.22 #Derived.1; + let #Derived_gen.9 : Str = CallByName Json.23 #Derived.1; let #Derived_gen.8 : List Str = Array [#Derived_gen.9]; - let #Derived_gen.6 : {Str, List Str} = CallByName Json.26 #Derived_gen.7 #Derived_gen.8; + let #Derived_gen.6 : {Str, List Str} = CallByName Json.27 #Derived_gen.7 #Derived_gen.8; jump #Derived_gen.5 #Derived_gen.6; procedure Encode.23 (Encode.98): @@ -27,11 +27,11 @@ procedure Encode.24 (Encode.99, Encode.107, Encode.101): ret Encode.111; procedure Encode.24 (Encode.99, Encode.107, Encode.101): - let Encode.118 : List U8 = CallByName Json.181 Encode.99 Encode.101 Encode.107; + let Encode.118 : List U8 = CallByName Json.188 Encode.99 Encode.101 Encode.107; ret Encode.118; procedure Encode.24 (Encode.99, Encode.107, Encode.101): - let Encode.121 : List U8 = CallByName Json.139 Encode.99 Encode.101 Encode.107; + let Encode.121 : List U8 = CallByName Json.146 Encode.99 Encode.101 Encode.107; ret Encode.121; procedure Encode.26 (Encode.105, Encode.106): @@ -41,93 +41,93 @@ procedure Encode.26 (Encode.105, Encode.106): ret Encode.108; procedure Json.1 (): - let Json.814 : {} = Struct {}; - ret Json.814; + let Json.878 : {} = Struct {}; + ret Json.878; -procedure Json.139 (Json.140, Json.858, Json.138): - let Json.867 : I64 = 34i64; - let Json.866 : U8 = CallByName Num.127 Json.867; - let Json.864 : List U8 = CallByName List.4 Json.140 Json.866; - let Json.865 : List U8 = CallByName Str.12 Json.138; - let Json.861 : List U8 = CallByName List.8 Json.864 Json.865; - let Json.863 : I64 = 34i64; - let Json.862 : U8 = CallByName Num.127 Json.863; - let Json.860 : List U8 = CallByName List.4 Json.861 Json.862; - ret Json.860; +procedure Json.146 (Json.147, Json.922, Json.145): + let Json.931 : I64 = 34i64; + let Json.930 : U8 = CallByName Num.127 Json.931; + let Json.928 : List U8 = CallByName List.4 Json.147 Json.930; + let Json.929 : List U8 = CallByName Str.12 Json.145; + let Json.925 : List U8 = CallByName List.8 Json.928 Json.929; + let Json.927 : I64 = 34i64; + let Json.926 : U8 = CallByName Num.127 Json.927; + let Json.924 : List U8 = CallByName List.4 Json.925 Json.926; + ret Json.924; -procedure Json.181 (Json.182, Json.817, #Attr.12): - let Json.180 : List Str = StructAtIndex 1 #Attr.12; - inc Json.180; - let Json.179 : Str = StructAtIndex 0 #Attr.12; - inc Json.179; - dec #Attr.12; - let Json.855 : I64 = 123i64; - let Json.854 : U8 = CallByName Num.127 Json.855; - let Json.851 : List U8 = CallByName List.4 Json.182 Json.854; - let Json.853 : I64 = 34i64; - let Json.852 : U8 = CallByName Num.127 Json.853; - let Json.849 : List U8 = CallByName List.4 Json.851 Json.852; - let Json.850 : List U8 = CallByName Str.12 Json.179; - let Json.846 : List U8 = CallByName List.8 Json.849 Json.850; - let Json.848 : I64 = 34i64; - let Json.847 : U8 = CallByName Num.127 Json.848; - let Json.843 : List U8 = CallByName List.4 Json.846 Json.847; - let Json.845 : I64 = 58i64; - let Json.844 : U8 = CallByName Num.127 Json.845; - let Json.840 : List U8 = CallByName List.4 Json.843 Json.844; - let Json.842 : I64 = 91i64; - let Json.841 : U8 = CallByName Num.127 Json.842; - let Json.184 : List U8 = CallByName List.4 Json.840 Json.841; - let Json.839 : U64 = CallByName List.6 Json.180; - let Json.827 : {List U8, U64} = Struct {Json.184, Json.839}; - let Json.828 : {} = Struct {}; - let Json.826 : {List U8, U64} = CallByName List.18 Json.180 Json.827 Json.828; - dec Json.180; - let Json.186 : List U8 = StructAtIndex 0 Json.826; - inc Json.186; - dec Json.826; - let Json.825 : I64 = 93i64; - let Json.824 : U8 = CallByName Num.127 Json.825; - let Json.821 : List U8 = CallByName List.4 Json.186 Json.824; - let Json.823 : I64 = 125i64; - let Json.822 : U8 = CallByName Num.127 Json.823; - let Json.820 : List U8 = CallByName List.4 Json.821 Json.822; - ret Json.820; - -procedure Json.183 (Json.819, Json.189): - let Json.187 : List U8 = StructAtIndex 0 Json.819; +procedure Json.188 (Json.189, Json.881, #Attr.12): + let Json.187 : List Str = StructAtIndex 1 #Attr.12; inc Json.187; - let Json.188 : U64 = StructAtIndex 1 Json.819; - dec Json.819; - let Json.838 : {} = Struct {}; - let Json.190 : List U8 = CallByName Encode.24 Json.187 Json.189 Json.838; - joinpoint Json.833 Json.191: - let Json.831 : U64 = 1i64; - let Json.830 : U64 = CallByName Num.20 Json.188 Json.831; - let Json.829 : {List U8, U64} = Struct {Json.191, Json.830}; - ret Json.829; + let Json.186 : Str = StructAtIndex 0 #Attr.12; + inc Json.186; + dec #Attr.12; + let Json.919 : I64 = 123i64; + let Json.918 : U8 = CallByName Num.127 Json.919; + let Json.915 : List U8 = CallByName List.4 Json.189 Json.918; + let Json.917 : I64 = 34i64; + let Json.916 : U8 = CallByName Num.127 Json.917; + let Json.913 : List U8 = CallByName List.4 Json.915 Json.916; + let Json.914 : List U8 = CallByName Str.12 Json.186; + let Json.910 : List U8 = CallByName List.8 Json.913 Json.914; + let Json.912 : I64 = 34i64; + let Json.911 : U8 = CallByName Num.127 Json.912; + let Json.907 : List U8 = CallByName List.4 Json.910 Json.911; + let Json.909 : I64 = 58i64; + let Json.908 : U8 = CallByName Num.127 Json.909; + let Json.904 : List U8 = CallByName List.4 Json.907 Json.908; + let Json.906 : I64 = 91i64; + let Json.905 : U8 = CallByName Num.127 Json.906; + let Json.191 : List U8 = CallByName List.4 Json.904 Json.905; + let Json.903 : U64 = CallByName List.6 Json.187; + let Json.891 : {List U8, U64} = Struct {Json.191, Json.903}; + let Json.892 : {} = Struct {}; + let Json.890 : {List U8, U64} = CallByName List.18 Json.187 Json.891 Json.892; + dec Json.187; + let Json.193 : List U8 = StructAtIndex 0 Json.890; + inc Json.193; + dec Json.890; + let Json.889 : I64 = 93i64; + let Json.888 : U8 = CallByName Num.127 Json.889; + let Json.885 : List U8 = CallByName List.4 Json.193 Json.888; + let Json.887 : I64 = 125i64; + let Json.886 : U8 = CallByName Num.127 Json.887; + let Json.884 : List U8 = CallByName List.4 Json.885 Json.886; + ret Json.884; + +procedure Json.190 (Json.883, Json.196): + let Json.194 : List U8 = StructAtIndex 0 Json.883; + inc Json.194; + let Json.195 : U64 = StructAtIndex 1 Json.883; + dec Json.883; + let Json.902 : {} = Struct {}; + let Json.197 : List U8 = CallByName Encode.24 Json.194 Json.196 Json.902; + joinpoint Json.897 Json.198: + let Json.895 : U64 = 1i64; + let Json.894 : U64 = CallByName Num.20 Json.195 Json.895; + let Json.893 : {List U8, U64} = Struct {Json.198, Json.894}; + ret Json.893; in - let Json.837 : U64 = 1i64; - let Json.834 : Int1 = CallByName Num.24 Json.188 Json.837; - if Json.834 then - let Json.836 : I64 = 44i64; - let Json.835 : U8 = CallByName Num.127 Json.836; - let Json.832 : List U8 = CallByName List.4 Json.190 Json.835; - jump Json.833 Json.832; + let Json.901 : U64 = 1i64; + let Json.898 : Int1 = CallByName Num.24 Json.195 Json.901; + if Json.898 then + let Json.900 : I64 = 44i64; + let Json.899 : U8 = CallByName Num.127 Json.900; + let Json.896 : List U8 = CallByName List.4 Json.197 Json.899; + jump Json.897 Json.896; else - jump Json.833 Json.190; + jump Json.897 Json.197; -procedure Json.22 (Json.138): - let Json.856 : Str = CallByName Encode.23 Json.138; - ret Json.856; +procedure Json.23 (Json.145): + let Json.920 : Str = CallByName Encode.23 Json.145; + ret Json.920; -procedure Json.26 (Json.179, Json.180): - let Json.816 : {Str, List Str} = Struct {Json.179, Json.180}; - let Json.815 : {Str, List Str} = CallByName Encode.23 Json.816; - ret Json.815; +procedure Json.27 (Json.186, Json.187): + let Json.880 : {Str, List Str} = Struct {Json.186, Json.187}; + let Json.879 : {Str, List Str} = CallByName Encode.23 Json.880; + ret Json.879; procedure List.139 (List.140, List.141, List.138): - let List.547 : {List U8, U64} = CallByName Json.183 List.140 List.141; + let List.547 : {List U8, U64} = CallByName Json.190 List.140 List.141; ret List.547; procedure List.18 (List.136, List.137, List.138): diff --git a/crates/compiler/test_mono/generated/encode_derived_tag_two_payloads_string.txt b/crates/compiler/test_mono/generated/encode_derived_tag_two_payloads_string.txt index 164c5a5248..11ac25e227 100644 --- a/crates/compiler/test_mono/generated/encode_derived_tag_two_payloads_string.txt +++ b/crates/compiler/test_mono/generated/encode_derived_tag_two_payloads_string.txt @@ -13,10 +13,10 @@ procedure #Derived.4 (#Derived.5, #Derived.6, #Derived.1): inc #Derived.3; dec #Derived.1; let #Derived_gen.7 : Str = "A"; - let #Derived_gen.9 : Str = CallByName Json.22 #Derived.2; - let #Derived_gen.10 : Str = CallByName Json.22 #Derived.3; + let #Derived_gen.9 : Str = CallByName Json.23 #Derived.2; + let #Derived_gen.10 : Str = CallByName Json.23 #Derived.3; let #Derived_gen.8 : List Str = Array [#Derived_gen.9, #Derived_gen.10]; - let #Derived_gen.6 : {Str, List Str} = CallByName Json.26 #Derived_gen.7 #Derived_gen.8; + let #Derived_gen.6 : {Str, List Str} = CallByName Json.27 #Derived_gen.7 #Derived_gen.8; jump #Derived_gen.5 #Derived_gen.6; procedure Encode.23 (Encode.98): @@ -33,11 +33,11 @@ procedure Encode.24 (Encode.99, Encode.107, Encode.101): ret Encode.111; procedure Encode.24 (Encode.99, Encode.107, Encode.101): - let Encode.118 : List U8 = CallByName Json.181 Encode.99 Encode.101 Encode.107; + let Encode.118 : List U8 = CallByName Json.188 Encode.99 Encode.101 Encode.107; ret Encode.118; procedure Encode.24 (Encode.99, Encode.107, Encode.101): - let Encode.122 : List U8 = CallByName Json.139 Encode.99 Encode.101 Encode.107; + let Encode.122 : List U8 = CallByName Json.146 Encode.99 Encode.101 Encode.107; ret Encode.122; procedure Encode.26 (Encode.105, Encode.106): @@ -47,93 +47,93 @@ procedure Encode.26 (Encode.105, Encode.106): ret Encode.108; procedure Json.1 (): - let Json.814 : {} = Struct {}; - ret Json.814; + let Json.878 : {} = Struct {}; + ret Json.878; -procedure Json.139 (Json.140, Json.858, Json.138): - let Json.867 : I64 = 34i64; - let Json.866 : U8 = CallByName Num.127 Json.867; - let Json.864 : List U8 = CallByName List.4 Json.140 Json.866; - let Json.865 : List U8 = CallByName Str.12 Json.138; - let Json.861 : List U8 = CallByName List.8 Json.864 Json.865; - let Json.863 : I64 = 34i64; - let Json.862 : U8 = CallByName Num.127 Json.863; - let Json.860 : List U8 = CallByName List.4 Json.861 Json.862; - ret Json.860; +procedure Json.146 (Json.147, Json.922, Json.145): + let Json.931 : I64 = 34i64; + let Json.930 : U8 = CallByName Num.127 Json.931; + let Json.928 : List U8 = CallByName List.4 Json.147 Json.930; + let Json.929 : List U8 = CallByName Str.12 Json.145; + let Json.925 : List U8 = CallByName List.8 Json.928 Json.929; + let Json.927 : I64 = 34i64; + let Json.926 : U8 = CallByName Num.127 Json.927; + let Json.924 : List U8 = CallByName List.4 Json.925 Json.926; + ret Json.924; -procedure Json.181 (Json.182, Json.817, #Attr.12): - let Json.180 : List Str = StructAtIndex 1 #Attr.12; - inc Json.180; - let Json.179 : Str = StructAtIndex 0 #Attr.12; - inc Json.179; - dec #Attr.12; - let Json.855 : I64 = 123i64; - let Json.854 : U8 = CallByName Num.127 Json.855; - let Json.851 : List U8 = CallByName List.4 Json.182 Json.854; - let Json.853 : I64 = 34i64; - let Json.852 : U8 = CallByName Num.127 Json.853; - let Json.849 : List U8 = CallByName List.4 Json.851 Json.852; - let Json.850 : List U8 = CallByName Str.12 Json.179; - let Json.846 : List U8 = CallByName List.8 Json.849 Json.850; - let Json.848 : I64 = 34i64; - let Json.847 : U8 = CallByName Num.127 Json.848; - let Json.843 : List U8 = CallByName List.4 Json.846 Json.847; - let Json.845 : I64 = 58i64; - let Json.844 : U8 = CallByName Num.127 Json.845; - let Json.840 : List U8 = CallByName List.4 Json.843 Json.844; - let Json.842 : I64 = 91i64; - let Json.841 : U8 = CallByName Num.127 Json.842; - let Json.184 : List U8 = CallByName List.4 Json.840 Json.841; - let Json.839 : U64 = CallByName List.6 Json.180; - let Json.827 : {List U8, U64} = Struct {Json.184, Json.839}; - let Json.828 : {} = Struct {}; - let Json.826 : {List U8, U64} = CallByName List.18 Json.180 Json.827 Json.828; - dec Json.180; - let Json.186 : List U8 = StructAtIndex 0 Json.826; - inc Json.186; - dec Json.826; - let Json.825 : I64 = 93i64; - let Json.824 : U8 = CallByName Num.127 Json.825; - let Json.821 : List U8 = CallByName List.4 Json.186 Json.824; - let Json.823 : I64 = 125i64; - let Json.822 : U8 = CallByName Num.127 Json.823; - let Json.820 : List U8 = CallByName List.4 Json.821 Json.822; - ret Json.820; - -procedure Json.183 (Json.819, Json.189): - let Json.187 : List U8 = StructAtIndex 0 Json.819; +procedure Json.188 (Json.189, Json.881, #Attr.12): + let Json.187 : List Str = StructAtIndex 1 #Attr.12; inc Json.187; - let Json.188 : U64 = StructAtIndex 1 Json.819; - dec Json.819; - let Json.838 : {} = Struct {}; - let Json.190 : List U8 = CallByName Encode.24 Json.187 Json.189 Json.838; - joinpoint Json.833 Json.191: - let Json.831 : U64 = 1i64; - let Json.830 : U64 = CallByName Num.20 Json.188 Json.831; - let Json.829 : {List U8, U64} = Struct {Json.191, Json.830}; - ret Json.829; + let Json.186 : Str = StructAtIndex 0 #Attr.12; + inc Json.186; + dec #Attr.12; + let Json.919 : I64 = 123i64; + let Json.918 : U8 = CallByName Num.127 Json.919; + let Json.915 : List U8 = CallByName List.4 Json.189 Json.918; + let Json.917 : I64 = 34i64; + let Json.916 : U8 = CallByName Num.127 Json.917; + let Json.913 : List U8 = CallByName List.4 Json.915 Json.916; + let Json.914 : List U8 = CallByName Str.12 Json.186; + let Json.910 : List U8 = CallByName List.8 Json.913 Json.914; + let Json.912 : I64 = 34i64; + let Json.911 : U8 = CallByName Num.127 Json.912; + let Json.907 : List U8 = CallByName List.4 Json.910 Json.911; + let Json.909 : I64 = 58i64; + let Json.908 : U8 = CallByName Num.127 Json.909; + let Json.904 : List U8 = CallByName List.4 Json.907 Json.908; + let Json.906 : I64 = 91i64; + let Json.905 : U8 = CallByName Num.127 Json.906; + let Json.191 : List U8 = CallByName List.4 Json.904 Json.905; + let Json.903 : U64 = CallByName List.6 Json.187; + let Json.891 : {List U8, U64} = Struct {Json.191, Json.903}; + let Json.892 : {} = Struct {}; + let Json.890 : {List U8, U64} = CallByName List.18 Json.187 Json.891 Json.892; + dec Json.187; + let Json.193 : List U8 = StructAtIndex 0 Json.890; + inc Json.193; + dec Json.890; + let Json.889 : I64 = 93i64; + let Json.888 : U8 = CallByName Num.127 Json.889; + let Json.885 : List U8 = CallByName List.4 Json.193 Json.888; + let Json.887 : I64 = 125i64; + let Json.886 : U8 = CallByName Num.127 Json.887; + let Json.884 : List U8 = CallByName List.4 Json.885 Json.886; + ret Json.884; + +procedure Json.190 (Json.883, Json.196): + let Json.194 : List U8 = StructAtIndex 0 Json.883; + inc Json.194; + let Json.195 : U64 = StructAtIndex 1 Json.883; + dec Json.883; + let Json.902 : {} = Struct {}; + let Json.197 : List U8 = CallByName Encode.24 Json.194 Json.196 Json.902; + joinpoint Json.897 Json.198: + let Json.895 : U64 = 1i64; + let Json.894 : U64 = CallByName Num.20 Json.195 Json.895; + let Json.893 : {List U8, U64} = Struct {Json.198, Json.894}; + ret Json.893; in - let Json.837 : U64 = 1i64; - let Json.834 : Int1 = CallByName Num.24 Json.188 Json.837; - if Json.834 then - let Json.836 : I64 = 44i64; - let Json.835 : U8 = CallByName Num.127 Json.836; - let Json.832 : List U8 = CallByName List.4 Json.190 Json.835; - jump Json.833 Json.832; + let Json.901 : U64 = 1i64; + let Json.898 : Int1 = CallByName Num.24 Json.195 Json.901; + if Json.898 then + let Json.900 : I64 = 44i64; + let Json.899 : U8 = CallByName Num.127 Json.900; + let Json.896 : List U8 = CallByName List.4 Json.197 Json.899; + jump Json.897 Json.896; else - jump Json.833 Json.190; + jump Json.897 Json.197; -procedure Json.22 (Json.138): - let Json.868 : Str = CallByName Encode.23 Json.138; - ret Json.868; +procedure Json.23 (Json.145): + let Json.932 : Str = CallByName Encode.23 Json.145; + ret Json.932; -procedure Json.26 (Json.179, Json.180): - let Json.816 : {Str, List Str} = Struct {Json.179, Json.180}; - let Json.815 : {Str, List Str} = CallByName Encode.23 Json.816; - ret Json.815; +procedure Json.27 (Json.186, Json.187): + let Json.880 : {Str, List Str} = Struct {Json.186, Json.187}; + let Json.879 : {Str, List Str} = CallByName Encode.23 Json.880; + ret Json.879; procedure List.139 (List.140, List.141, List.138): - let List.547 : {List U8, U64} = CallByName Json.183 List.140 List.141; + let List.547 : {List U8, U64} = CallByName Json.190 List.140 List.141; ret List.547; procedure List.18 (List.136, List.137, List.138): diff --git a/crates/compiler/test_mono/generated/issue_4749.txt b/crates/compiler/test_mono/generated/issue_4749.txt index 9e08d99c8c..b1168b3be3 100644 --- a/crates/compiler/test_mono/generated/issue_4749.txt +++ b/crates/compiler/test_mono/generated/issue_4749.txt @@ -32,11 +32,11 @@ procedure Decode.24 (Decode.101): ret Decode.101; procedure Decode.25 (Decode.102, Decode.121, Decode.104): - let Decode.134 : {List U8, [C {}, C Str]} = CallByName Json.491 Decode.102 Decode.104; + let Decode.134 : {List U8, [C {}, C Str]} = CallByName Json.448 Decode.102 Decode.104; ret Decode.134; procedure Decode.26 (Decode.105, Decode.106): - let Decode.133 : {} = CallByName Json.58; + let Decode.133 : {} = CallByName Json.55; let Decode.132 : {List U8, [C {}, C Str]} = CallByName Decode.25 Decode.105 Decode.133 Decode.106; ret Decode.132; @@ -71,523 +71,523 @@ procedure Decode.27 (Decode.107, Decode.108): ret Decode.123; procedure Json.2 (): - let Json.814 : {} = Struct {}; - ret Json.814; + let Json.878 : {} = Struct {}; + ret Json.878; -procedure Json.491 (Json.492, Json.817): - inc Json.492; - let Json.954 : {List U8, List U8} = CallByName Json.59 Json.492; - let Json.495 : List U8 = StructAtIndex 0 Json.954; - inc Json.495; - let Json.494 : List U8 = StructAtIndex 1 Json.954; - inc Json.494; - dec Json.954; - let Json.950 : Int1 = CallByName List.1 Json.494; - if Json.950 then - dec Json.495; - dec Json.494; - let Json.953 : {} = Struct {}; - let Json.952 : [C {}, C Str] = TagId(0) Json.953; - let Json.951 : {List U8, [C {}, C Str]} = Struct {Json.492, Json.952}; - ret Json.951; +procedure Json.448 (Json.449, Json.881): + inc Json.449; + let Json.1018 : {List U8, List U8} = CallByName Json.56 Json.449; + let Json.452 : List U8 = StructAtIndex 0 Json.1018; + inc Json.452; + let Json.451 : List U8 = StructAtIndex 1 Json.1018; + inc Json.451; + dec Json.1018; + let Json.1014 : Int1 = CallByName List.1 Json.451; + if Json.1014 then + dec Json.452; + dec Json.451; + let Json.1017 : {} = Struct {}; + let Json.1016 : [C {}, C Str] = TagId(0) Json.1017; + let Json.1015 : {List U8, [C {}, C Str]} = Struct {Json.449, Json.1016}; + ret Json.1015; else - let Json.949 : List U8 = Array []; - let Json.829 : {List U8, List U8} = Struct {Json.494, Json.949}; - let Json.828 : {List U8, List U8} = CallByName Json.68 Json.829; - let Json.499 : List U8 = StructAtIndex 1 Json.828; - inc Json.499; - dec Json.828; - let Json.827 : List U8 = CallByName List.38 Json.499; - let Json.826 : List U8 = CallByName List.32 Json.827; - let Json.500 : [C {U64, U8}, C Str] = CallByName Str.9 Json.826; - let Json.823 : U8 = 1i64; - let Json.824 : U8 = GetTagId Json.500; - let Json.825 : Int1 = lowlevel Eq Json.823 Json.824; - if Json.825 then - dec Json.492; - let Json.501 : Str = UnionAtIndex (Id 1) (Index 0) Json.500; - inc Json.501; - dec Json.500; - let Json.819 : [C {}, C Str] = TagId(1) Json.501; - let Json.818 : {List U8, [C {}, C Str]} = Struct {Json.495, Json.819}; - ret Json.818; + let Json.1013 : List U8 = Array []; + let Json.893 : {List U8, List U8} = Struct {Json.451, Json.1013}; + let Json.892 : {List U8, List U8} = CallByName Json.65 Json.893; + let Json.456 : List U8 = StructAtIndex 1 Json.892; + inc Json.456; + dec Json.892; + let Json.891 : List U8 = CallByName List.38 Json.456; + let Json.890 : List U8 = CallByName List.32 Json.891; + let Json.457 : [C {U64, U8}, C Str] = CallByName Str.9 Json.890; + let Json.887 : U8 = 1i64; + let Json.888 : U8 = GetTagId Json.457; + let Json.889 : Int1 = lowlevel Eq Json.887 Json.888; + if Json.889 then + dec Json.449; + let Json.458 : Str = UnionAtIndex (Id 1) (Index 0) Json.457; + inc Json.458; + dec Json.457; + let Json.883 : [C {}, C Str] = TagId(1) Json.458; + let Json.882 : {List U8, [C {}, C Str]} = Struct {Json.452, Json.883}; + ret Json.882; else - dec Json.495; - dec Json.500; - let Json.822 : {} = Struct {}; - let Json.821 : [C {}, C Str] = TagId(0) Json.822; - let Json.820 : {List U8, [C {}, C Str]} = Struct {Json.492, Json.821}; - ret Json.820; + dec Json.457; + dec Json.452; + let Json.886 : {} = Struct {}; + let Json.885 : [C {}, C Str] = TagId(0) Json.886; + let Json.884 : {List U8, [C {}, C Str]} = Struct {Json.449, Json.885}; + ret Json.884; -procedure Json.58 (): - let Json.816 : {} = Struct {}; - let Json.815 : {} = CallByName Decode.24 Json.816; - ret Json.815; - -procedure Json.59 (Json.505): - let Json.966 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(4) ; - let Json.967 : {} = Struct {}; - let Json.955 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = CallByName List.26 Json.505 Json.966 Json.967; - let Json.963 : U8 = 2i64; - let Json.964 : U8 = GetTagId Json.955; - let Json.965 : Int1 = lowlevel Eq Json.963 Json.964; - if Json.965 then - let Json.507 : U64 = UnionAtIndex (Id 2) (Index 0) Json.955; - inc Json.505; - let Json.957 : List U8 = CallByName List.29 Json.505 Json.507; - let Json.960 : U64 = 0i64; - let Json.959 : {U64, U64} = Struct {Json.507, Json.960}; - let Json.958 : List U8 = CallByName List.49 Json.505 Json.959; - let Json.956 : {List U8, List U8} = Struct {Json.957, Json.958}; - ret Json.956; - else - let Json.962 : List U8 = Array []; - let Json.961 : {List U8, List U8} = Struct {Json.505, Json.962}; - ret Json.961; - -procedure Json.60 (Json.508, Json.509): - let Json.968 : {[C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], U8} = Struct {Json.508, Json.509}; - joinpoint Json.1011: - let Json.1009 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(3) ; - let Json.1008 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(0) Json.1009; - ret Json.1008; - in - let Json.1012 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.968; - let Json.1070 : U8 = GetTagId Json.1012; - switch Json.1070: - case 4: - let Json.511 : U8 = StructAtIndex 1 Json.968; - joinpoint Json.1014 Json.1013: - if Json.1013 then - let Json.971 : U64 = 1i64; - let Json.970 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(0) Json.971; - let Json.969 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.970; - ret Json.969; - else - jump Json.1011; - in - let Json.1016 : U8 = 34i64; - let Json.1015 : Int1 = CallByName Bool.11 Json.511 Json.1016; - jump Json.1014 Json.1015; - - case 0: - let Json.1027 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.968; - let Json.514 : U64 = UnionAtIndex (Id 0) (Index 0) Json.1027; - let Json.515 : U8 = StructAtIndex 1 Json.968; - joinpoint Json.1024 Json.1018: - if Json.1018 then - let Json.975 : U64 = 1i64; - let Json.974 : U64 = CallByName Num.19 Json.514 Json.975; - let Json.973 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(2) Json.974; - let Json.972 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(0) Json.973; - ret Json.972; - else - let Json.1023 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.968; - let Json.518 : U64 = UnionAtIndex (Id 0) (Index 0) Json.1023; - let Json.519 : U8 = StructAtIndex 1 Json.968; - joinpoint Json.1020 Json.1019: - if Json.1019 then - let Json.979 : U64 = 1i64; - let Json.978 : U64 = CallByName Num.19 Json.518 Json.979; - let Json.977 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(1) Json.978; - let Json.976 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.977; - ret Json.976; - else - let Json.1010 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.968; - let Json.522 : U64 = UnionAtIndex (Id 0) (Index 0) Json.1010; - let Json.983 : U64 = 1i64; - let Json.982 : U64 = CallByName Num.19 Json.522 Json.983; - let Json.981 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(0) Json.982; - let Json.980 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.981; - ret Json.980; - in - let Json.1022 : U8 = 92i64; - let Json.1021 : Int1 = CallByName Bool.11 Json.519 Json.1022; - jump Json.1020 Json.1021; - in - let Json.1026 : U8 = 34i64; - let Json.1025 : Int1 = CallByName Bool.11 Json.515 Json.1026; - jump Json.1024 Json.1025; - - case 1: - let Json.1036 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.968; - let Json.525 : U64 = UnionAtIndex (Id 1) (Index 0) Json.1036; - let Json.526 : U8 = StructAtIndex 1 Json.968; - joinpoint Json.1034 Json.1028: - if Json.1028 then - let Json.987 : U64 = 1i64; - let Json.986 : U64 = CallByName Num.19 Json.525 Json.987; - let Json.985 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(0) Json.986; - let Json.984 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.985; - ret Json.984; - else - let Json.1033 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.968; - let Json.529 : U64 = UnionAtIndex (Id 1) (Index 0) Json.1033; - let Json.530 : U8 = StructAtIndex 1 Json.968; - joinpoint Json.1030 Json.1029: - if Json.1029 then - let Json.991 : U64 = 1i64; - let Json.990 : U64 = CallByName Num.19 Json.529 Json.991; - let Json.989 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(5) Json.990; - let Json.988 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.989; - ret Json.988; - else - jump Json.1011; - in - let Json.1032 : U8 = 117i64; - let Json.1031 : Int1 = CallByName Bool.11 Json.530 Json.1032; - jump Json.1030 Json.1031; - in - let Json.1035 : Int1 = CallByName Json.61 Json.526; - jump Json.1034 Json.1035; - - case 5: - let Json.1057 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.968; - let Json.533 : U64 = UnionAtIndex (Id 5) (Index 0) Json.1057; - let Json.534 : U8 = StructAtIndex 1 Json.968; - joinpoint Json.1038 Json.1037: - if Json.1037 then - let Json.995 : U64 = 1i64; - let Json.994 : U64 = CallByName Num.19 Json.533 Json.995; - let Json.993 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(6) Json.994; - let Json.992 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.993; - ret Json.992; - else - jump Json.1011; - in - let Json.1039 : Int1 = CallByName Json.63 Json.534; - jump Json.1038 Json.1039; - - case 6: - let Json.1061 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.968; - let Json.537 : U64 = UnionAtIndex (Id 6) (Index 0) Json.1061; - let Json.538 : U8 = StructAtIndex 1 Json.968; - joinpoint Json.1059 Json.1058: - if Json.1058 then - let Json.999 : U64 = 1i64; - let Json.998 : U64 = CallByName Num.19 Json.537 Json.999; - let Json.997 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(7) Json.998; - let Json.996 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.997; - ret Json.996; - else - jump Json.1011; - in - let Json.1060 : Int1 = CallByName Json.63 Json.538; - jump Json.1059 Json.1060; - - case 7: - let Json.1065 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.968; - let Json.541 : U64 = UnionAtIndex (Id 7) (Index 0) Json.1065; - let Json.542 : U8 = StructAtIndex 1 Json.968; - joinpoint Json.1063 Json.1062: - if Json.1062 then - let Json.1003 : U64 = 1i64; - let Json.1002 : U64 = CallByName Num.19 Json.541 Json.1003; - let Json.1001 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(8) Json.1002; - let Json.1000 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.1001; - ret Json.1000; - else - jump Json.1011; - in - let Json.1064 : Int1 = CallByName Json.63 Json.542; - jump Json.1063 Json.1064; - - case 8: - let Json.1069 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.968; - let Json.545 : U64 = UnionAtIndex (Id 8) (Index 0) Json.1069; - let Json.546 : U8 = StructAtIndex 1 Json.968; - joinpoint Json.1067 Json.1066: - if Json.1066 then - let Json.1007 : U64 = 1i64; - let Json.1006 : U64 = CallByName Num.19 Json.545 Json.1007; - let Json.1005 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(0) Json.1006; - let Json.1004 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.1005; - ret Json.1004; - else - jump Json.1011; - in - let Json.1068 : Int1 = CallByName Json.63 Json.546; - jump Json.1067 Json.1068; - - default: - jump Json.1011; - - -procedure Json.61 (Json.551): - switch Json.551: - case 34: - let Json.917 : Int1 = CallByName Bool.2; - ret Json.917; - - case 92: - let Json.918 : Int1 = CallByName Bool.2; - ret Json.918; - - case 47: - let Json.919 : Int1 = CallByName Bool.2; - ret Json.919; - - case 98: - let Json.920 : Int1 = CallByName Bool.2; - ret Json.920; - - case 102: - let Json.921 : Int1 = CallByName Bool.2; - ret Json.921; - - case 110: - let Json.922 : Int1 = CallByName Bool.2; - ret Json.922; - - case 114: - let Json.923 : Int1 = CallByName Bool.2; - ret Json.923; - - case 116: - let Json.924 : Int1 = CallByName Bool.2; - ret Json.924; - - default: - let Json.925 : Int1 = CallByName Bool.1; - ret Json.925; - - -procedure Json.62 (Json.552): - switch Json.552: - case 34: - let Json.895 : U8 = 34i64; - ret Json.895; - - case 92: - let Json.896 : U8 = 92i64; - ret Json.896; - - case 47: - let Json.897 : U8 = 47i64; - ret Json.897; - - case 98: - let Json.898 : U8 = 8i64; - ret Json.898; - - case 102: - let Json.899 : U8 = 12i64; - ret Json.899; - - case 110: - let Json.900 : U8 = 10i64; - ret Json.900; - - case 114: - let Json.901 : U8 = 13i64; - ret Json.901; - - case 116: - let Json.902 : U8 = 9i64; - ret Json.902; - - default: - ret Json.552; - - -procedure Json.63 (Json.553): - let Json.1056 : U8 = 48i64; - let Json.1053 : Int1 = CallByName Num.25 Json.553 Json.1056; - let Json.1055 : U8 = 57i64; - let Json.1054 : Int1 = CallByName Num.23 Json.553 Json.1055; - let Json.1041 : Int1 = CallByName Bool.3 Json.1053 Json.1054; - let Json.1052 : U8 = 97i64; - let Json.1049 : Int1 = CallByName Num.25 Json.553 Json.1052; - let Json.1051 : U8 = 102i64; - let Json.1050 : Int1 = CallByName Num.23 Json.553 Json.1051; - let Json.1043 : Int1 = CallByName Bool.3 Json.1049 Json.1050; - let Json.1048 : U8 = 65i64; - let Json.1045 : Int1 = CallByName Num.25 Json.553 Json.1048; - let Json.1047 : U8 = 70i64; - let Json.1046 : Int1 = CallByName Num.23 Json.553 Json.1047; - let Json.1044 : Int1 = CallByName Bool.3 Json.1045 Json.1046; - let Json.1042 : Int1 = CallByName Bool.4 Json.1043 Json.1044; - let Json.1040 : Int1 = CallByName Bool.4 Json.1041 Json.1042; - ret Json.1040; - -procedure Json.64 (Json.554): - let Json.874 : U8 = 48i64; - let Json.871 : Int1 = CallByName Num.25 Json.554 Json.874; - let Json.873 : U8 = 57i64; - let Json.872 : Int1 = CallByName Num.23 Json.554 Json.873; - let Json.868 : Int1 = CallByName Bool.3 Json.871 Json.872; - if Json.868 then - let Json.870 : U8 = 48i64; - let Json.869 : U8 = CallByName Num.20 Json.554 Json.870; - ret Json.869; - else - let Json.867 : U8 = 97i64; - let Json.864 : Int1 = CallByName Num.25 Json.554 Json.867; - let Json.866 : U8 = 102i64; - let Json.865 : Int1 = CallByName Num.23 Json.554 Json.866; - let Json.859 : Int1 = CallByName Bool.3 Json.864 Json.865; - if Json.859 then - let Json.863 : U8 = 97i64; - let Json.861 : U8 = CallByName Num.20 Json.554 Json.863; - let Json.862 : U8 = 10i64; - let Json.860 : U8 = CallByName Num.19 Json.861 Json.862; - ret Json.860; - else - let Json.858 : U8 = 65i64; - let Json.855 : Int1 = CallByName Num.25 Json.554 Json.858; - let Json.857 : U8 = 70i64; - let Json.856 : Int1 = CallByName Num.23 Json.554 Json.857; - let Json.850 : Int1 = CallByName Bool.3 Json.855 Json.856; - if Json.850 then - let Json.854 : U8 = 65i64; - let Json.852 : U8 = CallByName Num.20 Json.554 Json.854; - let Json.853 : U8 = 10i64; - let Json.851 : U8 = CallByName Num.19 Json.852 Json.853; - ret Json.851; - else - let Json.849 : Str = "got an invalid hex char"; - Crash Json.849 - -procedure Json.65 (Json.555, Json.556): - let Json.840 : U8 = 4i64; - let Json.839 : U8 = CallByName Num.72 Json.555 Json.840; - let Json.838 : U8 = CallByName Num.71 Json.839 Json.556; - ret Json.838; - -procedure Json.66 (Json.557, Json.558, Json.559, Json.560): - let Json.561 : U8 = CallByName Json.64 Json.557; - let Json.562 : U8 = CallByName Json.64 Json.558; - let Json.563 : U8 = CallByName Json.64 Json.559; - let Json.564 : U8 = CallByName Json.64 Json.560; - let Json.847 : U8 = 0i64; - let Json.844 : Int1 = CallByName Bool.11 Json.561 Json.847; - let Json.846 : U8 = 0i64; - let Json.845 : Int1 = CallByName Bool.11 Json.562 Json.846; - let Json.841 : Int1 = CallByName Bool.3 Json.844 Json.845; - if Json.841 then - let Json.843 : U8 = CallByName Json.65 Json.563 Json.564; - let Json.842 : List U8 = Array [Json.843]; - ret Json.842; - else - let Json.836 : U8 = CallByName Json.65 Json.561 Json.562; - let Json.837 : U8 = CallByName Json.65 Json.563 Json.564; - let Json.835 : List U8 = Array [Json.836, Json.837]; - ret Json.835; - -procedure Json.67 (): - let Json.880 : U8 = 102i64; - let Json.881 : U8 = 102i64; - let Json.882 : U8 = 100i64; - let Json.883 : U8 = 100i64; - let Json.879 : List U8 = CallByName Json.66 Json.880 Json.881 Json.882 Json.883; +procedure Json.55 (): + let Json.880 : {} = Struct {}; + let Json.879 : {} = CallByName Decode.24 Json.880; ret Json.879; -procedure Json.68 (Json.1073): - joinpoint Json.830 Json.812: - let Json.565 : List U8 = StructAtIndex 0 Json.812; - inc Json.565; - let Json.566 : List U8 = StructAtIndex 1 Json.812; - inc Json.566; - dec Json.812; - let Json.948 : U64 = 0i64; - let Json.567 : [C {}, C U8] = CallByName List.2 Json.565 Json.948; - let Json.947 : U64 = 1i64; - let Json.568 : [C {}, C U8] = CallByName List.2 Json.565 Json.947; - let Json.946 : U64 = 2i64; - inc Json.565; - let Json.569 : List U8 = CallByName List.29 Json.565 Json.946; - let Json.945 : U64 = 6i64; - inc Json.565; - let Json.570 : List U8 = CallByName List.29 Json.565 Json.945; - let Json.831 : {[C {}, C U8], [C {}, C U8]} = Struct {Json.567, Json.568}; - joinpoint Json.910: - let Json.909 : [C {}, C U8] = StructAtIndex 0 Json.831; - let Json.581 : U8 = UnionAtIndex (Id 1) (Index 0) Json.909; - let Json.906 : List U8 = CallByName List.38 Json.565; - let Json.907 : List U8 = CallByName List.4 Json.566 Json.581; - let Json.905 : {List U8, List U8} = Struct {Json.906, Json.907}; - jump Json.830 Json.905; - in - let Json.941 : [C {}, C U8] = StructAtIndex 0 Json.831; - let Json.942 : U8 = 1i64; - let Json.943 : U8 = GetTagId Json.941; - let Json.944 : Int1 = lowlevel Eq Json.942 Json.943; - if Json.944 then - let Json.937 : [C {}, C U8] = StructAtIndex 1 Json.831; - let Json.938 : U8 = 1i64; - let Json.939 : U8 = GetTagId Json.937; - let Json.940 : Int1 = lowlevel Eq Json.938 Json.939; - if Json.940 then - let Json.936 : [C {}, C U8] = StructAtIndex 0 Json.831; - let Json.572 : U8 = UnionAtIndex (Id 1) (Index 0) Json.936; - let Json.935 : [C {}, C U8] = StructAtIndex 1 Json.831; - let Json.573 : U8 = UnionAtIndex (Id 1) (Index 0) Json.935; - joinpoint Json.929 Json.911: - if Json.911 then - dec Json.565; - let Json.888 : U64 = lowlevel ListLen Json.569; - let Json.889 : U64 = 4i64; - let Json.890 : Int1 = lowlevel NumGte Json.888 Json.889; - if Json.890 then - let Json.887 : U64 = 0i64; - let Json.574 : U8 = lowlevel ListGetUnsafe Json.569 Json.887; - let Json.886 : U64 = 1i64; - let Json.575 : U8 = lowlevel ListGetUnsafe Json.569 Json.886; - let Json.885 : U64 = 2i64; - let Json.576 : U8 = lowlevel ListGetUnsafe Json.569 Json.885; - let Json.884 : U64 = 3i64; - let Json.577 : U8 = lowlevel ListGetUnsafe Json.569 Json.884; - dec Json.569; - let Json.578 : List U8 = CallByName Json.66 Json.574 Json.575 Json.576 Json.577; - let Json.834 : List U8 = CallByName List.8 Json.566 Json.578; - let Json.833 : {List U8, List U8} = Struct {Json.570, Json.834}; - jump Json.830 Json.833; - else - dec Json.570; - let Json.878 : List U8 = CallByName Json.67; - let Json.877 : List U8 = CallByName List.8 Json.566 Json.878; - let Json.876 : {List U8, List U8} = Struct {Json.569, Json.877}; - jump Json.830 Json.876; - else - dec Json.570; - let Json.928 : [C {}, C U8] = StructAtIndex 0 Json.831; - let Json.579 : U8 = UnionAtIndex (Id 1) (Index 0) Json.928; - let Json.927 : [C {}, C U8] = StructAtIndex 1 Json.831; - let Json.580 : U8 = UnionAtIndex (Id 1) (Index 0) Json.927; - joinpoint Json.913 Json.912: - if Json.912 then - dec Json.565; - let Json.894 : U8 = CallByName Json.62 Json.580; - let Json.893 : List U8 = CallByName List.4 Json.566 Json.894; - let Json.892 : {List U8, List U8} = Struct {Json.569, Json.893}; - jump Json.830 Json.892; - else - dec Json.569; - jump Json.910; - in - let Json.926 : U8 = 92i64; - let Json.915 : Int1 = CallByName Bool.11 Json.579 Json.926; - let Json.916 : Int1 = CallByName Json.61 Json.580; - let Json.914 : Int1 = CallByName Bool.3 Json.915 Json.916; - jump Json.913 Json.914; - in - let Json.934 : U8 = 92i64; - let Json.931 : Int1 = CallByName Bool.11 Json.572 Json.934; - let Json.933 : U8 = 117i64; - let Json.932 : Int1 = CallByName Bool.11 Json.573 Json.933; - let Json.930 : Int1 = CallByName Bool.3 Json.931 Json.932; - jump Json.929 Json.930; - else - dec Json.570; - dec Json.569; - jump Json.910; - else - dec Json.570; - dec Json.569; - let Json.908 : {List U8, List U8} = Struct {Json.565, Json.566}; - ret Json.908; +procedure Json.56 (Json.462): + let Json.1030 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(4) ; + let Json.1031 : {} = Struct {}; + let Json.1019 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = CallByName List.26 Json.462 Json.1030 Json.1031; + let Json.1027 : U8 = 2i64; + let Json.1028 : U8 = GetTagId Json.1019; + let Json.1029 : Int1 = lowlevel Eq Json.1027 Json.1028; + if Json.1029 then + let Json.464 : U64 = UnionAtIndex (Id 2) (Index 0) Json.1019; + inc Json.462; + let Json.1021 : List U8 = CallByName List.29 Json.462 Json.464; + let Json.1024 : U64 = 0i64; + let Json.1023 : {U64, U64} = Struct {Json.464, Json.1024}; + let Json.1022 : List U8 = CallByName List.49 Json.462 Json.1023; + let Json.1020 : {List U8, List U8} = Struct {Json.1021, Json.1022}; + ret Json.1020; + else + let Json.1026 : List U8 = Array []; + let Json.1025 : {List U8, List U8} = Struct {Json.462, Json.1026}; + ret Json.1025; + +procedure Json.57 (Json.465, Json.466): + let Json.1032 : {[C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], U8} = Struct {Json.465, Json.466}; + joinpoint Json.1075: + let Json.1073 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(3) ; + let Json.1072 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(0) Json.1073; + ret Json.1072; in - jump Json.830 Json.1073; + let Json.1076 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.1032; + let Json.1134 : U8 = GetTagId Json.1076; + switch Json.1134: + case 4: + let Json.467 : U8 = StructAtIndex 1 Json.1032; + joinpoint Json.1078 Json.1077: + if Json.1077 then + let Json.1035 : U64 = 1i64; + let Json.1034 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(0) Json.1035; + let Json.1033 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.1034; + ret Json.1033; + else + jump Json.1075; + in + let Json.1080 : U8 = 34i64; + let Json.1079 : Int1 = CallByName Bool.11 Json.467 Json.1080; + jump Json.1078 Json.1079; + + case 0: + let Json.1091 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.1032; + let Json.470 : U64 = UnionAtIndex (Id 0) (Index 0) Json.1091; + let Json.471 : U8 = StructAtIndex 1 Json.1032; + joinpoint Json.1088 Json.1082: + if Json.1082 then + let Json.1039 : U64 = 1i64; + let Json.1038 : U64 = CallByName Num.19 Json.470 Json.1039; + let Json.1037 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(2) Json.1038; + let Json.1036 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(0) Json.1037; + ret Json.1036; + else + let Json.1087 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.1032; + let Json.474 : U64 = UnionAtIndex (Id 0) (Index 0) Json.1087; + let Json.475 : U8 = StructAtIndex 1 Json.1032; + joinpoint Json.1084 Json.1083: + if Json.1083 then + let Json.1043 : U64 = 1i64; + let Json.1042 : U64 = CallByName Num.19 Json.474 Json.1043; + let Json.1041 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(1) Json.1042; + let Json.1040 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.1041; + ret Json.1040; + else + let Json.1074 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.1032; + let Json.478 : U64 = UnionAtIndex (Id 0) (Index 0) Json.1074; + let Json.1047 : U64 = 1i64; + let Json.1046 : U64 = CallByName Num.19 Json.478 Json.1047; + let Json.1045 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(0) Json.1046; + let Json.1044 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.1045; + ret Json.1044; + in + let Json.1086 : U8 = 92i64; + let Json.1085 : Int1 = CallByName Bool.11 Json.475 Json.1086; + jump Json.1084 Json.1085; + in + let Json.1090 : U8 = 34i64; + let Json.1089 : Int1 = CallByName Bool.11 Json.471 Json.1090; + jump Json.1088 Json.1089; + + case 1: + let Json.1100 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.1032; + let Json.481 : U64 = UnionAtIndex (Id 1) (Index 0) Json.1100; + let Json.482 : U8 = StructAtIndex 1 Json.1032; + joinpoint Json.1098 Json.1092: + if Json.1092 then + let Json.1051 : U64 = 1i64; + let Json.1050 : U64 = CallByName Num.19 Json.481 Json.1051; + let Json.1049 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(0) Json.1050; + let Json.1048 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.1049; + ret Json.1048; + else + let Json.1097 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.1032; + let Json.485 : U64 = UnionAtIndex (Id 1) (Index 0) Json.1097; + let Json.486 : U8 = StructAtIndex 1 Json.1032; + joinpoint Json.1094 Json.1093: + if Json.1093 then + let Json.1055 : U64 = 1i64; + let Json.1054 : U64 = CallByName Num.19 Json.485 Json.1055; + let Json.1053 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(5) Json.1054; + let Json.1052 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.1053; + ret Json.1052; + else + jump Json.1075; + in + let Json.1096 : U8 = 117i64; + let Json.1095 : Int1 = CallByName Bool.11 Json.486 Json.1096; + jump Json.1094 Json.1095; + in + let Json.1099 : Int1 = CallByName Json.58 Json.482; + jump Json.1098 Json.1099; + + case 5: + let Json.1121 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.1032; + let Json.489 : U64 = UnionAtIndex (Id 5) (Index 0) Json.1121; + let Json.490 : U8 = StructAtIndex 1 Json.1032; + joinpoint Json.1102 Json.1101: + if Json.1101 then + let Json.1059 : U64 = 1i64; + let Json.1058 : U64 = CallByName Num.19 Json.489 Json.1059; + let Json.1057 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(6) Json.1058; + let Json.1056 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.1057; + ret Json.1056; + else + jump Json.1075; + in + let Json.1103 : Int1 = CallByName Json.60 Json.490; + jump Json.1102 Json.1103; + + case 6: + let Json.1125 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.1032; + let Json.493 : U64 = UnionAtIndex (Id 6) (Index 0) Json.1125; + let Json.494 : U8 = StructAtIndex 1 Json.1032; + joinpoint Json.1123 Json.1122: + if Json.1122 then + let Json.1063 : U64 = 1i64; + let Json.1062 : U64 = CallByName Num.19 Json.493 Json.1063; + let Json.1061 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(7) Json.1062; + let Json.1060 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.1061; + ret Json.1060; + else + jump Json.1075; + in + let Json.1124 : Int1 = CallByName Json.60 Json.494; + jump Json.1123 Json.1124; + + case 7: + let Json.1129 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.1032; + let Json.497 : U64 = UnionAtIndex (Id 7) (Index 0) Json.1129; + let Json.498 : U8 = StructAtIndex 1 Json.1032; + joinpoint Json.1127 Json.1126: + if Json.1126 then + let Json.1067 : U64 = 1i64; + let Json.1066 : U64 = CallByName Num.19 Json.497 Json.1067; + let Json.1065 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(8) Json.1066; + let Json.1064 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.1065; + ret Json.1064; + else + jump Json.1075; + in + let Json.1128 : Int1 = CallByName Json.60 Json.498; + jump Json.1127 Json.1128; + + case 8: + let Json.1133 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.1032; + let Json.501 : U64 = UnionAtIndex (Id 8) (Index 0) Json.1133; + let Json.502 : U8 = StructAtIndex 1 Json.1032; + joinpoint Json.1131 Json.1130: + if Json.1130 then + let Json.1071 : U64 = 1i64; + let Json.1070 : U64 = CallByName Num.19 Json.501 Json.1071; + let Json.1069 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(0) Json.1070; + let Json.1068 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.1069; + ret Json.1068; + else + jump Json.1075; + in + let Json.1132 : Int1 = CallByName Json.60 Json.502; + jump Json.1131 Json.1132; + + default: + jump Json.1075; + + +procedure Json.58 (Json.507): + switch Json.507: + case 34: + let Json.981 : Int1 = CallByName Bool.2; + ret Json.981; + + case 92: + let Json.982 : Int1 = CallByName Bool.2; + ret Json.982; + + case 47: + let Json.983 : Int1 = CallByName Bool.2; + ret Json.983; + + case 98: + let Json.984 : Int1 = CallByName Bool.2; + ret Json.984; + + case 102: + let Json.985 : Int1 = CallByName Bool.2; + ret Json.985; + + case 110: + let Json.986 : Int1 = CallByName Bool.2; + ret Json.986; + + case 114: + let Json.987 : Int1 = CallByName Bool.2; + ret Json.987; + + case 116: + let Json.988 : Int1 = CallByName Bool.2; + ret Json.988; + + default: + let Json.989 : Int1 = CallByName Bool.1; + ret Json.989; + + +procedure Json.59 (Json.508): + switch Json.508: + case 34: + let Json.959 : U8 = 34i64; + ret Json.959; + + case 92: + let Json.960 : U8 = 92i64; + ret Json.960; + + case 47: + let Json.961 : U8 = 47i64; + ret Json.961; + + case 98: + let Json.962 : U8 = 8i64; + ret Json.962; + + case 102: + let Json.963 : U8 = 12i64; + ret Json.963; + + case 110: + let Json.964 : U8 = 10i64; + ret Json.964; + + case 114: + let Json.965 : U8 = 13i64; + ret Json.965; + + case 116: + let Json.966 : U8 = 9i64; + ret Json.966; + + default: + ret Json.508; + + +procedure Json.60 (Json.509): + let Json.1120 : U8 = 48i64; + let Json.1117 : Int1 = CallByName Num.25 Json.509 Json.1120; + let Json.1119 : U8 = 57i64; + let Json.1118 : Int1 = CallByName Num.23 Json.509 Json.1119; + let Json.1105 : Int1 = CallByName Bool.3 Json.1117 Json.1118; + let Json.1116 : U8 = 97i64; + let Json.1113 : Int1 = CallByName Num.25 Json.509 Json.1116; + let Json.1115 : U8 = 102i64; + let Json.1114 : Int1 = CallByName Num.23 Json.509 Json.1115; + let Json.1107 : Int1 = CallByName Bool.3 Json.1113 Json.1114; + let Json.1112 : U8 = 65i64; + let Json.1109 : Int1 = CallByName Num.25 Json.509 Json.1112; + let Json.1111 : U8 = 70i64; + let Json.1110 : Int1 = CallByName Num.23 Json.509 Json.1111; + let Json.1108 : Int1 = CallByName Bool.3 Json.1109 Json.1110; + let Json.1106 : Int1 = CallByName Bool.4 Json.1107 Json.1108; + let Json.1104 : Int1 = CallByName Bool.4 Json.1105 Json.1106; + ret Json.1104; + +procedure Json.61 (Json.510): + let Json.938 : U8 = 48i64; + let Json.935 : Int1 = CallByName Num.25 Json.510 Json.938; + let Json.937 : U8 = 57i64; + let Json.936 : Int1 = CallByName Num.23 Json.510 Json.937; + let Json.932 : Int1 = CallByName Bool.3 Json.935 Json.936; + if Json.932 then + let Json.934 : U8 = 48i64; + let Json.933 : U8 = CallByName Num.20 Json.510 Json.934; + ret Json.933; + else + let Json.931 : U8 = 97i64; + let Json.928 : Int1 = CallByName Num.25 Json.510 Json.931; + let Json.930 : U8 = 102i64; + let Json.929 : Int1 = CallByName Num.23 Json.510 Json.930; + let Json.923 : Int1 = CallByName Bool.3 Json.928 Json.929; + if Json.923 then + let Json.927 : U8 = 97i64; + let Json.925 : U8 = CallByName Num.20 Json.510 Json.927; + let Json.926 : U8 = 10i64; + let Json.924 : U8 = CallByName Num.19 Json.925 Json.926; + ret Json.924; + else + let Json.922 : U8 = 65i64; + let Json.919 : Int1 = CallByName Num.25 Json.510 Json.922; + let Json.921 : U8 = 70i64; + let Json.920 : Int1 = CallByName Num.23 Json.510 Json.921; + let Json.914 : Int1 = CallByName Bool.3 Json.919 Json.920; + if Json.914 then + let Json.918 : U8 = 65i64; + let Json.916 : U8 = CallByName Num.20 Json.510 Json.918; + let Json.917 : U8 = 10i64; + let Json.915 : U8 = CallByName Num.19 Json.916 Json.917; + ret Json.915; + else + let Json.913 : Str = "got an invalid hex char"; + Crash Json.913 + +procedure Json.62 (Json.511, Json.512): + let Json.904 : U8 = 4i64; + let Json.903 : U8 = CallByName Num.72 Json.511 Json.904; + let Json.902 : U8 = CallByName Num.71 Json.903 Json.512; + ret Json.902; + +procedure Json.63 (Json.513, Json.514, Json.515, Json.516): + let Json.517 : U8 = CallByName Json.61 Json.513; + let Json.518 : U8 = CallByName Json.61 Json.514; + let Json.519 : U8 = CallByName Json.61 Json.515; + let Json.520 : U8 = CallByName Json.61 Json.516; + let Json.911 : U8 = 0i64; + let Json.908 : Int1 = CallByName Bool.11 Json.517 Json.911; + let Json.910 : U8 = 0i64; + let Json.909 : Int1 = CallByName Bool.11 Json.518 Json.910; + let Json.905 : Int1 = CallByName Bool.3 Json.908 Json.909; + if Json.905 then + let Json.907 : U8 = CallByName Json.62 Json.519 Json.520; + let Json.906 : List U8 = Array [Json.907]; + ret Json.906; + else + let Json.900 : U8 = CallByName Json.62 Json.517 Json.518; + let Json.901 : U8 = CallByName Json.62 Json.519 Json.520; + let Json.899 : List U8 = Array [Json.900, Json.901]; + ret Json.899; + +procedure Json.64 (): + let Json.944 : U8 = 102i64; + let Json.945 : U8 = 102i64; + let Json.946 : U8 = 100i64; + let Json.947 : U8 = 100i64; + let Json.943 : List U8 = CallByName Json.63 Json.944 Json.945 Json.946 Json.947; + ret Json.943; + +procedure Json.65 (Json.1137): + joinpoint Json.894 Json.876: + let Json.521 : List U8 = StructAtIndex 0 Json.876; + inc Json.521; + let Json.522 : List U8 = StructAtIndex 1 Json.876; + inc Json.522; + dec Json.876; + let Json.1012 : U64 = 0i64; + let Json.523 : [C {}, C U8] = CallByName List.2 Json.521 Json.1012; + let Json.1011 : U64 = 1i64; + let Json.524 : [C {}, C U8] = CallByName List.2 Json.521 Json.1011; + let Json.1010 : U64 = 2i64; + inc Json.521; + let Json.525 : List U8 = CallByName List.29 Json.521 Json.1010; + let Json.1009 : U64 = 6i64; + inc Json.521; + let Json.526 : List U8 = CallByName List.29 Json.521 Json.1009; + let Json.895 : {[C {}, C U8], [C {}, C U8]} = Struct {Json.523, Json.524}; + joinpoint Json.974: + let Json.973 : [C {}, C U8] = StructAtIndex 0 Json.895; + let Json.537 : U8 = UnionAtIndex (Id 1) (Index 0) Json.973; + let Json.970 : List U8 = CallByName List.38 Json.521; + let Json.971 : List U8 = CallByName List.4 Json.522 Json.537; + let Json.969 : {List U8, List U8} = Struct {Json.970, Json.971}; + jump Json.894 Json.969; + in + let Json.1005 : [C {}, C U8] = StructAtIndex 0 Json.895; + let Json.1006 : U8 = 1i64; + let Json.1007 : U8 = GetTagId Json.1005; + let Json.1008 : Int1 = lowlevel Eq Json.1006 Json.1007; + if Json.1008 then + let Json.1001 : [C {}, C U8] = StructAtIndex 1 Json.895; + let Json.1002 : U8 = 1i64; + let Json.1003 : U8 = GetTagId Json.1001; + let Json.1004 : Int1 = lowlevel Eq Json.1002 Json.1003; + if Json.1004 then + let Json.1000 : [C {}, C U8] = StructAtIndex 0 Json.895; + let Json.528 : U8 = UnionAtIndex (Id 1) (Index 0) Json.1000; + let Json.999 : [C {}, C U8] = StructAtIndex 1 Json.895; + let Json.529 : U8 = UnionAtIndex (Id 1) (Index 0) Json.999; + joinpoint Json.993 Json.975: + if Json.975 then + dec Json.521; + let Json.952 : U64 = lowlevel ListLen Json.525; + let Json.953 : U64 = 4i64; + let Json.954 : Int1 = lowlevel NumGte Json.952 Json.953; + if Json.954 then + let Json.951 : U64 = 0i64; + let Json.530 : U8 = lowlevel ListGetUnsafe Json.525 Json.951; + let Json.950 : U64 = 1i64; + let Json.531 : U8 = lowlevel ListGetUnsafe Json.525 Json.950; + let Json.949 : U64 = 2i64; + let Json.532 : U8 = lowlevel ListGetUnsafe Json.525 Json.949; + let Json.948 : U64 = 3i64; + let Json.533 : U8 = lowlevel ListGetUnsafe Json.525 Json.948; + dec Json.525; + let Json.534 : List U8 = CallByName Json.63 Json.530 Json.531 Json.532 Json.533; + let Json.898 : List U8 = CallByName List.8 Json.522 Json.534; + let Json.897 : {List U8, List U8} = Struct {Json.526, Json.898}; + jump Json.894 Json.897; + else + dec Json.526; + let Json.942 : List U8 = CallByName Json.64; + let Json.941 : List U8 = CallByName List.8 Json.522 Json.942; + let Json.940 : {List U8, List U8} = Struct {Json.525, Json.941}; + jump Json.894 Json.940; + else + dec Json.526; + let Json.992 : [C {}, C U8] = StructAtIndex 0 Json.895; + let Json.535 : U8 = UnionAtIndex (Id 1) (Index 0) Json.992; + let Json.991 : [C {}, C U8] = StructAtIndex 1 Json.895; + let Json.536 : U8 = UnionAtIndex (Id 1) (Index 0) Json.991; + joinpoint Json.977 Json.976: + if Json.976 then + dec Json.521; + let Json.958 : U8 = CallByName Json.59 Json.536; + let Json.957 : List U8 = CallByName List.4 Json.522 Json.958; + let Json.956 : {List U8, List U8} = Struct {Json.525, Json.957}; + jump Json.894 Json.956; + else + dec Json.525; + jump Json.974; + in + let Json.990 : U8 = 92i64; + let Json.979 : Int1 = CallByName Bool.11 Json.535 Json.990; + let Json.980 : Int1 = CallByName Json.58 Json.536; + let Json.978 : Int1 = CallByName Bool.3 Json.979 Json.980; + jump Json.977 Json.978; + in + let Json.998 : U8 = 92i64; + let Json.995 : Int1 = CallByName Bool.11 Json.528 Json.998; + let Json.997 : U8 = 117i64; + let Json.996 : Int1 = CallByName Bool.11 Json.529 Json.997; + let Json.994 : Int1 = CallByName Bool.3 Json.995 Json.996; + jump Json.993 Json.994; + else + dec Json.526; + dec Json.525; + jump Json.974; + else + dec Json.526; + dec Json.525; + let Json.972 : {List U8, List U8} = Struct {Json.521, Json.522}; + ret Json.972; + in + jump Json.894 Json.1137; procedure List.1 (List.95): let List.552 : U64 = CallByName List.6 List.95; @@ -697,7 +697,7 @@ procedure List.80 (List.612, List.613, List.614, List.615, List.616): let List.572 : Int1 = CallByName Num.22 List.436 List.437; if List.572 then let List.581 : U8 = CallByName List.66 List.433 List.436; - let List.573 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = CallByName Json.60 List.434 List.581; + let List.573 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = CallByName Json.57 List.434 List.581; let List.578 : U8 = 1i64; let List.579 : U8 = GetTagId List.573; let List.580 : Int1 = lowlevel Eq List.578 List.579; diff --git a/crates/compiler/test_mono/generated/issue_4772_weakened_monomorphic_destructure.txt b/crates/compiler/test_mono/generated/issue_4772_weakened_monomorphic_destructure.txt index 956b149df3..803fe425db 100644 --- a/crates/compiler/test_mono/generated/issue_4772_weakened_monomorphic_destructure.txt +++ b/crates/compiler/test_mono/generated/issue_4772_weakened_monomorphic_destructure.txt @@ -32,532 +32,532 @@ procedure Decode.24 (Decode.101): ret Decode.101; procedure Decode.25 (Decode.102, Decode.121, Decode.104): - let Decode.124 : {List U8, [C {}, C Str]} = CallByName Json.491 Decode.102 Decode.104; + let Decode.124 : {List U8, [C {}, C Str]} = CallByName Json.448 Decode.102 Decode.104; ret Decode.124; procedure Decode.26 (Decode.105, Decode.106): - let Decode.123 : {} = CallByName Json.58; + let Decode.123 : {} = CallByName Json.55; let Decode.122 : {List U8, [C {}, C Str]} = CallByName Decode.25 Decode.105 Decode.123 Decode.106; ret Decode.122; procedure Json.2 (): - let Json.814 : {} = Struct {}; - ret Json.814; + let Json.878 : {} = Struct {}; + ret Json.878; -procedure Json.491 (Json.492, Json.817): - inc Json.492; - let Json.954 : {List U8, List U8} = CallByName Json.59 Json.492; - let Json.495 : List U8 = StructAtIndex 0 Json.954; - inc Json.495; - let Json.494 : List U8 = StructAtIndex 1 Json.954; - inc Json.494; - dec Json.954; - let Json.950 : Int1 = CallByName List.1 Json.494; - if Json.950 then - dec Json.495; - dec Json.494; - let Json.953 : {} = Struct {}; - let Json.952 : [C {}, C Str] = TagId(0) Json.953; - let Json.951 : {List U8, [C {}, C Str]} = Struct {Json.492, Json.952}; - ret Json.951; +procedure Json.448 (Json.449, Json.881): + inc Json.449; + let Json.1018 : {List U8, List U8} = CallByName Json.56 Json.449; + let Json.452 : List U8 = StructAtIndex 0 Json.1018; + inc Json.452; + let Json.451 : List U8 = StructAtIndex 1 Json.1018; + inc Json.451; + dec Json.1018; + let Json.1014 : Int1 = CallByName List.1 Json.451; + if Json.1014 then + dec Json.452; + dec Json.451; + let Json.1017 : {} = Struct {}; + let Json.1016 : [C {}, C Str] = TagId(0) Json.1017; + let Json.1015 : {List U8, [C {}, C Str]} = Struct {Json.449, Json.1016}; + ret Json.1015; else - let Json.949 : List U8 = Array []; - let Json.829 : {List U8, List U8} = Struct {Json.494, Json.949}; - let Json.828 : {List U8, List U8} = CallByName Json.68 Json.829; - let Json.499 : List U8 = StructAtIndex 1 Json.828; - inc Json.499; - dec Json.828; - let Json.827 : List U8 = CallByName List.38 Json.499; - let Json.826 : List U8 = CallByName List.32 Json.827; - let Json.500 : [C {U64, U8}, C Str] = CallByName Str.9 Json.826; - let Json.823 : U8 = 1i64; - let Json.824 : U8 = GetTagId Json.500; - let Json.825 : Int1 = lowlevel Eq Json.823 Json.824; - if Json.825 then - dec Json.492; - let Json.501 : Str = UnionAtIndex (Id 1) (Index 0) Json.500; - inc Json.501; - dec Json.500; - let Json.819 : [C {}, C Str] = TagId(1) Json.501; - let Json.818 : {List U8, [C {}, C Str]} = Struct {Json.495, Json.819}; - ret Json.818; + let Json.1013 : List U8 = Array []; + let Json.893 : {List U8, List U8} = Struct {Json.451, Json.1013}; + let Json.892 : {List U8, List U8} = CallByName Json.65 Json.893; + let Json.456 : List U8 = StructAtIndex 1 Json.892; + inc Json.456; + dec Json.892; + let Json.891 : List U8 = CallByName List.38 Json.456; + let Json.890 : List U8 = CallByName List.32 Json.891; + let Json.457 : [C {U64, U8}, C Str] = CallByName Str.9 Json.890; + let Json.887 : U8 = 1i64; + let Json.888 : U8 = GetTagId Json.457; + let Json.889 : Int1 = lowlevel Eq Json.887 Json.888; + if Json.889 then + dec Json.449; + let Json.458 : Str = UnionAtIndex (Id 1) (Index 0) Json.457; + inc Json.458; + dec Json.457; + let Json.883 : [C {}, C Str] = TagId(1) Json.458; + let Json.882 : {List U8, [C {}, C Str]} = Struct {Json.452, Json.883}; + ret Json.882; else - dec Json.495; - dec Json.500; - let Json.822 : {} = Struct {}; - let Json.821 : [C {}, C Str] = TagId(0) Json.822; - let Json.820 : {List U8, [C {}, C Str]} = Struct {Json.492, Json.821}; - ret Json.820; + dec Json.457; + dec Json.452; + let Json.886 : {} = Struct {}; + let Json.885 : [C {}, C Str] = TagId(0) Json.886; + let Json.884 : {List U8, [C {}, C Str]} = Struct {Json.449, Json.885}; + ret Json.884; -procedure Json.58 (): - let Json.816 : {} = Struct {}; - let Json.815 : {} = CallByName Decode.24 Json.816; - ret Json.815; - -procedure Json.59 (Json.505): - let Json.966 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(4) ; - let Json.967 : {} = Struct {}; - let Json.955 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = CallByName List.26 Json.505 Json.966 Json.967; - let Json.963 : U8 = 2i64; - let Json.964 : U8 = GetTagId Json.955; - let Json.965 : Int1 = lowlevel Eq Json.963 Json.964; - if Json.965 then - let Json.507 : U64 = UnionAtIndex (Id 2) (Index 0) Json.955; - inc Json.505; - let Json.957 : List U8 = CallByName List.29 Json.505 Json.507; - let Json.960 : U64 = 0i64; - let Json.959 : {U64, U64} = Struct {Json.507, Json.960}; - let Json.958 : List U8 = CallByName List.49 Json.505 Json.959; - let Json.956 : {List U8, List U8} = Struct {Json.957, Json.958}; - ret Json.956; - else - let Json.962 : List U8 = Array []; - let Json.961 : {List U8, List U8} = Struct {Json.505, Json.962}; - ret Json.961; - -procedure Json.60 (Json.508, Json.509): - let Json.968 : {[C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], U8} = Struct {Json.508, Json.509}; - joinpoint Json.1011: - let Json.1009 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(3) ; - let Json.1008 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(0) Json.1009; - ret Json.1008; - in - let Json.1012 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.968; - let Json.1070 : U8 = GetTagId Json.1012; - switch Json.1070: - case 4: - let Json.511 : U8 = StructAtIndex 1 Json.968; - joinpoint Json.1014 Json.1013: - if Json.1013 then - let Json.971 : U64 = 1i64; - let Json.970 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(0) Json.971; - let Json.969 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.970; - ret Json.969; - else - jump Json.1011; - in - let Json.1016 : U8 = 34i64; - let Json.1015 : Int1 = CallByName Bool.11 Json.511 Json.1016; - jump Json.1014 Json.1015; - - case 0: - let Json.1027 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.968; - let Json.514 : U64 = UnionAtIndex (Id 0) (Index 0) Json.1027; - let Json.515 : U8 = StructAtIndex 1 Json.968; - joinpoint Json.1024 Json.1018: - if Json.1018 then - let Json.975 : U64 = 1i64; - let Json.974 : U64 = CallByName Num.19 Json.514 Json.975; - let Json.973 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(2) Json.974; - let Json.972 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(0) Json.973; - ret Json.972; - else - let Json.1023 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.968; - let Json.518 : U64 = UnionAtIndex (Id 0) (Index 0) Json.1023; - let Json.519 : U8 = StructAtIndex 1 Json.968; - joinpoint Json.1020 Json.1019: - if Json.1019 then - let Json.979 : U64 = 1i64; - let Json.978 : U64 = CallByName Num.19 Json.518 Json.979; - let Json.977 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(1) Json.978; - let Json.976 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.977; - ret Json.976; - else - let Json.1010 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.968; - let Json.522 : U64 = UnionAtIndex (Id 0) (Index 0) Json.1010; - let Json.983 : U64 = 1i64; - let Json.982 : U64 = CallByName Num.19 Json.522 Json.983; - let Json.981 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(0) Json.982; - let Json.980 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.981; - ret Json.980; - in - let Json.1022 : U8 = 92i64; - let Json.1021 : Int1 = CallByName Bool.11 Json.519 Json.1022; - jump Json.1020 Json.1021; - in - let Json.1026 : U8 = 34i64; - let Json.1025 : Int1 = CallByName Bool.11 Json.515 Json.1026; - jump Json.1024 Json.1025; - - case 1: - let Json.1036 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.968; - let Json.525 : U64 = UnionAtIndex (Id 1) (Index 0) Json.1036; - let Json.526 : U8 = StructAtIndex 1 Json.968; - joinpoint Json.1034 Json.1028: - if Json.1028 then - let Json.987 : U64 = 1i64; - let Json.986 : U64 = CallByName Num.19 Json.525 Json.987; - let Json.985 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(0) Json.986; - let Json.984 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.985; - ret Json.984; - else - let Json.1033 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.968; - let Json.529 : U64 = UnionAtIndex (Id 1) (Index 0) Json.1033; - let Json.530 : U8 = StructAtIndex 1 Json.968; - joinpoint Json.1030 Json.1029: - if Json.1029 then - let Json.991 : U64 = 1i64; - let Json.990 : U64 = CallByName Num.19 Json.529 Json.991; - let Json.989 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(5) Json.990; - let Json.988 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.989; - ret Json.988; - else - jump Json.1011; - in - let Json.1032 : U8 = 117i64; - let Json.1031 : Int1 = CallByName Bool.11 Json.530 Json.1032; - jump Json.1030 Json.1031; - in - let Json.1035 : Int1 = CallByName Json.61 Json.526; - jump Json.1034 Json.1035; - - case 5: - let Json.1057 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.968; - let Json.533 : U64 = UnionAtIndex (Id 5) (Index 0) Json.1057; - let Json.534 : U8 = StructAtIndex 1 Json.968; - joinpoint Json.1038 Json.1037: - if Json.1037 then - let Json.995 : U64 = 1i64; - let Json.994 : U64 = CallByName Num.19 Json.533 Json.995; - let Json.993 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(6) Json.994; - let Json.992 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.993; - ret Json.992; - else - jump Json.1011; - in - let Json.1039 : Int1 = CallByName Json.63 Json.534; - jump Json.1038 Json.1039; - - case 6: - let Json.1061 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.968; - let Json.537 : U64 = UnionAtIndex (Id 6) (Index 0) Json.1061; - let Json.538 : U8 = StructAtIndex 1 Json.968; - joinpoint Json.1059 Json.1058: - if Json.1058 then - let Json.999 : U64 = 1i64; - let Json.998 : U64 = CallByName Num.19 Json.537 Json.999; - let Json.997 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(7) Json.998; - let Json.996 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.997; - ret Json.996; - else - jump Json.1011; - in - let Json.1060 : Int1 = CallByName Json.63 Json.538; - jump Json.1059 Json.1060; - - case 7: - let Json.1065 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.968; - let Json.541 : U64 = UnionAtIndex (Id 7) (Index 0) Json.1065; - let Json.542 : U8 = StructAtIndex 1 Json.968; - joinpoint Json.1063 Json.1062: - if Json.1062 then - let Json.1003 : U64 = 1i64; - let Json.1002 : U64 = CallByName Num.19 Json.541 Json.1003; - let Json.1001 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(8) Json.1002; - let Json.1000 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.1001; - ret Json.1000; - else - jump Json.1011; - in - let Json.1064 : Int1 = CallByName Json.63 Json.542; - jump Json.1063 Json.1064; - - case 8: - let Json.1069 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.968; - let Json.545 : U64 = UnionAtIndex (Id 8) (Index 0) Json.1069; - let Json.546 : U8 = StructAtIndex 1 Json.968; - joinpoint Json.1067 Json.1066: - if Json.1066 then - let Json.1007 : U64 = 1i64; - let Json.1006 : U64 = CallByName Num.19 Json.545 Json.1007; - let Json.1005 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(0) Json.1006; - let Json.1004 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.1005; - ret Json.1004; - else - jump Json.1011; - in - let Json.1068 : Int1 = CallByName Json.63 Json.546; - jump Json.1067 Json.1068; - - default: - jump Json.1011; - - -procedure Json.61 (Json.551): - switch Json.551: - case 34: - let Json.917 : Int1 = CallByName Bool.2; - ret Json.917; - - case 92: - let Json.918 : Int1 = CallByName Bool.2; - ret Json.918; - - case 47: - let Json.919 : Int1 = CallByName Bool.2; - ret Json.919; - - case 98: - let Json.920 : Int1 = CallByName Bool.2; - ret Json.920; - - case 102: - let Json.921 : Int1 = CallByName Bool.2; - ret Json.921; - - case 110: - let Json.922 : Int1 = CallByName Bool.2; - ret Json.922; - - case 114: - let Json.923 : Int1 = CallByName Bool.2; - ret Json.923; - - case 116: - let Json.924 : Int1 = CallByName Bool.2; - ret Json.924; - - default: - let Json.925 : Int1 = CallByName Bool.1; - ret Json.925; - - -procedure Json.62 (Json.552): - switch Json.552: - case 34: - let Json.895 : U8 = 34i64; - ret Json.895; - - case 92: - let Json.896 : U8 = 92i64; - ret Json.896; - - case 47: - let Json.897 : U8 = 47i64; - ret Json.897; - - case 98: - let Json.898 : U8 = 8i64; - ret Json.898; - - case 102: - let Json.899 : U8 = 12i64; - ret Json.899; - - case 110: - let Json.900 : U8 = 10i64; - ret Json.900; - - case 114: - let Json.901 : U8 = 13i64; - ret Json.901; - - case 116: - let Json.902 : U8 = 9i64; - ret Json.902; - - default: - ret Json.552; - - -procedure Json.63 (Json.553): - let Json.1056 : U8 = 48i64; - let Json.1053 : Int1 = CallByName Num.25 Json.553 Json.1056; - let Json.1055 : U8 = 57i64; - let Json.1054 : Int1 = CallByName Num.23 Json.553 Json.1055; - let Json.1041 : Int1 = CallByName Bool.3 Json.1053 Json.1054; - let Json.1052 : U8 = 97i64; - let Json.1049 : Int1 = CallByName Num.25 Json.553 Json.1052; - let Json.1051 : U8 = 102i64; - let Json.1050 : Int1 = CallByName Num.23 Json.553 Json.1051; - let Json.1043 : Int1 = CallByName Bool.3 Json.1049 Json.1050; - let Json.1048 : U8 = 65i64; - let Json.1045 : Int1 = CallByName Num.25 Json.553 Json.1048; - let Json.1047 : U8 = 70i64; - let Json.1046 : Int1 = CallByName Num.23 Json.553 Json.1047; - let Json.1044 : Int1 = CallByName Bool.3 Json.1045 Json.1046; - let Json.1042 : Int1 = CallByName Bool.4 Json.1043 Json.1044; - let Json.1040 : Int1 = CallByName Bool.4 Json.1041 Json.1042; - ret Json.1040; - -procedure Json.64 (Json.554): - let Json.874 : U8 = 48i64; - let Json.871 : Int1 = CallByName Num.25 Json.554 Json.874; - let Json.873 : U8 = 57i64; - let Json.872 : Int1 = CallByName Num.23 Json.554 Json.873; - let Json.868 : Int1 = CallByName Bool.3 Json.871 Json.872; - if Json.868 then - let Json.870 : U8 = 48i64; - let Json.869 : U8 = CallByName Num.20 Json.554 Json.870; - ret Json.869; - else - let Json.867 : U8 = 97i64; - let Json.864 : Int1 = CallByName Num.25 Json.554 Json.867; - let Json.866 : U8 = 102i64; - let Json.865 : Int1 = CallByName Num.23 Json.554 Json.866; - let Json.859 : Int1 = CallByName Bool.3 Json.864 Json.865; - if Json.859 then - let Json.863 : U8 = 97i64; - let Json.861 : U8 = CallByName Num.20 Json.554 Json.863; - let Json.862 : U8 = 10i64; - let Json.860 : U8 = CallByName Num.19 Json.861 Json.862; - ret Json.860; - else - let Json.858 : U8 = 65i64; - let Json.855 : Int1 = CallByName Num.25 Json.554 Json.858; - let Json.857 : U8 = 70i64; - let Json.856 : Int1 = CallByName Num.23 Json.554 Json.857; - let Json.850 : Int1 = CallByName Bool.3 Json.855 Json.856; - if Json.850 then - let Json.854 : U8 = 65i64; - let Json.852 : U8 = CallByName Num.20 Json.554 Json.854; - let Json.853 : U8 = 10i64; - let Json.851 : U8 = CallByName Num.19 Json.852 Json.853; - ret Json.851; - else - let Json.849 : Str = "got an invalid hex char"; - Crash Json.849 - -procedure Json.65 (Json.555, Json.556): - let Json.840 : U8 = 4i64; - let Json.839 : U8 = CallByName Num.72 Json.555 Json.840; - let Json.838 : U8 = CallByName Num.71 Json.839 Json.556; - ret Json.838; - -procedure Json.66 (Json.557, Json.558, Json.559, Json.560): - let Json.561 : U8 = CallByName Json.64 Json.557; - let Json.562 : U8 = CallByName Json.64 Json.558; - let Json.563 : U8 = CallByName Json.64 Json.559; - let Json.564 : U8 = CallByName Json.64 Json.560; - let Json.847 : U8 = 0i64; - let Json.844 : Int1 = CallByName Bool.11 Json.561 Json.847; - let Json.846 : U8 = 0i64; - let Json.845 : Int1 = CallByName Bool.11 Json.562 Json.846; - let Json.841 : Int1 = CallByName Bool.3 Json.844 Json.845; - if Json.841 then - let Json.843 : U8 = CallByName Json.65 Json.563 Json.564; - let Json.842 : List U8 = Array [Json.843]; - ret Json.842; - else - let Json.836 : U8 = CallByName Json.65 Json.561 Json.562; - let Json.837 : U8 = CallByName Json.65 Json.563 Json.564; - let Json.835 : List U8 = Array [Json.836, Json.837]; - ret Json.835; - -procedure Json.67 (): - let Json.880 : U8 = 102i64; - let Json.881 : U8 = 102i64; - let Json.882 : U8 = 100i64; - let Json.883 : U8 = 100i64; - let Json.879 : List U8 = CallByName Json.66 Json.880 Json.881 Json.882 Json.883; +procedure Json.55 (): + let Json.880 : {} = Struct {}; + let Json.879 : {} = CallByName Decode.24 Json.880; ret Json.879; -procedure Json.68 (Json.1073): - joinpoint Json.830 Json.812: - let Json.565 : List U8 = StructAtIndex 0 Json.812; - inc Json.565; - let Json.566 : List U8 = StructAtIndex 1 Json.812; - inc Json.566; - dec Json.812; - let Json.948 : U64 = 0i64; - let Json.567 : [C {}, C U8] = CallByName List.2 Json.565 Json.948; - let Json.947 : U64 = 1i64; - let Json.568 : [C {}, C U8] = CallByName List.2 Json.565 Json.947; - let Json.946 : U64 = 2i64; - inc Json.565; - let Json.569 : List U8 = CallByName List.29 Json.565 Json.946; - let Json.945 : U64 = 6i64; - inc Json.565; - let Json.570 : List U8 = CallByName List.29 Json.565 Json.945; - let Json.831 : {[C {}, C U8], [C {}, C U8]} = Struct {Json.567, Json.568}; - joinpoint Json.910: - let Json.909 : [C {}, C U8] = StructAtIndex 0 Json.831; - let Json.581 : U8 = UnionAtIndex (Id 1) (Index 0) Json.909; - let Json.906 : List U8 = CallByName List.38 Json.565; - let Json.907 : List U8 = CallByName List.4 Json.566 Json.581; - let Json.905 : {List U8, List U8} = Struct {Json.906, Json.907}; - jump Json.830 Json.905; - in - let Json.941 : [C {}, C U8] = StructAtIndex 0 Json.831; - let Json.942 : U8 = 1i64; - let Json.943 : U8 = GetTagId Json.941; - let Json.944 : Int1 = lowlevel Eq Json.942 Json.943; - if Json.944 then - let Json.937 : [C {}, C U8] = StructAtIndex 1 Json.831; - let Json.938 : U8 = 1i64; - let Json.939 : U8 = GetTagId Json.937; - let Json.940 : Int1 = lowlevel Eq Json.938 Json.939; - if Json.940 then - let Json.936 : [C {}, C U8] = StructAtIndex 0 Json.831; - let Json.572 : U8 = UnionAtIndex (Id 1) (Index 0) Json.936; - let Json.935 : [C {}, C U8] = StructAtIndex 1 Json.831; - let Json.573 : U8 = UnionAtIndex (Id 1) (Index 0) Json.935; - joinpoint Json.929 Json.911: - if Json.911 then - dec Json.565; - let Json.888 : U64 = lowlevel ListLen Json.569; - let Json.889 : U64 = 4i64; - let Json.890 : Int1 = lowlevel NumGte Json.888 Json.889; - if Json.890 then - let Json.887 : U64 = 0i64; - let Json.574 : U8 = lowlevel ListGetUnsafe Json.569 Json.887; - let Json.886 : U64 = 1i64; - let Json.575 : U8 = lowlevel ListGetUnsafe Json.569 Json.886; - let Json.885 : U64 = 2i64; - let Json.576 : U8 = lowlevel ListGetUnsafe Json.569 Json.885; - let Json.884 : U64 = 3i64; - let Json.577 : U8 = lowlevel ListGetUnsafe Json.569 Json.884; - dec Json.569; - let Json.578 : List U8 = CallByName Json.66 Json.574 Json.575 Json.576 Json.577; - let Json.834 : List U8 = CallByName List.8 Json.566 Json.578; - let Json.833 : {List U8, List U8} = Struct {Json.570, Json.834}; - jump Json.830 Json.833; - else - dec Json.570; - let Json.878 : List U8 = CallByName Json.67; - let Json.877 : List U8 = CallByName List.8 Json.566 Json.878; - let Json.876 : {List U8, List U8} = Struct {Json.569, Json.877}; - jump Json.830 Json.876; - else - dec Json.570; - let Json.928 : [C {}, C U8] = StructAtIndex 0 Json.831; - let Json.579 : U8 = UnionAtIndex (Id 1) (Index 0) Json.928; - let Json.927 : [C {}, C U8] = StructAtIndex 1 Json.831; - let Json.580 : U8 = UnionAtIndex (Id 1) (Index 0) Json.927; - joinpoint Json.913 Json.912: - if Json.912 then - dec Json.565; - let Json.894 : U8 = CallByName Json.62 Json.580; - let Json.893 : List U8 = CallByName List.4 Json.566 Json.894; - let Json.892 : {List U8, List U8} = Struct {Json.569, Json.893}; - jump Json.830 Json.892; - else - dec Json.569; - jump Json.910; - in - let Json.926 : U8 = 92i64; - let Json.915 : Int1 = CallByName Bool.11 Json.579 Json.926; - let Json.916 : Int1 = CallByName Json.61 Json.580; - let Json.914 : Int1 = CallByName Bool.3 Json.915 Json.916; - jump Json.913 Json.914; - in - let Json.934 : U8 = 92i64; - let Json.931 : Int1 = CallByName Bool.11 Json.572 Json.934; - let Json.933 : U8 = 117i64; - let Json.932 : Int1 = CallByName Bool.11 Json.573 Json.933; - let Json.930 : Int1 = CallByName Bool.3 Json.931 Json.932; - jump Json.929 Json.930; - else - dec Json.570; - dec Json.569; - jump Json.910; - else - dec Json.570; - dec Json.569; - let Json.908 : {List U8, List U8} = Struct {Json.565, Json.566}; - ret Json.908; +procedure Json.56 (Json.462): + let Json.1030 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(4) ; + let Json.1031 : {} = Struct {}; + let Json.1019 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = CallByName List.26 Json.462 Json.1030 Json.1031; + let Json.1027 : U8 = 2i64; + let Json.1028 : U8 = GetTagId Json.1019; + let Json.1029 : Int1 = lowlevel Eq Json.1027 Json.1028; + if Json.1029 then + let Json.464 : U64 = UnionAtIndex (Id 2) (Index 0) Json.1019; + inc Json.462; + let Json.1021 : List U8 = CallByName List.29 Json.462 Json.464; + let Json.1024 : U64 = 0i64; + let Json.1023 : {U64, U64} = Struct {Json.464, Json.1024}; + let Json.1022 : List U8 = CallByName List.49 Json.462 Json.1023; + let Json.1020 : {List U8, List U8} = Struct {Json.1021, Json.1022}; + ret Json.1020; + else + let Json.1026 : List U8 = Array []; + let Json.1025 : {List U8, List U8} = Struct {Json.462, Json.1026}; + ret Json.1025; + +procedure Json.57 (Json.465, Json.466): + let Json.1032 : {[C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], U8} = Struct {Json.465, Json.466}; + joinpoint Json.1075: + let Json.1073 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(3) ; + let Json.1072 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(0) Json.1073; + ret Json.1072; in - jump Json.830 Json.1073; + let Json.1076 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.1032; + let Json.1134 : U8 = GetTagId Json.1076; + switch Json.1134: + case 4: + let Json.467 : U8 = StructAtIndex 1 Json.1032; + joinpoint Json.1078 Json.1077: + if Json.1077 then + let Json.1035 : U64 = 1i64; + let Json.1034 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(0) Json.1035; + let Json.1033 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.1034; + ret Json.1033; + else + jump Json.1075; + in + let Json.1080 : U8 = 34i64; + let Json.1079 : Int1 = CallByName Bool.11 Json.467 Json.1080; + jump Json.1078 Json.1079; + + case 0: + let Json.1091 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.1032; + let Json.470 : U64 = UnionAtIndex (Id 0) (Index 0) Json.1091; + let Json.471 : U8 = StructAtIndex 1 Json.1032; + joinpoint Json.1088 Json.1082: + if Json.1082 then + let Json.1039 : U64 = 1i64; + let Json.1038 : U64 = CallByName Num.19 Json.470 Json.1039; + let Json.1037 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(2) Json.1038; + let Json.1036 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(0) Json.1037; + ret Json.1036; + else + let Json.1087 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.1032; + let Json.474 : U64 = UnionAtIndex (Id 0) (Index 0) Json.1087; + let Json.475 : U8 = StructAtIndex 1 Json.1032; + joinpoint Json.1084 Json.1083: + if Json.1083 then + let Json.1043 : U64 = 1i64; + let Json.1042 : U64 = CallByName Num.19 Json.474 Json.1043; + let Json.1041 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(1) Json.1042; + let Json.1040 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.1041; + ret Json.1040; + else + let Json.1074 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.1032; + let Json.478 : U64 = UnionAtIndex (Id 0) (Index 0) Json.1074; + let Json.1047 : U64 = 1i64; + let Json.1046 : U64 = CallByName Num.19 Json.478 Json.1047; + let Json.1045 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(0) Json.1046; + let Json.1044 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.1045; + ret Json.1044; + in + let Json.1086 : U8 = 92i64; + let Json.1085 : Int1 = CallByName Bool.11 Json.475 Json.1086; + jump Json.1084 Json.1085; + in + let Json.1090 : U8 = 34i64; + let Json.1089 : Int1 = CallByName Bool.11 Json.471 Json.1090; + jump Json.1088 Json.1089; + + case 1: + let Json.1100 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.1032; + let Json.481 : U64 = UnionAtIndex (Id 1) (Index 0) Json.1100; + let Json.482 : U8 = StructAtIndex 1 Json.1032; + joinpoint Json.1098 Json.1092: + if Json.1092 then + let Json.1051 : U64 = 1i64; + let Json.1050 : U64 = CallByName Num.19 Json.481 Json.1051; + let Json.1049 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(0) Json.1050; + let Json.1048 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.1049; + ret Json.1048; + else + let Json.1097 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.1032; + let Json.485 : U64 = UnionAtIndex (Id 1) (Index 0) Json.1097; + let Json.486 : U8 = StructAtIndex 1 Json.1032; + joinpoint Json.1094 Json.1093: + if Json.1093 then + let Json.1055 : U64 = 1i64; + let Json.1054 : U64 = CallByName Num.19 Json.485 Json.1055; + let Json.1053 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(5) Json.1054; + let Json.1052 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.1053; + ret Json.1052; + else + jump Json.1075; + in + let Json.1096 : U8 = 117i64; + let Json.1095 : Int1 = CallByName Bool.11 Json.486 Json.1096; + jump Json.1094 Json.1095; + in + let Json.1099 : Int1 = CallByName Json.58 Json.482; + jump Json.1098 Json.1099; + + case 5: + let Json.1121 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.1032; + let Json.489 : U64 = UnionAtIndex (Id 5) (Index 0) Json.1121; + let Json.490 : U8 = StructAtIndex 1 Json.1032; + joinpoint Json.1102 Json.1101: + if Json.1101 then + let Json.1059 : U64 = 1i64; + let Json.1058 : U64 = CallByName Num.19 Json.489 Json.1059; + let Json.1057 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(6) Json.1058; + let Json.1056 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.1057; + ret Json.1056; + else + jump Json.1075; + in + let Json.1103 : Int1 = CallByName Json.60 Json.490; + jump Json.1102 Json.1103; + + case 6: + let Json.1125 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.1032; + let Json.493 : U64 = UnionAtIndex (Id 6) (Index 0) Json.1125; + let Json.494 : U8 = StructAtIndex 1 Json.1032; + joinpoint Json.1123 Json.1122: + if Json.1122 then + let Json.1063 : U64 = 1i64; + let Json.1062 : U64 = CallByName Num.19 Json.493 Json.1063; + let Json.1061 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(7) Json.1062; + let Json.1060 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.1061; + ret Json.1060; + else + jump Json.1075; + in + let Json.1124 : Int1 = CallByName Json.60 Json.494; + jump Json.1123 Json.1124; + + case 7: + let Json.1129 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.1032; + let Json.497 : U64 = UnionAtIndex (Id 7) (Index 0) Json.1129; + let Json.498 : U8 = StructAtIndex 1 Json.1032; + joinpoint Json.1127 Json.1126: + if Json.1126 then + let Json.1067 : U64 = 1i64; + let Json.1066 : U64 = CallByName Num.19 Json.497 Json.1067; + let Json.1065 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(8) Json.1066; + let Json.1064 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.1065; + ret Json.1064; + else + jump Json.1075; + in + let Json.1128 : Int1 = CallByName Json.60 Json.498; + jump Json.1127 Json.1128; + + case 8: + let Json.1133 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = StructAtIndex 0 Json.1032; + let Json.501 : U64 = UnionAtIndex (Id 8) (Index 0) Json.1133; + let Json.502 : U8 = StructAtIndex 1 Json.1032; + joinpoint Json.1131 Json.1130: + if Json.1130 then + let Json.1071 : U64 = 1i64; + let Json.1070 : U64 = CallByName Num.19 Json.501 Json.1071; + let Json.1069 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = TagId(0) Json.1070; + let Json.1068 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) Json.1069; + ret Json.1068; + else + jump Json.1075; + in + let Json.1132 : Int1 = CallByName Json.60 Json.502; + jump Json.1131 Json.1132; + + default: + jump Json.1075; + + +procedure Json.58 (Json.507): + switch Json.507: + case 34: + let Json.981 : Int1 = CallByName Bool.2; + ret Json.981; + + case 92: + let Json.982 : Int1 = CallByName Bool.2; + ret Json.982; + + case 47: + let Json.983 : Int1 = CallByName Bool.2; + ret Json.983; + + case 98: + let Json.984 : Int1 = CallByName Bool.2; + ret Json.984; + + case 102: + let Json.985 : Int1 = CallByName Bool.2; + ret Json.985; + + case 110: + let Json.986 : Int1 = CallByName Bool.2; + ret Json.986; + + case 114: + let Json.987 : Int1 = CallByName Bool.2; + ret Json.987; + + case 116: + let Json.988 : Int1 = CallByName Bool.2; + ret Json.988; + + default: + let Json.989 : Int1 = CallByName Bool.1; + ret Json.989; + + +procedure Json.59 (Json.508): + switch Json.508: + case 34: + let Json.959 : U8 = 34i64; + ret Json.959; + + case 92: + let Json.960 : U8 = 92i64; + ret Json.960; + + case 47: + let Json.961 : U8 = 47i64; + ret Json.961; + + case 98: + let Json.962 : U8 = 8i64; + ret Json.962; + + case 102: + let Json.963 : U8 = 12i64; + ret Json.963; + + case 110: + let Json.964 : U8 = 10i64; + ret Json.964; + + case 114: + let Json.965 : U8 = 13i64; + ret Json.965; + + case 116: + let Json.966 : U8 = 9i64; + ret Json.966; + + default: + ret Json.508; + + +procedure Json.60 (Json.509): + let Json.1120 : U8 = 48i64; + let Json.1117 : Int1 = CallByName Num.25 Json.509 Json.1120; + let Json.1119 : U8 = 57i64; + let Json.1118 : Int1 = CallByName Num.23 Json.509 Json.1119; + let Json.1105 : Int1 = CallByName Bool.3 Json.1117 Json.1118; + let Json.1116 : U8 = 97i64; + let Json.1113 : Int1 = CallByName Num.25 Json.509 Json.1116; + let Json.1115 : U8 = 102i64; + let Json.1114 : Int1 = CallByName Num.23 Json.509 Json.1115; + let Json.1107 : Int1 = CallByName Bool.3 Json.1113 Json.1114; + let Json.1112 : U8 = 65i64; + let Json.1109 : Int1 = CallByName Num.25 Json.509 Json.1112; + let Json.1111 : U8 = 70i64; + let Json.1110 : Int1 = CallByName Num.23 Json.509 Json.1111; + let Json.1108 : Int1 = CallByName Bool.3 Json.1109 Json.1110; + let Json.1106 : Int1 = CallByName Bool.4 Json.1107 Json.1108; + let Json.1104 : Int1 = CallByName Bool.4 Json.1105 Json.1106; + ret Json.1104; + +procedure Json.61 (Json.510): + let Json.938 : U8 = 48i64; + let Json.935 : Int1 = CallByName Num.25 Json.510 Json.938; + let Json.937 : U8 = 57i64; + let Json.936 : Int1 = CallByName Num.23 Json.510 Json.937; + let Json.932 : Int1 = CallByName Bool.3 Json.935 Json.936; + if Json.932 then + let Json.934 : U8 = 48i64; + let Json.933 : U8 = CallByName Num.20 Json.510 Json.934; + ret Json.933; + else + let Json.931 : U8 = 97i64; + let Json.928 : Int1 = CallByName Num.25 Json.510 Json.931; + let Json.930 : U8 = 102i64; + let Json.929 : Int1 = CallByName Num.23 Json.510 Json.930; + let Json.923 : Int1 = CallByName Bool.3 Json.928 Json.929; + if Json.923 then + let Json.927 : U8 = 97i64; + let Json.925 : U8 = CallByName Num.20 Json.510 Json.927; + let Json.926 : U8 = 10i64; + let Json.924 : U8 = CallByName Num.19 Json.925 Json.926; + ret Json.924; + else + let Json.922 : U8 = 65i64; + let Json.919 : Int1 = CallByName Num.25 Json.510 Json.922; + let Json.921 : U8 = 70i64; + let Json.920 : Int1 = CallByName Num.23 Json.510 Json.921; + let Json.914 : Int1 = CallByName Bool.3 Json.919 Json.920; + if Json.914 then + let Json.918 : U8 = 65i64; + let Json.916 : U8 = CallByName Num.20 Json.510 Json.918; + let Json.917 : U8 = 10i64; + let Json.915 : U8 = CallByName Num.19 Json.916 Json.917; + ret Json.915; + else + let Json.913 : Str = "got an invalid hex char"; + Crash Json.913 + +procedure Json.62 (Json.511, Json.512): + let Json.904 : U8 = 4i64; + let Json.903 : U8 = CallByName Num.72 Json.511 Json.904; + let Json.902 : U8 = CallByName Num.71 Json.903 Json.512; + ret Json.902; + +procedure Json.63 (Json.513, Json.514, Json.515, Json.516): + let Json.517 : U8 = CallByName Json.61 Json.513; + let Json.518 : U8 = CallByName Json.61 Json.514; + let Json.519 : U8 = CallByName Json.61 Json.515; + let Json.520 : U8 = CallByName Json.61 Json.516; + let Json.911 : U8 = 0i64; + let Json.908 : Int1 = CallByName Bool.11 Json.517 Json.911; + let Json.910 : U8 = 0i64; + let Json.909 : Int1 = CallByName Bool.11 Json.518 Json.910; + let Json.905 : Int1 = CallByName Bool.3 Json.908 Json.909; + if Json.905 then + let Json.907 : U8 = CallByName Json.62 Json.519 Json.520; + let Json.906 : List U8 = Array [Json.907]; + ret Json.906; + else + let Json.900 : U8 = CallByName Json.62 Json.517 Json.518; + let Json.901 : U8 = CallByName Json.62 Json.519 Json.520; + let Json.899 : List U8 = Array [Json.900, Json.901]; + ret Json.899; + +procedure Json.64 (): + let Json.944 : U8 = 102i64; + let Json.945 : U8 = 102i64; + let Json.946 : U8 = 100i64; + let Json.947 : U8 = 100i64; + let Json.943 : List U8 = CallByName Json.63 Json.944 Json.945 Json.946 Json.947; + ret Json.943; + +procedure Json.65 (Json.1137): + joinpoint Json.894 Json.876: + let Json.521 : List U8 = StructAtIndex 0 Json.876; + inc Json.521; + let Json.522 : List U8 = StructAtIndex 1 Json.876; + inc Json.522; + dec Json.876; + let Json.1012 : U64 = 0i64; + let Json.523 : [C {}, C U8] = CallByName List.2 Json.521 Json.1012; + let Json.1011 : U64 = 1i64; + let Json.524 : [C {}, C U8] = CallByName List.2 Json.521 Json.1011; + let Json.1010 : U64 = 2i64; + inc Json.521; + let Json.525 : List U8 = CallByName List.29 Json.521 Json.1010; + let Json.1009 : U64 = 6i64; + inc Json.521; + let Json.526 : List U8 = CallByName List.29 Json.521 Json.1009; + let Json.895 : {[C {}, C U8], [C {}, C U8]} = Struct {Json.523, Json.524}; + joinpoint Json.974: + let Json.973 : [C {}, C U8] = StructAtIndex 0 Json.895; + let Json.537 : U8 = UnionAtIndex (Id 1) (Index 0) Json.973; + let Json.970 : List U8 = CallByName List.38 Json.521; + let Json.971 : List U8 = CallByName List.4 Json.522 Json.537; + let Json.969 : {List U8, List U8} = Struct {Json.970, Json.971}; + jump Json.894 Json.969; + in + let Json.1005 : [C {}, C U8] = StructAtIndex 0 Json.895; + let Json.1006 : U8 = 1i64; + let Json.1007 : U8 = GetTagId Json.1005; + let Json.1008 : Int1 = lowlevel Eq Json.1006 Json.1007; + if Json.1008 then + let Json.1001 : [C {}, C U8] = StructAtIndex 1 Json.895; + let Json.1002 : U8 = 1i64; + let Json.1003 : U8 = GetTagId Json.1001; + let Json.1004 : Int1 = lowlevel Eq Json.1002 Json.1003; + if Json.1004 then + let Json.1000 : [C {}, C U8] = StructAtIndex 0 Json.895; + let Json.528 : U8 = UnionAtIndex (Id 1) (Index 0) Json.1000; + let Json.999 : [C {}, C U8] = StructAtIndex 1 Json.895; + let Json.529 : U8 = UnionAtIndex (Id 1) (Index 0) Json.999; + joinpoint Json.993 Json.975: + if Json.975 then + dec Json.521; + let Json.952 : U64 = lowlevel ListLen Json.525; + let Json.953 : U64 = 4i64; + let Json.954 : Int1 = lowlevel NumGte Json.952 Json.953; + if Json.954 then + let Json.951 : U64 = 0i64; + let Json.530 : U8 = lowlevel ListGetUnsafe Json.525 Json.951; + let Json.950 : U64 = 1i64; + let Json.531 : U8 = lowlevel ListGetUnsafe Json.525 Json.950; + let Json.949 : U64 = 2i64; + let Json.532 : U8 = lowlevel ListGetUnsafe Json.525 Json.949; + let Json.948 : U64 = 3i64; + let Json.533 : U8 = lowlevel ListGetUnsafe Json.525 Json.948; + dec Json.525; + let Json.534 : List U8 = CallByName Json.63 Json.530 Json.531 Json.532 Json.533; + let Json.898 : List U8 = CallByName List.8 Json.522 Json.534; + let Json.897 : {List U8, List U8} = Struct {Json.526, Json.898}; + jump Json.894 Json.897; + else + dec Json.526; + let Json.942 : List U8 = CallByName Json.64; + let Json.941 : List U8 = CallByName List.8 Json.522 Json.942; + let Json.940 : {List U8, List U8} = Struct {Json.525, Json.941}; + jump Json.894 Json.940; + else + dec Json.526; + let Json.992 : [C {}, C U8] = StructAtIndex 0 Json.895; + let Json.535 : U8 = UnionAtIndex (Id 1) (Index 0) Json.992; + let Json.991 : [C {}, C U8] = StructAtIndex 1 Json.895; + let Json.536 : U8 = UnionAtIndex (Id 1) (Index 0) Json.991; + joinpoint Json.977 Json.976: + if Json.976 then + dec Json.521; + let Json.958 : U8 = CallByName Json.59 Json.536; + let Json.957 : List U8 = CallByName List.4 Json.522 Json.958; + let Json.956 : {List U8, List U8} = Struct {Json.525, Json.957}; + jump Json.894 Json.956; + else + dec Json.525; + jump Json.974; + in + let Json.990 : U8 = 92i64; + let Json.979 : Int1 = CallByName Bool.11 Json.535 Json.990; + let Json.980 : Int1 = CallByName Json.58 Json.536; + let Json.978 : Int1 = CallByName Bool.3 Json.979 Json.980; + jump Json.977 Json.978; + in + let Json.998 : U8 = 92i64; + let Json.995 : Int1 = CallByName Bool.11 Json.528 Json.998; + let Json.997 : U8 = 117i64; + let Json.996 : Int1 = CallByName Bool.11 Json.529 Json.997; + let Json.994 : Int1 = CallByName Bool.3 Json.995 Json.996; + jump Json.993 Json.994; + else + dec Json.526; + dec Json.525; + jump Json.974; + else + dec Json.526; + dec Json.525; + let Json.972 : {List U8, List U8} = Struct {Json.521, Json.522}; + ret Json.972; + in + jump Json.894 Json.1137; procedure List.1 (List.95): let List.546 : U64 = CallByName List.6 List.95; @@ -667,7 +667,7 @@ procedure List.80 (List.606, List.607, List.608, List.609, List.610): let List.566 : Int1 = CallByName Num.22 List.436 List.437; if List.566 then let List.575 : U8 = CallByName List.66 List.433 List.436; - let List.567 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = CallByName Json.60 List.434 List.575; + let List.567 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = CallByName Json.57 List.434 List.575; let List.572 : U8 = 1i64; let List.573 : U8 = GetTagId List.567; let List.574 : Int1 = lowlevel Eq List.572 List.573; diff --git a/crates/compiler/test_mono/generated/unspecialized_lambda_set_unification_does_not_duplicate_identical_concrete_types.txt b/crates/compiler/test_mono/generated/unspecialized_lambda_set_unification_does_not_duplicate_identical_concrete_types.txt index cfedd5299c..b93191a319 100644 --- a/crates/compiler/test_mono/generated/unspecialized_lambda_set_unification_does_not_duplicate_identical_concrete_types.txt +++ b/crates/compiler/test_mono/generated/unspecialized_lambda_set_unification_does_not_duplicate_identical_concrete_types.txt @@ -16,11 +16,11 @@ procedure Encode.24 (Encode.99, Encode.107, Encode.101): ret Encode.111; procedure Encode.24 (Encode.99, Encode.107, Encode.101): - let Encode.118 : List U8 = CallByName Json.181 Encode.99 Encode.101 Encode.107; + let Encode.118 : List U8 = CallByName Json.188 Encode.99 Encode.101 Encode.107; ret Encode.118; procedure Encode.24 (Encode.99, Encode.107, Encode.101): - let Encode.123 : List U8 = CallByName Json.139 Encode.99 Encode.101 Encode.107; + let Encode.123 : List U8 = CallByName Json.146 Encode.99 Encode.101 Encode.107; ret Encode.123; procedure Encode.26 (Encode.105, Encode.106): @@ -30,93 +30,93 @@ procedure Encode.26 (Encode.105, Encode.106): ret Encode.108; procedure Json.1 (): - let Json.814 : {} = Struct {}; - ret Json.814; + let Json.878 : {} = Struct {}; + ret Json.878; -procedure Json.139 (Json.140, Json.861, Json.138): - let Json.870 : I64 = 34i64; - let Json.869 : U8 = CallByName Num.127 Json.870; - let Json.867 : List U8 = CallByName List.4 Json.140 Json.869; - let Json.868 : List U8 = CallByName Str.12 Json.138; - let Json.864 : List U8 = CallByName List.8 Json.867 Json.868; - let Json.866 : I64 = 34i64; - let Json.865 : U8 = CallByName Num.127 Json.866; - let Json.863 : List U8 = CallByName List.4 Json.864 Json.865; - ret Json.863; +procedure Json.146 (Json.147, Json.925, Json.145): + let Json.934 : I64 = 34i64; + let Json.933 : U8 = CallByName Num.127 Json.934; + let Json.931 : List U8 = CallByName List.4 Json.147 Json.933; + let Json.932 : List U8 = CallByName Str.12 Json.145; + let Json.928 : List U8 = CallByName List.8 Json.931 Json.932; + let Json.930 : I64 = 34i64; + let Json.929 : U8 = CallByName Num.127 Json.930; + let Json.927 : List U8 = CallByName List.4 Json.928 Json.929; + ret Json.927; -procedure Json.181 (Json.182, Json.817, #Attr.12): - let Json.180 : List Str = StructAtIndex 1 #Attr.12; - inc Json.180; - let Json.179 : Str = StructAtIndex 0 #Attr.12; - inc Json.179; - dec #Attr.12; - let Json.855 : I64 = 123i64; - let Json.854 : U8 = CallByName Num.127 Json.855; - let Json.851 : List U8 = CallByName List.4 Json.182 Json.854; - let Json.853 : I64 = 34i64; - let Json.852 : U8 = CallByName Num.127 Json.853; - let Json.849 : List U8 = CallByName List.4 Json.851 Json.852; - let Json.850 : List U8 = CallByName Str.12 Json.179; - let Json.846 : List U8 = CallByName List.8 Json.849 Json.850; - let Json.848 : I64 = 34i64; - let Json.847 : U8 = CallByName Num.127 Json.848; - let Json.843 : List U8 = CallByName List.4 Json.846 Json.847; - let Json.845 : I64 = 58i64; - let Json.844 : U8 = CallByName Num.127 Json.845; - let Json.840 : List U8 = CallByName List.4 Json.843 Json.844; - let Json.842 : I64 = 91i64; - let Json.841 : U8 = CallByName Num.127 Json.842; - let Json.184 : List U8 = CallByName List.4 Json.840 Json.841; - let Json.839 : U64 = CallByName List.6 Json.180; - let Json.827 : {List U8, U64} = Struct {Json.184, Json.839}; - let Json.828 : {} = Struct {}; - let Json.826 : {List U8, U64} = CallByName List.18 Json.180 Json.827 Json.828; - dec Json.180; - let Json.186 : List U8 = StructAtIndex 0 Json.826; - inc Json.186; - dec Json.826; - let Json.825 : I64 = 93i64; - let Json.824 : U8 = CallByName Num.127 Json.825; - let Json.821 : List U8 = CallByName List.4 Json.186 Json.824; - let Json.823 : I64 = 125i64; - let Json.822 : U8 = CallByName Num.127 Json.823; - let Json.820 : List U8 = CallByName List.4 Json.821 Json.822; - ret Json.820; - -procedure Json.183 (Json.819, Json.189): - let Json.187 : List U8 = StructAtIndex 0 Json.819; +procedure Json.188 (Json.189, Json.881, #Attr.12): + let Json.187 : List Str = StructAtIndex 1 #Attr.12; inc Json.187; - let Json.188 : U64 = StructAtIndex 1 Json.819; - dec Json.819; - let Json.838 : {} = Struct {}; - let Json.190 : List U8 = CallByName Encode.24 Json.187 Json.189 Json.838; - joinpoint Json.833 Json.191: - let Json.831 : U64 = 1i64; - let Json.830 : U64 = CallByName Num.20 Json.188 Json.831; - let Json.829 : {List U8, U64} = Struct {Json.191, Json.830}; - ret Json.829; + let Json.186 : Str = StructAtIndex 0 #Attr.12; + inc Json.186; + dec #Attr.12; + let Json.919 : I64 = 123i64; + let Json.918 : U8 = CallByName Num.127 Json.919; + let Json.915 : List U8 = CallByName List.4 Json.189 Json.918; + let Json.917 : I64 = 34i64; + let Json.916 : U8 = CallByName Num.127 Json.917; + let Json.913 : List U8 = CallByName List.4 Json.915 Json.916; + let Json.914 : List U8 = CallByName Str.12 Json.186; + let Json.910 : List U8 = CallByName List.8 Json.913 Json.914; + let Json.912 : I64 = 34i64; + let Json.911 : U8 = CallByName Num.127 Json.912; + let Json.907 : List U8 = CallByName List.4 Json.910 Json.911; + let Json.909 : I64 = 58i64; + let Json.908 : U8 = CallByName Num.127 Json.909; + let Json.904 : List U8 = CallByName List.4 Json.907 Json.908; + let Json.906 : I64 = 91i64; + let Json.905 : U8 = CallByName Num.127 Json.906; + let Json.191 : List U8 = CallByName List.4 Json.904 Json.905; + let Json.903 : U64 = CallByName List.6 Json.187; + let Json.891 : {List U8, U64} = Struct {Json.191, Json.903}; + let Json.892 : {} = Struct {}; + let Json.890 : {List U8, U64} = CallByName List.18 Json.187 Json.891 Json.892; + dec Json.187; + let Json.193 : List U8 = StructAtIndex 0 Json.890; + inc Json.193; + dec Json.890; + let Json.889 : I64 = 93i64; + let Json.888 : U8 = CallByName Num.127 Json.889; + let Json.885 : List U8 = CallByName List.4 Json.193 Json.888; + let Json.887 : I64 = 125i64; + let Json.886 : U8 = CallByName Num.127 Json.887; + let Json.884 : List U8 = CallByName List.4 Json.885 Json.886; + ret Json.884; + +procedure Json.190 (Json.883, Json.196): + let Json.194 : List U8 = StructAtIndex 0 Json.883; + inc Json.194; + let Json.195 : U64 = StructAtIndex 1 Json.883; + dec Json.883; + let Json.902 : {} = Struct {}; + let Json.197 : List U8 = CallByName Encode.24 Json.194 Json.196 Json.902; + joinpoint Json.897 Json.198: + let Json.895 : U64 = 1i64; + let Json.894 : U64 = CallByName Num.20 Json.195 Json.895; + let Json.893 : {List U8, U64} = Struct {Json.198, Json.894}; + ret Json.893; in - let Json.837 : U64 = 1i64; - let Json.834 : Int1 = CallByName Num.24 Json.188 Json.837; - if Json.834 then - let Json.836 : I64 = 44i64; - let Json.835 : U8 = CallByName Num.127 Json.836; - let Json.832 : List U8 = CallByName List.4 Json.190 Json.835; - jump Json.833 Json.832; + let Json.901 : U64 = 1i64; + let Json.898 : Int1 = CallByName Num.24 Json.195 Json.901; + if Json.898 then + let Json.900 : I64 = 44i64; + let Json.899 : U8 = CallByName Num.127 Json.900; + let Json.896 : List U8 = CallByName List.4 Json.197 Json.899; + jump Json.897 Json.896; else - jump Json.833 Json.190; + jump Json.897 Json.197; -procedure Json.22 (Json.138): - let Json.871 : Str = CallByName Encode.23 Json.138; - ret Json.871; +procedure Json.23 (Json.145): + let Json.935 : Str = CallByName Encode.23 Json.145; + ret Json.935; -procedure Json.26 (Json.179, Json.180): - let Json.857 : {Str, List Str} = Struct {Json.179, Json.180}; - let Json.856 : {Str, List Str} = CallByName Encode.23 Json.857; - ret Json.856; +procedure Json.27 (Json.186, Json.187): + let Json.921 : {Str, List Str} = Struct {Json.186, Json.187}; + let Json.920 : {Str, List Str} = CallByName Encode.23 Json.921; + ret Json.920; procedure List.139 (List.140, List.141, List.138): - let List.545 : {List U8, U64} = CallByName Json.183 List.140 List.141; + let List.545 : {List U8, U64} = CallByName Json.190 List.140 List.141; ret List.545; procedure List.18 (List.136, List.137, List.138): @@ -214,18 +214,18 @@ procedure Test.5 (Test.6, Test.7, Test.4): let Test.29 : Str = StructAtIndex 0 Test.4; inc Test.29; dec Test.4; - let Test.28 : Str = CallByName Json.22 Test.29; + let Test.28 : Str = CallByName Json.23 Test.29; let Test.27 : List Str = Array [Test.28]; - let Test.19 : {Str, List Str} = CallByName Json.26 Test.26 Test.27; + let Test.19 : {Str, List Str} = CallByName Json.27 Test.26 Test.27; jump Test.20 Test.19; else let Test.21 : Str = "B"; let Test.24 : Str = StructAtIndex 1 Test.4; inc Test.24; dec Test.4; - let Test.23 : Str = CallByName Json.22 Test.24; + let Test.23 : Str = CallByName Json.23 Test.24; let Test.22 : List Str = Array [Test.23]; - let Test.19 : {Str, List Str} = CallByName Json.26 Test.21 Test.22; + let Test.19 : {Str, List Str} = CallByName Json.27 Test.21 Test.22; jump Test.20 Test.19; procedure Test.0 (): diff --git a/crates/compiler/test_mono/generated/unspecialized_lambda_set_unification_keeps_all_concrete_types_without_unification_of_unifiable.txt b/crates/compiler/test_mono/generated/unspecialized_lambda_set_unification_keeps_all_concrete_types_without_unification_of_unifiable.txt index 24592c5b39..ec4765f22f 100644 --- a/crates/compiler/test_mono/generated/unspecialized_lambda_set_unification_keeps_all_concrete_types_without_unification_of_unifiable.txt +++ b/crates/compiler/test_mono/generated/unspecialized_lambda_set_unification_keeps_all_concrete_types_without_unification_of_unifiable.txt @@ -11,7 +11,7 @@ procedure #Derived.2 (#Derived.3, #Derived.4, #Attr.12): in let #Derived_gen.16 : Str = "A"; let #Derived_gen.17 : List [] = Array []; - let #Derived_gen.15 : {Str, List []} = CallByName Json.26 #Derived_gen.16 #Derived_gen.17; + let #Derived_gen.15 : {Str, List []} = CallByName Json.27 #Derived_gen.16 #Derived_gen.17; jump #Derived_gen.14 #Derived_gen.15; procedure #Derived.5 (#Derived.6): @@ -27,7 +27,7 @@ procedure #Derived.7 (#Derived.8, #Derived.9, #Attr.12): in let #Derived_gen.7 : Str = "B"; let #Derived_gen.8 : List [] = Array []; - let #Derived_gen.6 : {Str, List []} = CallByName Json.26 #Derived_gen.7 #Derived_gen.8; + let #Derived_gen.6 : {Str, List []} = CallByName Json.27 #Derived_gen.7 #Derived_gen.8; jump #Derived_gen.5 #Derived_gen.6; procedure Bool.2 (): @@ -51,7 +51,7 @@ procedure Encode.24 (Encode.99, Encode.107, Encode.101): ret Encode.111; procedure Encode.24 (Encode.99, Encode.107, Encode.101): - let Encode.118 : List U8 = CallByName Json.181 Encode.99 Encode.101 Encode.107; + let Encode.118 : List U8 = CallByName Json.188 Encode.99 Encode.101 Encode.107; ret Encode.118; procedure Encode.24 (Encode.99, Encode.107, Encode.101): @@ -67,7 +67,7 @@ procedure Encode.24 (Encode.99, Encode.107, Encode.101): procedure Encode.24 (Encode.99, Encode.107, Encode.101): - let Encode.134 : List U8 = CallByName Json.181 Encode.99 Encode.101 Encode.107; + let Encode.134 : List U8 = CallByName Json.188 Encode.99 Encode.101 Encode.107; ret Encode.134; procedure Encode.24 (Encode.99, Encode.107, Encode.101): @@ -81,150 +81,150 @@ procedure Encode.26 (Encode.105, Encode.106): ret Encode.108; procedure Json.1 (): - let Json.814 : {} = Struct {}; - ret Json.814; - -procedure Json.181 (Json.182, Json.817, #Attr.12): - let Json.180 : List [C {}, C {}] = StructAtIndex 1 #Attr.12; - inc Json.180; - let Json.179 : Str = StructAtIndex 0 #Attr.12; - inc Json.179; - dec #Attr.12; - let Json.855 : I64 = 123i64; - let Json.854 : U8 = CallByName Num.127 Json.855; - let Json.851 : List U8 = CallByName List.4 Json.182 Json.854; - let Json.853 : I64 = 34i64; - let Json.852 : U8 = CallByName Num.127 Json.853; - let Json.849 : List U8 = CallByName List.4 Json.851 Json.852; - let Json.850 : List U8 = CallByName Str.12 Json.179; - let Json.846 : List U8 = CallByName List.8 Json.849 Json.850; - let Json.848 : I64 = 34i64; - let Json.847 : U8 = CallByName Num.127 Json.848; - let Json.843 : List U8 = CallByName List.4 Json.846 Json.847; - let Json.845 : I64 = 58i64; - let Json.844 : U8 = CallByName Num.127 Json.845; - let Json.840 : List U8 = CallByName List.4 Json.843 Json.844; - let Json.842 : I64 = 91i64; - let Json.841 : U8 = CallByName Num.127 Json.842; - let Json.184 : List U8 = CallByName List.4 Json.840 Json.841; - let Json.839 : U64 = CallByName List.6 Json.180; - let Json.827 : {List U8, U64} = Struct {Json.184, Json.839}; - let Json.828 : {} = Struct {}; - let Json.826 : {List U8, U64} = CallByName List.18 Json.180 Json.827 Json.828; - dec Json.180; - let Json.186 : List U8 = StructAtIndex 0 Json.826; - inc Json.186; - dec Json.826; - let Json.825 : I64 = 93i64; - let Json.824 : U8 = CallByName Num.127 Json.825; - let Json.821 : List U8 = CallByName List.4 Json.186 Json.824; - let Json.823 : I64 = 125i64; - let Json.822 : U8 = CallByName Num.127 Json.823; - let Json.820 : List U8 = CallByName List.4 Json.821 Json.822; - ret Json.820; - -procedure Json.181 (Json.182, Json.817, #Attr.12): - let Json.180 : List [] = StructAtIndex 1 #Attr.12; - inc Json.180; - let Json.179 : Str = StructAtIndex 0 #Attr.12; - inc Json.179; - dec #Attr.12; - let Json.905 : I64 = 123i64; - let Json.904 : U8 = CallByName Num.127 Json.905; - let Json.901 : List U8 = CallByName List.4 Json.182 Json.904; - let Json.903 : I64 = 34i64; - let Json.902 : U8 = CallByName Num.127 Json.903; - let Json.899 : List U8 = CallByName List.4 Json.901 Json.902; - let Json.900 : List U8 = CallByName Str.12 Json.179; - let Json.896 : List U8 = CallByName List.8 Json.899 Json.900; - let Json.898 : I64 = 34i64; - let Json.897 : U8 = CallByName Num.127 Json.898; - let Json.893 : List U8 = CallByName List.4 Json.896 Json.897; - let Json.895 : I64 = 58i64; - let Json.894 : U8 = CallByName Num.127 Json.895; - let Json.890 : List U8 = CallByName List.4 Json.893 Json.894; - let Json.892 : I64 = 91i64; - let Json.891 : U8 = CallByName Num.127 Json.892; - let Json.184 : List U8 = CallByName List.4 Json.890 Json.891; - let Json.889 : U64 = CallByName List.6 Json.180; - let Json.877 : {List U8, U64} = Struct {Json.184, Json.889}; let Json.878 : {} = Struct {}; - let Json.876 : {List U8, U64} = CallByName List.18 Json.180 Json.877 Json.878; - dec Json.180; - let Json.186 : List U8 = StructAtIndex 0 Json.876; + ret Json.878; + +procedure Json.188 (Json.189, Json.881, #Attr.12): + let Json.187 : List [C {}, C {}] = StructAtIndex 1 #Attr.12; + inc Json.187; + let Json.186 : Str = StructAtIndex 0 #Attr.12; inc Json.186; - dec Json.876; - let Json.875 : I64 = 93i64; - let Json.874 : U8 = CallByName Num.127 Json.875; - let Json.871 : List U8 = CallByName List.4 Json.186 Json.874; - let Json.873 : I64 = 125i64; - let Json.872 : U8 = CallByName Num.127 Json.873; - let Json.870 : List U8 = CallByName List.4 Json.871 Json.872; - ret Json.870; - -procedure Json.183 (Json.819, Json.189): - let Json.187 : List U8 = StructAtIndex 0 Json.819; - inc Json.187; - let Json.188 : U64 = StructAtIndex 1 Json.819; - dec Json.819; - let Json.838 : {} = Struct {}; - let Json.190 : List U8 = CallByName Encode.24 Json.187 Json.189 Json.838; - joinpoint Json.833 Json.191: - let Json.831 : U64 = 1i64; - let Json.830 : U64 = CallByName Num.20 Json.188 Json.831; - let Json.829 : {List U8, U64} = Struct {Json.191, Json.830}; - ret Json.829; - in - let Json.837 : U64 = 1i64; - let Json.834 : Int1 = CallByName Num.24 Json.188 Json.837; - if Json.834 then - let Json.836 : I64 = 44i64; - let Json.835 : U8 = CallByName Num.127 Json.836; - let Json.832 : List U8 = CallByName List.4 Json.190 Json.835; - jump Json.833 Json.832; - else - jump Json.833 Json.190; - -procedure Json.183 (Json.819, Json.189): - let Json.187 : List U8 = StructAtIndex 0 Json.819; - inc Json.187; - let Json.188 : U64 = StructAtIndex 1 Json.819; - dec Json.819; - let Json.888 : {} = Struct {}; - let Json.190 : List U8 = CallByName Encode.24 Json.187 Json.189 Json.888; + dec #Attr.12; + let Json.919 : I64 = 123i64; + let Json.918 : U8 = CallByName Num.127 Json.919; + let Json.915 : List U8 = CallByName List.4 Json.189 Json.918; + let Json.917 : I64 = 34i64; + let Json.916 : U8 = CallByName Num.127 Json.917; + let Json.913 : List U8 = CallByName List.4 Json.915 Json.916; + let Json.914 : List U8 = CallByName Str.12 Json.186; + let Json.910 : List U8 = CallByName List.8 Json.913 Json.914; + let Json.912 : I64 = 34i64; + let Json.911 : U8 = CallByName Num.127 Json.912; + let Json.907 : List U8 = CallByName List.4 Json.910 Json.911; + let Json.909 : I64 = 58i64; + let Json.908 : U8 = CallByName Num.127 Json.909; + let Json.904 : List U8 = CallByName List.4 Json.907 Json.908; + let Json.906 : I64 = 91i64; + let Json.905 : U8 = CallByName Num.127 Json.906; + let Json.191 : List U8 = CallByName List.4 Json.904 Json.905; + let Json.903 : U64 = CallByName List.6 Json.187; + let Json.891 : {List U8, U64} = Struct {Json.191, Json.903}; + let Json.892 : {} = Struct {}; + let Json.890 : {List U8, U64} = CallByName List.18 Json.187 Json.891 Json.892; dec Json.187; - joinpoint Json.883 Json.191: - let Json.881 : U64 = 1i64; - let Json.880 : U64 = CallByName Num.20 Json.188 Json.881; - let Json.879 : {List U8, U64} = Struct {Json.191, Json.880}; - ret Json.879; + let Json.193 : List U8 = StructAtIndex 0 Json.890; + inc Json.193; + dec Json.890; + let Json.889 : I64 = 93i64; + let Json.888 : U8 = CallByName Num.127 Json.889; + let Json.885 : List U8 = CallByName List.4 Json.193 Json.888; + let Json.887 : I64 = 125i64; + let Json.886 : U8 = CallByName Num.127 Json.887; + let Json.884 : List U8 = CallByName List.4 Json.885 Json.886; + ret Json.884; + +procedure Json.188 (Json.189, Json.881, #Attr.12): + let Json.187 : List [] = StructAtIndex 1 #Attr.12; + inc Json.187; + let Json.186 : Str = StructAtIndex 0 #Attr.12; + inc Json.186; + dec #Attr.12; + let Json.969 : I64 = 123i64; + let Json.968 : U8 = CallByName Num.127 Json.969; + let Json.965 : List U8 = CallByName List.4 Json.189 Json.968; + let Json.967 : I64 = 34i64; + let Json.966 : U8 = CallByName Num.127 Json.967; + let Json.963 : List U8 = CallByName List.4 Json.965 Json.966; + let Json.964 : List U8 = CallByName Str.12 Json.186; + let Json.960 : List U8 = CallByName List.8 Json.963 Json.964; + let Json.962 : I64 = 34i64; + let Json.961 : U8 = CallByName Num.127 Json.962; + let Json.957 : List U8 = CallByName List.4 Json.960 Json.961; + let Json.959 : I64 = 58i64; + let Json.958 : U8 = CallByName Num.127 Json.959; + let Json.954 : List U8 = CallByName List.4 Json.957 Json.958; + let Json.956 : I64 = 91i64; + let Json.955 : U8 = CallByName Num.127 Json.956; + let Json.191 : List U8 = CallByName List.4 Json.954 Json.955; + let Json.953 : U64 = CallByName List.6 Json.187; + let Json.941 : {List U8, U64} = Struct {Json.191, Json.953}; + let Json.942 : {} = Struct {}; + let Json.940 : {List U8, U64} = CallByName List.18 Json.187 Json.941 Json.942; + dec Json.187; + let Json.193 : List U8 = StructAtIndex 0 Json.940; + inc Json.193; + dec Json.940; + let Json.939 : I64 = 93i64; + let Json.938 : U8 = CallByName Num.127 Json.939; + let Json.935 : List U8 = CallByName List.4 Json.193 Json.938; + let Json.937 : I64 = 125i64; + let Json.936 : U8 = CallByName Num.127 Json.937; + let Json.934 : List U8 = CallByName List.4 Json.935 Json.936; + ret Json.934; + +procedure Json.190 (Json.883, Json.196): + let Json.194 : List U8 = StructAtIndex 0 Json.883; + inc Json.194; + let Json.195 : U64 = StructAtIndex 1 Json.883; + dec Json.883; + let Json.902 : {} = Struct {}; + let Json.197 : List U8 = CallByName Encode.24 Json.194 Json.196 Json.902; + joinpoint Json.897 Json.198: + let Json.895 : U64 = 1i64; + let Json.894 : U64 = CallByName Num.20 Json.195 Json.895; + let Json.893 : {List U8, U64} = Struct {Json.198, Json.894}; + ret Json.893; in - let Json.887 : U64 = 1i64; - let Json.884 : Int1 = CallByName Num.24 Json.188 Json.887; - if Json.884 then - let Json.886 : I64 = 44i64; - let Json.885 : U8 = CallByName Num.127 Json.886; - let Json.882 : List U8 = CallByName List.4 Json.190 Json.885; - jump Json.883 Json.882; + let Json.901 : U64 = 1i64; + let Json.898 : Int1 = CallByName Num.24 Json.195 Json.901; + if Json.898 then + let Json.900 : I64 = 44i64; + let Json.899 : U8 = CallByName Num.127 Json.900; + let Json.896 : List U8 = CallByName List.4 Json.197 Json.899; + jump Json.897 Json.896; else - jump Json.883 Json.190; + jump Json.897 Json.197; -procedure Json.26 (Json.179, Json.180): - let Json.857 : {Str, List [C {}, C {}]} = Struct {Json.179, Json.180}; - let Json.856 : {Str, List [C {}, C {}]} = CallByName Encode.23 Json.857; - ret Json.856; +procedure Json.190 (Json.883, Json.196): + let Json.194 : List U8 = StructAtIndex 0 Json.883; + inc Json.194; + let Json.195 : U64 = StructAtIndex 1 Json.883; + dec Json.883; + let Json.952 : {} = Struct {}; + let Json.197 : List U8 = CallByName Encode.24 Json.194 Json.196 Json.952; + dec Json.194; + joinpoint Json.947 Json.198: + let Json.945 : U64 = 1i64; + let Json.944 : U64 = CallByName Num.20 Json.195 Json.945; + let Json.943 : {List U8, U64} = Struct {Json.198, Json.944}; + ret Json.943; + in + let Json.951 : U64 = 1i64; + let Json.948 : Int1 = CallByName Num.24 Json.195 Json.951; + if Json.948 then + let Json.950 : I64 = 44i64; + let Json.949 : U8 = CallByName Num.127 Json.950; + let Json.946 : List U8 = CallByName List.4 Json.197 Json.949; + jump Json.947 Json.946; + else + jump Json.947 Json.197; -procedure Json.26 (Json.179, Json.180): - let Json.907 : {Str, List []} = Struct {Json.179, Json.180}; - let Json.906 : {Str, List []} = CallByName Encode.23 Json.907; - ret Json.906; +procedure Json.27 (Json.186, Json.187): + let Json.921 : {Str, List [C {}, C {}]} = Struct {Json.186, Json.187}; + let Json.920 : {Str, List [C {}, C {}]} = CallByName Encode.23 Json.921; + ret Json.920; + +procedure Json.27 (Json.186, Json.187): + let Json.971 : {Str, List []} = Struct {Json.186, Json.187}; + let Json.970 : {Str, List []} = CallByName Encode.23 Json.971; + ret Json.970; procedure List.139 (List.140, List.141, List.138): - let List.539 : {List U8, U64} = CallByName Json.183 List.140 List.141; + let List.539 : {List U8, U64} = CallByName Json.190 List.140 List.141; ret List.539; procedure List.139 (List.140, List.141, List.138): - let List.612 : {List U8, U64} = CallByName Json.183 List.140 List.141; + let List.612 : {List U8, U64} = CallByName Json.190 List.140 List.141; ret List.612; procedure List.18 (List.136, List.137, List.138): @@ -354,14 +354,14 @@ procedure Test.5 (Test.6, Test.7, Test.4): let Test.32 : {} = StructAtIndex 0 Test.4; let Test.31 : [C {}, C {}] = CallByName #Derived.0 Test.32; let Test.30 : List [C {}, C {}] = Array [Test.31]; - let Test.22 : {Str, List [C {}, C {}]} = CallByName Json.26 Test.29 Test.30; + let Test.22 : {Str, List [C {}, C {}]} = CallByName Json.27 Test.29 Test.30; jump Test.23 Test.22; else let Test.24 : Str = "B"; let Test.27 : {} = StructAtIndex 1 Test.4; let Test.26 : [C {}, C {}] = CallByName #Derived.5 Test.27; let Test.25 : List [C {}, C {}] = Array [Test.26]; - let Test.22 : {Str, List [C {}, C {}]} = CallByName Json.26 Test.24 Test.25; + let Test.22 : {Str, List [C {}, C {}]} = CallByName Json.27 Test.24 Test.25; jump Test.23 Test.22; procedure Test.0 ():