unison/unison-src/transcripts/patternMatchTls.output.md

50 lines
1.1 KiB
Markdown
Raw Permalink Normal View History

2024-04-15 02:57:08 +03:00
We had bugs in the calling conventions for both send and terminate which would
2023-02-08 00:51:04 +03:00
cause pattern matching on the resulting (Right ()) would cause a runtime error.
``` unison
use builtin.io2.Tls newClient send handshake terminate
2023-02-08 00:51:04 +03:00
frank: '{IO} ()
2024-04-15 02:57:08 +03:00
frank = do
2023-02-27 19:30:44 +03:00
socket = assertRight (clientSocket.impl "example.com" "443")
config = ClientConfig.default "example.com" 0xs
2023-02-27 19:30:44 +03:00
tls = assertRight (newClient.impl config socket)
() = assertRight (handshake.impl tls)
() = assertRight (send.impl tls 0xs)
() = assertRight (terminate.impl tls)
()
2023-02-27 19:30:44 +03:00
assertRight : Either a b -> b
assertRight = cases
Right x -> x
Left _ -> bug "expected a right but got a left"
```
``` ucm
Loading changes detected in scratch.u.
I found and typechecked these definitions in scratch.u. If you
do an `add` or `update`, here's how your codebase would
change:
⍟ These new definitions are ok to `add`:
2023-02-27 19:30:44 +03:00
assertRight : Either a b -> b
frank : '{IO} ()
```
``` ucm
scratch/main> add
⍟ I've added these definitions:
2023-02-27 19:30:44 +03:00
assertRight : Either a b -> b
frank : '{IO} ()
scratch/main> run frank
2023-02-08 00:51:04 +03:00
()
```