You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* 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 <[email protected]>
* 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 <[email protected]>
* Changes to expressions.md (#986)
* Update expressions.md
Signed-off-by: Neil Henderson <[email protected]>
* Minor tweak to not lose "dynamic" types
---------
Signed-off-by: Neil Henderson <[email protected]>
Co-authored-by: Herb Sutter <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
* 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 <[email protected]>
Signed-off-by: Herb Sutter <[email protected]>
Co-authored-by: Herb Sutter <[email protected]>
* 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 <[email protected]>
* Tweak comments for divide example
---------
Signed-off-by: Neil Henderson <[email protected]>
Co-authored-by: Herb Sutter <[email protected]>
* Fill in some TODO's
* Add requires, namespaces, using, and namespace/type/function/object aliases
* Update aliases.md (#1005)
Signed-off-by: Neil Henderson <[email protected]>
* Add generality notes: Function defaults, and function <-> block/stmt unification
* Merge previous commit
* Update functions.md (#1011)
Signed-off-by: Neil Henderson <[email protected]>
* Update declarations.md (#1010)
Signed-off-by: Neil Henderson <[email protected]>
* Complete the metafunctions section
* Update metafunctions.md (#1015)
Signed-off-by: Neil Henderson <[email protected]>
* Add contracts documentation
* Remove modules documentation stub since that's not supported yet
* Fix comment typo
* Update contracts.md
Signed-off-by: Neil Henderson <[email protected]>
---------
Signed-off-by: Neil Henderson <[email protected]>
Signed-off-by: Herb Sutter <[email protected]>
Co-authored-by: Herb Sutter <[email protected]>
Co-authored-by: Dylam De La Torre <[email protected]>
Co-authored-by: gregmarr <[email protected]>
Copy file name to clipboardExpand all lines: docs/cpp2/contracts.md
+4-4Lines changed: 4 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -31,7 +31,7 @@ For example:
31
31
32
32
```cpp title="Precondition and postcondition examples" hl_lines="2 3"
33
33
insert_at: (container, where: int, val: int)
34
-
pre<bounds>( 0 <= where <= vec.ssize(), "position (where)$ is outside 'val'" )
34
+
pre<Bounds>( 0 <= where <= container.ssize(), "position (where)$ is outside 'container'" )
35
35
post ( container.ssize() == container.ssize()$ + 1 )
36
36
= {
37
37
_ = container.insert( container.begin()+where, val );
@@ -42,7 +42,7 @@ In this example:
42
42
43
43
- The `$` captures are performed before entering the function.
44
44
45
-
- 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.
45
+
- 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.
46
46
47
47
- The postcondition is part of the `Default` safety contract group. If the check fails, then `#!cpp cpp2::Default.report_violation()` is called.
48
48
@@ -57,7 +57,7 @@ Contract groups are useful to enable or disable or [set custom handlers](#violat
57
57
58
58
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.
59
59
60
-
For example, here are some ways to use contract groups, for convenience using [`cpp2::contract_group`](#violation_handlers) which is a convenient group type:
60
+
For example, here are some ways to use contract groups of type [`cpp2::contract_group`](#violation_handlers), which is a convenient group type:
group_a: cpp2::contract_group = (); // a global group
@@ -75,7 +75,7 @@ func: () = {
75
75
}
76
76
```
77
77
78
-
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:
78
+
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:
79
79
80
80
```cpp title="Example of using 'this' as a contract group, from cppfront 'reflect.h2'" hl_lines="8 9"
0 commit comments