fun test() -> bool { true and false or false and !true } // @no-errors // @compiles-to: // | function << module >> (0 args, 0 locals): // | strings (0): // | code (2): // | 0: PushNothing // | 1: Return // | function test (0 args, 0 locals): // | strings (0): // | code (15): // | 0: PushTrue // | 1: JumpFalse(4) // | 2: PushTrue // | 3: Jump(5) // | 4: PushFalse // | 5: JumpTrue(8) // | 6: PushTrue // | 7: Jump(14) // | 8: PushFalse // | 9: JumpFalse(12) // | 10: PushTrue // | 11: Jump(14) // | 12: PushTrue // | 13: BoolNot // | 14: Return // | // @eval: Bool(false) // @type: 15 bool // @concrete: // | File // | FunctionDecl // | Fun:'"fun"' // | Identifier:'"test"' // | ParamList // | LeftParen:'"("' // | RightParen:'")"' // | ReturnType // | Arrow:'"->"' // | TypeExpression // | Identifier:'"bool"' // | Block // | LeftBrace:'"{"' // | ExpressionStatement // | BinaryExpression // | BinaryExpression // | LiteralExpression // | True:'"true"' // | And:'"and"' // | LiteralExpression // | False:'"false"' // | Or:'"or"' // | BinaryExpression // | LiteralExpression // | False:'"false"' // | And:'"and"' // | UnaryExpression // | Bang:'"!"' // | LiteralExpression // | True:'"true"' // | RightBrace:'"}"' //