138 lines
3.5 KiB
Markdown
138 lines
3.5 KiB
Markdown
# View Contract Demos
|
|
|
|
These demos exercise the finalized View Contract stack in `lib/view.tri`:
|
|
portable View Trees/checkable typed-program nodes, structural View flow checks,
|
|
runtime guarded Views, checked-exec, source annotations, and module-boundary
|
|
View metadata.
|
|
|
|
## End-user guide
|
|
|
|
Start here. `demos/viewContracts.tri` is written with normal source annotation
|
|
sugar and reads as a short guide to View Contracts: motivating structural
|
|
mismatches, explaining plain Views, noting why this is not a full static type
|
|
system, and building a custom `NonEmptyList` guarded View.
|
|
|
|
```bash
|
|
tricu check demos/viewContracts.tri
|
|
```
|
|
|
|
Expected output:
|
|
|
|
```text
|
|
ok
|
|
```
|
|
|
|
## Complete explicit demo
|
|
|
|
`demos/viewContracts/complete.tri` shows the same layer from the portable
|
|
View Tree/checkable-program side. It uses explicit builders such as
|
|
`typedValue`, `typedRequire`, and `typedApply`, and demonstrates contextual guard
|
|
diagnostics, observation composition, reachability, and malformed guard output.
|
|
|
|
```bash
|
|
tricu eval demos/viewContracts/complete.tri -f decode
|
|
```
|
|
|
|
## Portable checker self-tests
|
|
|
|
Runs the checker self-test suite carried as ordinary `tricu` code.
|
|
|
|
```bash
|
|
tricu eval demos/viewContracts/selfTests.tri -f decode
|
|
```
|
|
|
|
Expected output is a list of `"ok"` strings.
|
|
|
|
## Diagnostic rendering
|
|
|
|
Shows a strict-mode structural View failure rendered for humans.
|
|
|
|
```bash
|
|
tricu eval demos/viewContracts/diagnostic.tri -f decode
|
|
```
|
|
|
|
Expected output:
|
|
|
|
```text
|
|
"symbol 162 expected List Bool but got List String"
|
|
```
|
|
|
|
## Stdlib-shaped contracts
|
|
|
|
Checks successful higher-order contracts shaped like common stdlib APIs.
|
|
|
|
```bash
|
|
tricu eval demos/viewContracts/stdlibContracts.tri -f decode
|
|
```
|
|
|
|
Expected output:
|
|
|
|
```text
|
|
["ok", "ok", "ok", "ok", "ok"]
|
|
```
|
|
|
|
These examples are structural View checks, not runtime guarded checks.
|
|
|
|
## Frontend emission layer
|
|
|
|
`frontendEmission/` documents the portable artifact shape a frontend can emit
|
|
after parsing/elaboration. The `*.source.txt` files are pseudo-source; the
|
|
matching `*.emitted.tri` files are explicit typed-program builder output.
|
|
|
|
This layer is still instructive because it shows the exact bridge between source
|
|
syntax and portable View Tree/checkable metadata.
|
|
|
|
## Source syntax sugar
|
|
|
|
The `sourceSyntax/` demos use ergonomic annotations and the `tricu check`
|
|
frontend. The frontend lowers annotations to the same typed-program nodes used by
|
|
the explicit demos above, then executes checked-exec so guarded annotations fail
|
|
through the portable runner.
|
|
|
|
Successful check:
|
|
|
|
```bash
|
|
tricu check demos/viewContracts/sourceSyntax/success.tri
|
|
```
|
|
|
|
Expected output:
|
|
|
|
```text
|
|
ok
|
|
```
|
|
|
|
Labeled diagnostic check:
|
|
|
|
```bash
|
|
tricu check demos/viewContracts/sourceSyntax/failure.tri
|
|
```
|
|
|
|
Expected first failing diagnostic:
|
|
|
|
```text
|
|
symbol 4 (x) expected Bool but got String
|
|
```
|
|
|
|
If the first definition is fixed or removed, the later application-result
|
|
failure demonstrates callee-aware labels:
|
|
|
|
```text
|
|
symbol 3 (g application result) expected String but got Bool
|
|
```
|
|
|
|
## Module boundary layer
|
|
|
|
`modules/` shows producer-checked module export Views flowing into a consumer
|
|
check as module-boundary evidence. During auto-build, annotated exports are
|
|
checked before the module manifest alias is published. Consumers then use the
|
|
manifest's View Contract metadata as assumptions, while compatibility is still
|
|
judged by `lib/view.tri`.
|
|
|
|
```bash
|
|
tricu check demos/viewContracts/modules/success.tri
|
|
# ok
|
|
|
|
tricu check demos/viewContracts/modules/failure.tri
|
|
# symbol 3 (Util.toString application result) expected Bool but got String
|
|
```
|