From 1fa751d36e3a8da6f91a1b6e70d088698f7e99b5 Mon Sep 17 00:00:00 2001 From: Noah Lev Date: Thu, 17 Feb 2022 13:48:36 -0800 Subject: [PATCH] Fix heading levels in the query chapter (#1305) This should fix the incorrect TOC rendering in #1303. --- src/query.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/query.md b/src/query.md index ff2796a2d..6e02bfc7b 100644 --- a/src/query.md +++ b/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. 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 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 -### How the compiler executes a query +## How the compiler executes 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 @@ -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 are cheaply cloneable; insert an `Rc` if necessary). -#### Providers +### Providers 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 @@ -97,7 +97,7 @@ fn provider<'tcx>( Providers take two arguments: the `tcx` and the query key. 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 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 [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? 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 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" 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. -## External Links +## External links Related design ideas, and tracking issues: