{ "kind": "File", "span": { "file_id": 0, "start": 79, "end": 1181 }, "imports": [], "decls": [ { "kind": "TypeDecl", "span": { "file_id": 0, "start": 79, "end": 224 }, "vis": null, "type_kind": "struct", "name": "Color", "is_host": false, "params": [ { "span": { "file_id": 0, "start": 100, "end": 112 }, "name": "raw", "ty": { "kind": "TypeName", "span": { "file_id": 0, "start": 105, "end": 112 }, "name": "bounded" } } ], "constructors": [], "constants": [ { "span": { "file_id": 0, "start": 119, "end": 135 }, "name": "BLACK", "value": { "kind": "Call", "span": { "file_id": 0, "start": 126, "end": 135 }, "callee": { "kind": "Ident", "span": { "file_id": 0, "start": 126, "end": 131 }, "name": "Color" }, "args": [ { "kind": "BoundedLit", "span": { "file_id": 0, "start": 132, "end": 134 }, "value": 0 } ] } }, { "span": { "file_id": 0, "start": 139, "end": 159 }, "name": "WHITE", "value": { "kind": "Call", "span": { "file_id": 0, "start": 146, "end": 159 }, "callee": { "kind": "Ident", "span": { "file_id": 0, "start": 146, "end": 151 }, "name": "Color" }, "args": [ { "kind": "BoundedLit", "span": { "file_id": 0, "start": 152, "end": 158 }, "value": 65535 } ] } }, { "span": { "file_id": 0, "start": 163, "end": 181 }, "name": "RED", "value": { "kind": "Call", "span": { "file_id": 0, "start": 168, "end": 181 }, "callee": { "kind": "Ident", "span": { "file_id": 0, "start": 168, "end": 173 }, "name": "Color" }, "args": [ { "kind": "BoundedLit", "span": { "file_id": 0, "start": 174, "end": 180 }, "value": 63488 } ] } }, { "span": { "file_id": 0, "start": 185, "end": 204 }, "name": "GREEN", "value": { "kind": "Call", "span": { "file_id": 0, "start": 192, "end": 204 }, "callee": { "kind": "Ident", "span": { "file_id": 0, "start": 192, "end": 197 }, "name": "Color" }, "args": [ { "kind": "BoundedLit", "span": { "file_id": 0, "start": 198, "end": 203 }, "value": 2016 } ] } }, { "span": { "file_id": 0, "start": 208, "end": 224 }, "name": "BLUE", "value": { "kind": "Call", "span": { "file_id": 0, "start": 214, "end": 224 }, "callee": { "kind": "Ident", "span": { "file_id": 0, "start": 214, "end": 219 }, "name": "Color" }, "args": [ { "kind": "BoundedLit", "span": { "file_id": 0, "start": 220, "end": 223 }, "value": 31 } ] } } ], "body": null }, { "kind": "TypeDecl", "span": { "file_id": 0, "start": 229, "end": 336 }, "vis": null, "type_kind": "struct", "name": "ButtonState", "is_host": false, "params": [ { "span": { "file_id": 0, "start": 261, "end": 274 }, "name": "pressed", "ty": { "kind": "TypeName", "span": { "file_id": 0, "start": 270, "end": 274 }, "name": "bool" } }, { "span": { "file_id": 0, "start": 280, "end": 294 }, "name": "released", "ty": { "kind": "TypeName", "span": { "file_id": 0, "start": 290, "end": 294 }, "name": "bool" } }, { "span": { "file_id": 0, "start": 300, "end": 310 }, "name": "down", "ty": { "kind": "TypeName", "span": { "file_id": 0, "start": 306, "end": 310 }, "name": "bool" } }, { "span": { "file_id": 0, "start": 316, "end": 336 }, "name": "hold_frames", "ty": { "kind": "TypeName", "span": { "file_id": 0, "start": 329, "end": 336 }, "name": "bounded" } } ], "constructors": [], "constants": [], "body": null }, { "kind": "TypeDecl", "span": { "file_id": 0, "start": 340, "end": 618 }, "vis": null, "type_kind": "struct", "name": "Pad", "is_host": false, "params": [ { "span": { "file_id": 0, "start": 364, "end": 379 }, "name": "up", "ty": { "kind": "TypeName", "span": { "file_id": 0, "start": 368, "end": 379 }, "name": "ButtonState" } }, { "span": { "file_id": 0, "start": 385, "end": 402 }, "name": "down", "ty": { "kind": "TypeName", "span": { "file_id": 0, "start": 391, "end": 402 }, "name": "ButtonState" } }, { "span": { "file_id": 0, "start": 408, "end": 425 }, "name": "left", "ty": { "kind": "TypeName", "span": { "file_id": 0, "start": 414, "end": 425 }, "name": "ButtonState" } }, { "span": { "file_id": 0, "start": 431, "end": 449 }, "name": "right", "ty": { "kind": "TypeName", "span": { "file_id": 0, "start": 438, "end": 449 }, "name": "ButtonState" } }, { "span": { "file_id": 0, "start": 455, "end": 469 }, "name": "a", "ty": { "kind": "TypeName", "span": { "file_id": 0, "start": 458, "end": 469 }, "name": "ButtonState" } }, { "span": { "file_id": 0, "start": 475, "end": 489 }, "name": "b", "ty": { "kind": "TypeName", "span": { "file_id": 0, "start": 478, "end": 489 }, "name": "ButtonState" } }, { "span": { "file_id": 0, "start": 495, "end": 509 }, "name": "x", "ty": { "kind": "TypeName", "span": { "file_id": 0, "start": 498, "end": 509 }, "name": "ButtonState" } }, { "span": { "file_id": 0, "start": 515, "end": 529 }, "name": "y", "ty": { "kind": "TypeName", "span": { "file_id": 0, "start": 518, "end": 529 }, "name": "ButtonState" } }, { "span": { "file_id": 0, "start": 535, "end": 549 }, "name": "l", "ty": { "kind": "TypeName", "span": { "file_id": 0, "start": 538, "end": 549 }, "name": "ButtonState" } }, { "span": { "file_id": 0, "start": 555, "end": 569 }, "name": "r", "ty": { "kind": "TypeName", "span": { "file_id": 0, "start": 558, "end": 569 }, "name": "ButtonState" } }, { "span": { "file_id": 0, "start": 575, "end": 593 }, "name": "start", "ty": { "kind": "TypeName", "span": { "file_id": 0, "start": 582, "end": 593 }, "name": "ButtonState" } }, { "span": { "file_id": 0, "start": 599, "end": 618 }, "name": "select", "ty": { "kind": "TypeName", "span": { "file_id": 0, "start": 607, "end": 618 }, "name": "ButtonState" } } ], "constructors": [], "constants": [], "body": null }, { "kind": "TypeDecl", "span": { "file_id": 0, "start": 622, "end": 685 }, "vis": null, "type_kind": "contract", "name": "Gfx", "is_host": true, "params": [], "constructors": [], "constants": [], "body": { "kind": "TypeBody", "span": { "file_id": 0, "start": 648, "end": 685 }, "members": [], "methods": [ { "span": { "file_id": 0, "start": 654, "end": 682 }, "name": "clear", "params": [ { "span": { "file_id": 0, "start": 663, "end": 675 }, "name": "color", "ty": { "kind": "TypeName", "span": { "file_id": 0, "start": 670, "end": 675 }, "name": "Color" } } ], "ret": { "kind": "TypeName", "span": { "file_id": 0, "start": 678, "end": 682 }, "name": "void" } } ] } }, { "kind": "TypeDecl", "span": { "file_id": 0, "start": 687, "end": 737 }, "vis": null, "type_kind": "contract", "name": "Input", "is_host": true, "params": [], "constructors": [], "constants": [], "body": { "kind": "TypeBody", "span": { "file_id": 0, "start": 715, "end": 737 }, "members": [], "methods": [ { "span": { "file_id": 0, "start": 721, "end": 734 }, "name": "pad", "params": [], "ret": { "kind": "TypeName", "span": { "file_id": 0, "start": 731, "end": 734 }, "name": "Pad" } } ] } }, { "kind": "FnDecl", "span": { "file_id": 0, "start": 739, "end": 788 }, "vis": null, "name": "add", "params": [ { "span": { "file_id": 0, "start": 746, "end": 752 }, "name": "a", "ty": { "kind": "TypeName", "span": { "file_id": 0, "start": 749, "end": 752 }, "name": "int" } }, { "span": { "file_id": 0, "start": 754, "end": 760 }, "name": "b", "ty": { "kind": "TypeName", "span": { "file_id": 0, "start": 757, "end": 760 }, "name": "int" } } ], "ret": { "kind": "TypeName", "span": { "file_id": 0, "start": 763, "end": 766 }, "name": "int" }, "else_fallback": null, "body": { "kind": "Block", "span": { "file_id": 0, "start": 767, "end": 788 }, "stmts": [ { "kind": "ReturnStmt", "span": { "file_id": 0, "start": 773, "end": 786 }, "expr": { "kind": "Binary", "span": { "file_id": 0, "start": 780, "end": 785 }, "op": "+", "left": { "kind": "Ident", "span": { "file_id": 0, "start": 780, "end": 781 }, "name": "a" }, "right": { "kind": "Ident", "span": { "file_id": 0, "start": 784, "end": 785 }, "name": "b" } } } ], "tail": null } }, { "kind": "FnDecl", "span": { "file_id": 0, "start": 790, "end": 1180 }, "vis": null, "name": "frame", "params": [], "ret": { "kind": "TypeName", "span": { "file_id": 0, "start": 802, "end": 806 }, "name": "void" }, "else_fallback": null, "body": { "kind": "Block", "span": { "file_id": 0, "start": 807, "end": 1180 }, "stmts": [ { "kind": "LetStmt", "span": { "file_id": 0, "start": 843, "end": 854 }, "name": "x", "is_mut": false, "ty": null, "init": { "kind": "IntLit", "span": { "file_id": 0, "start": 851, "end": 853 }, "value": 10 } }, { "kind": "LetStmt", "span": { "file_id": 0, "start": 859, "end": 870 }, "name": "y", "is_mut": false, "ty": null, "init": { "kind": "IntLit", "span": { "file_id": 0, "start": 867, "end": 869 }, "value": 20 } }, { "kind": "LetStmt", "span": { "file_id": 0, "start": 875, "end": 893 }, "name": "z", "is_mut": false, "ty": null, "init": { "kind": "Call", "span": { "file_id": 0, "start": 883, "end": 892 }, "callee": { "kind": "Ident", "span": { "file_id": 0, "start": 883, "end": 886 }, "name": "add" }, "args": [ { "kind": "Ident", "span": { "file_id": 0, "start": 887, "end": 888 }, "name": "x" }, { "kind": "Ident", "span": { "file_id": 0, "start": 890, "end": 891 }, "name": "y" } ] } }, { "kind": "ExprStmt", "span": { "file_id": 0, "start": 927, "end": 1049 }, "expr": { "kind": "IfExpr", "span": { "file_id": 0, "start": 927, "end": 1049 }, "cond": { "kind": "Binary", "span": { "file_id": 0, "start": 930, "end": 937 }, "op": "==", "left": { "kind": "Ident", "span": { "file_id": 0, "start": 930, "end": 931 }, "name": "z" }, "right": { "kind": "IntLit", "span": { "file_id": 0, "start": 935, "end": 937 }, "value": 30 } }, "then_block": { "kind": "Block", "span": { "file_id": 0, "start": 938, "end": 1006 }, "stmts": [ { "kind": "ExprStmt", "span": { "file_id": 0, "start": 976, "end": 999 }, "expr": { "kind": "Call", "span": { "file_id": 0, "start": 976, "end": 998 }, "callee": { "kind": "MemberAccess", "span": { "file_id": 0, "start": 976, "end": 985 }, "object": { "kind": "Ident", "span": { "file_id": 0, "start": 976, "end": 979 }, "name": "Gfx" }, "member": "clear" }, "args": [ { "kind": "MemberAccess", "span": { "file_id": 0, "start": 986, "end": 997 }, "object": { "kind": "Ident", "span": { "file_id": 0, "start": 986, "end": 991 }, "name": "Color" }, "member": "GREEN" } ] } } ], "tail": null }, "else_block": { "kind": "Block", "span": { "file_id": 0, "start": 1012, "end": 1049 }, "stmts": [ { "kind": "ExprStmt", "span": { "file_id": 0, "start": 1022, "end": 1043 }, "expr": { "kind": "Call", "span": { "file_id": 0, "start": 1022, "end": 1042 }, "callee": { "kind": "MemberAccess", "span": { "file_id": 0, "start": 1022, "end": 1031 }, "object": { "kind": "Ident", "span": { "file_id": 0, "start": 1022, "end": 1025 }, "name": "Gfx" }, "member": "clear" }, "args": [ { "kind": "MemberAccess", "span": { "file_id": 0, "start": 1032, "end": 1041 }, "object": { "kind": "Ident", "span": { "file_id": 0, "start": 1032, "end": 1037 }, "name": "Color" }, "member": "RED" } ] } } ], "tail": null } } }, { "kind": "LetStmt", "span": { "file_id": 0, "start": 1103, "end": 1123 }, "name": "p", "is_mut": false, "ty": null, "init": { "kind": "Call", "span": { "file_id": 0, "start": 1111, "end": 1122 }, "callee": { "kind": "MemberAccess", "span": { "file_id": 0, "start": 1111, "end": 1120 }, "object": { "kind": "Ident", "span": { "file_id": 0, "start": 1111, "end": 1116 }, "name": "Input" }, "member": "pad" }, "args": [] } } ], "tail": { "kind": "IfExpr", "span": { "file_id": 0, "start": 1128, "end": 1178 }, "cond": { "kind": "MemberAccess", "span": { "file_id": 0, "start": 1131, "end": 1139 }, "object": { "kind": "MemberAccess", "span": { "file_id": 0, "start": 1131, "end": 1134 }, "object": { "kind": "Ident", "span": { "file_id": 0, "start": 1131, "end": 1132 }, "name": "p" }, "member": "a" }, "member": "down" }, "then_block": { "kind": "Block", "span": { "file_id": 0, "start": 1140, "end": 1178 }, "stmts": [ { "kind": "ExprStmt", "span": { "file_id": 0, "start": 1150, "end": 1172 }, "expr": { "kind": "Call", "span": { "file_id": 0, "start": 1150, "end": 1171 }, "callee": { "kind": "MemberAccess", "span": { "file_id": 0, "start": 1150, "end": 1159 }, "object": { "kind": "Ident", "span": { "file_id": 0, "start": 1150, "end": 1153 }, "name": "Gfx" }, "member": "clear" }, "args": [ { "kind": "MemberAccess", "span": { "file_id": 0, "start": 1160, "end": 1170 }, "object": { "kind": "Ident", "span": { "file_id": 0, "start": 1160, "end": 1165 }, "name": "Color" }, "member": "BLUE" } ] } } ], "tail": null }, "else_block": null } } } ] }