From 4a83eb082eb4e6b3681e790014547a47a8dcc6d5 Mon Sep 17 00:00:00 2001 From: Neil Henderson <2060747+bluetarpmedia@users.noreply.github.com> Date: Fri, 15 Mar 2024 11:47:07 +1000 Subject: [PATCH] Fix typos in contracts.md (#1017) * 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 * 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 * 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 Co-authored-by: Herb Sutter * 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 * 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 Co-authored-by: Herb Sutter Co-authored-by: Dylam De La Torre Co-authored-by: gregmarr --- docs/cpp2/contracts.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/cpp2/contracts.md b/docs/cpp2/contracts.md index bf0675c6e..e6123d221 100644 --- a/docs/cpp2/contracts.md +++ b/docs/cpp2/contracts.md @@ -31,7 +31,7 @@ For example: ``` cpp title="Precondition and postcondition examples" hl_lines="2 3" insert_at: (container, where: int, val: int) - pre( 0 <= where <= vec.ssize(), "position (where)$ is outside 'val'" ) + pre( 0 <= where <= container.ssize(), "position (where)$ is outside 'container'" ) post ( container.ssize() == container.ssize()$ + 1 ) = { _ = container.insert( container.begin()+where, val ); @@ -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. @@ -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 @@ -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 `` 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 `` 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 =