Fix heading levels in the query chapter (#1305)
This should fix the incorrect TOC rendering in #1303.
This commit is contained in:
parent
8c29f8a37c
commit
6d4d4c47d7
14
src/query.md
14
src/query.md
|
|
@ -43,7 +43,7 @@ compiler (for example, generating [MIR](./mir/)) currently work exactly like thi
|
||||||
in-depth description of what queries are and how they work.
|
in-depth description of what queries are and how they work.
|
||||||
If you intend to write a query of your own, this is a good read.
|
If you intend to write a query of your own, this is a good read.
|
||||||
|
|
||||||
### Invoking queries
|
## Invoking queries
|
||||||
|
|
||||||
Invoking a query is simple. The [`TyCtxt`] ("type context") struct offers a method
|
Invoking a query is simple. The [`TyCtxt`] ("type context") struct offers a method
|
||||||
for each defined query. For example, to invoke the `type_of`
|
for each defined query. For example, to invoke the `type_of`
|
||||||
|
|
@ -55,7 +55,7 @@ let ty = tcx.type_of(some_def_id);
|
||||||
|
|
||||||
[`TyCtxt`]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_middle/ty/struct.TyCtxt.html
|
[`TyCtxt`]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_middle/ty/struct.TyCtxt.html
|
||||||
|
|
||||||
### How the compiler executes a query
|
## How the compiler executes a query
|
||||||
|
|
||||||
So you may be wondering what happens when you invoke a query
|
So you may be wondering what happens when you invoke a query
|
||||||
method. The answer is that, for each query, the compiler maintains a
|
method. The answer is that, for each query, the compiler maintains a
|
||||||
|
|
@ -64,7 +64,7 @@ simple: we clone the return value out of the cache and return it
|
||||||
(therefore, you should try to ensure that the return types of queries
|
(therefore, you should try to ensure that the return types of queries
|
||||||
are cheaply cloneable; insert an `Rc` if necessary).
|
are cheaply cloneable; insert an `Rc` if necessary).
|
||||||
|
|
||||||
#### Providers
|
### Providers
|
||||||
|
|
||||||
If, however, the query is *not* in the cache, then the compiler will
|
If, however, the query is *not* in the cache, then the compiler will
|
||||||
try to find a suitable **provider**. A provider is a function that has
|
try to find a suitable **provider**. A provider is a function that has
|
||||||
|
|
@ -97,7 +97,7 @@ fn provider<'tcx>(
|
||||||
Providers take two arguments: the `tcx` and the query key.
|
Providers take two arguments: the `tcx` and the query key.
|
||||||
They return the result of the query.
|
They return the result of the query.
|
||||||
|
|
||||||
#### How providers are setup
|
### How providers are setup
|
||||||
|
|
||||||
When the tcx is created, it is given the providers by its creator using
|
When the tcx is created, it is given the providers by its creator using
|
||||||
the [`Providers`][providers_struct] struct. This struct is generated by
|
the [`Providers`][providers_struct] struct. This struct is generated by
|
||||||
|
|
@ -164,7 +164,7 @@ they define both a `provide` and a `provide_extern` function, through
|
||||||
[rustc_metadata]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_metadata/index.html
|
[rustc_metadata]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_metadata/index.html
|
||||||
[wasm_import_module_map]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_codegen_ssa/back/symbol_export/fn.wasm_import_module_map.html
|
[wasm_import_module_map]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_codegen_ssa/back/symbol_export/fn.wasm_import_module_map.html
|
||||||
|
|
||||||
### Adding a new query
|
## Adding a new query
|
||||||
|
|
||||||
How do you add a new query?
|
How do you add a new query?
|
||||||
Defining a query takes place in two steps:
|
Defining a query takes place in two steps:
|
||||||
|
|
@ -238,7 +238,7 @@ which is used to cheaply modify MIR in place. See the definition
|
||||||
of `Steal` for more details. New uses of `Steal` should **not** be
|
of `Steal` for more details. New uses of `Steal` should **not** be
|
||||||
added without alerting `@rust-lang/compiler`.
|
added without alerting `@rust-lang/compiler`.
|
||||||
|
|
||||||
#### Query structs and descriptions
|
### Query structs and descriptions
|
||||||
|
|
||||||
For each query, the `rustc_queries` macro will generate a "query struct"
|
For each query, the `rustc_queries` macro will generate a "query struct"
|
||||||
named after the query. This struct is a kind of placeholder
|
named after the query. This struct is a kind of placeholder
|
||||||
|
|
@ -294,7 +294,7 @@ rustc_queries! {
|
||||||
|
|
||||||
`rustc_queries` macro will generate an appropriate `impl` automatically.
|
`rustc_queries` macro will generate an appropriate `impl` automatically.
|
||||||
|
|
||||||
## External Links
|
## External links
|
||||||
|
|
||||||
Related design ideas, and tracking issues:
|
Related design ideas, and tracking issues:
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue