Skip to content

Commit

Permalink
Fix typos in contracts.md (#1017)
Browse files Browse the repository at this point in the history
* Initial files to test MkDocs with Material

* Update checkout version

* Trying checkout with no version

* Back to v3

* Try renaming to docs

* Test push to renamed docs branch

* Try moving mkdocs.yml to root to unblock CI

* Further cleanup to get things in the right directories

* Finish moving from `/docs/docs` to `/docs`

Added local hosting instructions in the YAML file

This renders beautifully locally, but for some reason it doesn't render properly on GitHub Pages yet. One possible reason is the `pages-build-deployment` workflow that GitHub Pages created on my initial attempt to use Pages (before trying MkDocs) is still running (and I can't figure out how to get rid of it) and it appears to be interfering with the `docs` workflow I created for MkDocs

If someone has ideas on how to debug this, please open an issue or email me - thx!

* Add "Cppfront reference," and start writing "Cpp2 reference"

* Merged documentation from blog posts, and unary operators

`_` wildcard, including in `inspect` and explicit discard

Named `break` and `continue`

`type` declaration syntax

Explicit `this`

`operator=`

Chained comparisons

Metafunctions overview

`@enum` and `@flag_enum`

`@union`

* Integrate links to wiki design notes

* Add more sections

Type qualifiers
Binary operators
`is`
and update chained comparisons

* Add `as` and `inspect`

* Document declarations, improve `inspect` discussion

* Fix a few typos

* Add Hello-world xref

* Update mkdocs.yml

* Improve mixed files examples and flow

* Overview editorial improvements

* Minor cleanup

* docs: fix some typos and confusing wording (#976)

* docs: fix some typos and confusing wording

* restore std::ssize

* Fix table of content display -> rhs of page

* Add section navigation

Reorganize sources

Fix long code lines to avoid horizontal scroll bars

* Organize the welcome info into three pages

And try to use extra CSS to tweak the navigation pane

* Disable regression tests on this branch

* Add more types and `operator=` material

And do further cleanup on the docs structure

* Add keywords, objects, and heap allocation

* Add `main`

* Reviewing cppfront docs (#982)

* Reviewing cppfront docs

* integrations.md

* expressions and objects

* Fix "lines 8, 9, and 15" wording

* Mention UFCS

* Function outputs and explicit discard

* Add definite initialization section

And:
- add placeholder for contracts
- add some is/as side-by-side examples
- add parameter passing styles

* Update CTAD description in hello-world.md (#984)

Signed-off-by: Neil Henderson <2060747+bluetarpmedia@users.noreply.github.com>

* Embiggen text font, add `move` and `out` arguments

And code block cleanup:
- highlight key lines in all code blocks
- remove redundant "Example:" in code block titles
- add a chained comparisons example

* Fix small typo in common.md (#985)

Signed-off-by: Neil Henderson <2060747+bluetarpmedia@users.noreply.github.com>

* Changes to expressions.md (#986)

* Update expressions.md

Signed-off-by: Neil Henderson <2060747+bluetarpmedia@users.noreply.github.com>

* Minor tweak to not lose "dynamic" types

---------

Signed-off-by: Neil Henderson <2060747+bluetarpmedia@users.noreply.github.com>
Co-authored-by: Herb Sutter <herb.sutter@gmail.com>

* Another round of docs updates (#983)

* types

* metafunctions

* Taking a pass over the updates, and adding that `that` must be `in` or `move`

* Remove TODO comment for now

Not sure of its meaning, we can add again later

---------

Co-authored-by: Herb Sutter <herb.sutter@gmail.com>

* Add syntax highlighting for inline code blocks using `#!cpp` shebangs

Note: I deliberately did not add shebangs for:
- `inline code` that wouldn't benefit from them (e.g., had nothing significant to highlight) so as to keep the Markdown more readable
- `inline code` that I didn't want to highlight, mainly Cpp2 code that used Cpp1 reserved keywords in a non-reserved way (mainly metafunctions like @enum and @union)

* Move function calls to expressions

* Add capture section

And add Cpp1 lowering notes for parameter passing

* Add Mermaid build diagram

* Add TODO for `member = _;`

* Add interpolation formatting, and other minor cleanup

* Expand comparisons section

Also add short anchor names to all subsections that don't already have them
And make anchor names all lowercase-like-this

* Update declarations.md (#988)

Signed-off-by: Neil Henderson <2060747+bluetarpmedia@users.noreply.github.com>

* Follow up merge with additional examples, and update highlighted linenos

* Update Capture sections in expressions.md (#987)

* Update expressions.md

Signed-off-by: Neil Henderson <2060747+bluetarpmedia@users.noreply.github.com>

* Update highlighted linenos

And a couple of other fixes, including that I meant to write "ish" not "sh" (fixing my own typo!)

---------

Signed-off-by: Neil Henderson <2060747+bluetarpmedia@users.noreply.github.com>
Signed-off-by: Herb Sutter <herb.sutter@gmail.com>
Co-authored-by: Herb Sutter <herb.sutter@gmail.com>

* More docs reviews (#990)

* Add more functions material

Return values
Branches
Loops
Template parameters

* Changes to functions.md (#998)

* Update functions.md

Signed-off-by: Neil Henderson <2060747+bluetarpmedia@users.noreply.github.com>

* Tweak comments for divide example

---------

Signed-off-by: Neil Henderson <2060747+bluetarpmedia@users.noreply.github.com>
Co-authored-by: Herb Sutter <herb.sutter@gmail.com>

* Fill in some TODO's

* Add requires, namespaces, using, and namespace/type/function/object aliases

* Update aliases.md (#1005)

Signed-off-by: Neil Henderson <2060747+bluetarpmedia@users.noreply.github.com>

* Add generality notes: Function defaults, and function <-> block/stmt unification

* Merge previous commit

* Update functions.md (#1011)

Signed-off-by: Neil Henderson <2060747+bluetarpmedia@users.noreply.github.com>

* Update declarations.md (#1010)

Signed-off-by: Neil Henderson <2060747+bluetarpmedia@users.noreply.github.com>

* Complete the metafunctions section

* Update metafunctions.md (#1015)

Signed-off-by: Neil Henderson <2060747+bluetarpmedia@users.noreply.github.com>

* Add contracts documentation

* Remove modules documentation stub since that's not supported yet

* Fix comment typo

* Update contracts.md

Signed-off-by: Neil Henderson <2060747+bluetarpmedia@users.noreply.github.com>

---------

Signed-off-by: Neil Henderson <2060747+bluetarpmedia@users.noreply.github.com>
Signed-off-by: Herb Sutter <herb.sutter@gmail.com>
Co-authored-by: Herb Sutter <herb.sutter@gmail.com>
Co-authored-by: Dylam De La Torre <DyXel04@gmail.com>
Co-authored-by: gregmarr <gregmarr@users.noreply.github.com>
  • Loading branch information
4 people authored Mar 15, 2024
1 parent f65c153 commit 4a83eb0
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions docs/cpp2/contracts.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ For example:

``` cpp title="Precondition and postcondition examples" hl_lines="2 3"
insert_at: (container, where: int, val: int)
pre<bounds>( 0 <= where <= vec.ssize(), "position (where)$ is outside 'val'" )
pre<Bounds>( 0 <= where <= container.ssize(), "position (where)$ is outside 'container'" )
post ( container.ssize() == container.ssize()$ + 1 )
= {
_ = container.insert( container.begin()+where, val );
Expand All @@ -42,7 +42,7 @@ In this example:
- The `$` captures are performed before entering the function.
- The precondition is part of the `Bounds` safety contract group and is checked before entering the function. If the check fails, say because `where` is `#!cpp -1`, then `#!cpp cpp2::Bounds.report_violation("position -1 is outside 'val'")` is called.
- The precondition is part of the `Bounds` safety contract group and is checked before entering the function. If the check fails, say because `where` is `#!cpp -1`, then `#!cpp cpp2::Bounds.report_violation("position -1 is outside 'container'")` is called.
- The postcondition is part of the `Default` safety contract group. If the check fails, then `#!cpp cpp2::Default.report_violation()` is called.
Expand All @@ -57,7 +57,7 @@ Contract groups are useful to enable or disable or [set custom handlers](#violat
You can create new contract groups just by creating new objects that have a `.report_violation` function. The object's name is the contract group's name. The object can be at any scope: local, global, or heap.
For example, here are some ways to use contract groups, for convenience using [`cpp2::contract_group`](#violation_handlers) which is a convenient group type:
For example, here are some ways to use contract groups of type [`cpp2::contract_group`](#violation_handlers), which is a convenient group type:
``` cpp title="Using contract groups" hl_lines="1 4 6 10-12"
group_a: cpp2::contract_group = (); // a global group
Expand All @@ -75,7 +75,7 @@ func: () = {
}
```

You can make all the objects in a class hierarchy into a contract group by having a `.report_violation` function in a base class, and then writing contracts in that hierarchy using `<this>` as desired. This technique used in cppfront's own reflection API:
You can make all the objects in a class hierarchy into a contract group by having a `.report_violation` function in a base class, and then writing contracts in that hierarchy using `<this>` as desired. This technique is used in cppfront's own reflection API:

``` cpp title="Example of using 'this' as a contract group, from cppfront 'reflect.h2'" hl_lines="8 9"
function_declaration: @copyable type =
Expand Down

0 comments on commit 4a83eb0

Please sign in to comment.