about summary refs log tree commit diff
path: root/doc
diff options
context:
space:
mode:
authorEduardo Broto <ebroto@tutanota.com>2020-10-23 22:16:59 +0200
committerEduardo Broto <ebroto@tutanota.com>2020-10-23 22:16:59 +0200
commitcdb555f4fcdb57741ffb59bd2b0e66af69ea0a85 (patch)
tree5c9c37427427a7d7b95dc090c560f006a9b92efe /doc
parentfcde7683fe7ca10c83e5bc17f0969d2284affcd2 (diff)
downloadrust-cdb555f4fcdb57741ffb59bd2b0e66af69ea0a85.tar.gz
rust-cdb555f4fcdb57741ffb59bd2b0e66af69ea0a85.zip
Merge commit 'bf1c6f9871f430e284b17aa44059e0d0395e28a6' into clippyup
Diffstat (limited to 'doc')
-rw-r--r--doc/adding_lints.md26
-rw-r--r--doc/backport.md47
-rw-r--r--doc/basics.md2
-rw-r--r--doc/common_tools_writing_lints.md12
-rw-r--r--doc/release.md2
5 files changed, 62 insertions, 27 deletions
diff --git a/doc/adding_lints.md b/doc/adding_lints.md
index 2869c3bf7d4..2572833b8de 100644
--- a/doc/adding_lints.md
+++ b/doc/adding_lints.md
@@ -104,7 +104,8 @@ every time before running `tests/ui/update-all-references.sh`.
 Running `TESTNAME=foo_functions cargo uitest` should pass then. When we commit
 our lint, we need to commit the generated `.stderr` files, too. In general, you
 should only commit files changed by `tests/ui/update-all-references.sh` for the
-specific lint you are creating/editing.
+specific lint you are creating/editing. Note that if the generated files are
+empty, they should be removed.
 
 ### Cargo lints
 
@@ -224,6 +225,17 @@ automate everything. We will have to register our lint pass manually in the
 store.register_early_pass(|| box foo_functions::FooFunctions);
 ```
 
+As one may expect, there is a corresponding `register_late_pass` method
+available as well. Without a call to one of `register_early_pass` or 
+`register_late_pass`, the lint pass in question will not be run.
+
+One reason that `cargo dev` does not automate this step is that multiple lints 
+can use the same lint pass, so registering the lint pass may already be done
+when adding a new lint. Another reason that this step is not automated is that
+the order that the passes are registered determines the order the passes 
+actually run, which in turn affects the order that any emitted lints are output
+in.
+
 [declare_clippy_lint]: https://github.com/rust-lang/rust-clippy/blob/557f6848bd5b7183f55c1e1522a326e9e1df6030/clippy_lints/src/lib.rs#L60
 [example_lint_page]: https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure
 [lint_naming]: https://rust-lang.github.io/rfcs/0344-conventions-galore.html#lints
@@ -453,12 +465,12 @@ Before submitting your PR make sure you followed all of the basic requirements:
 
 <!-- Sync this with `.github/PULL_REQUEST_TEMPLATE` -->
 
-- [ ] Followed [lint naming conventions][lint_naming]
-- [ ] Added passing UI tests (including committed `.stderr` file)
-- [ ] `cargo test` passes locally
-- [ ] Executed `cargo dev update_lints`
-- [ ] Added lint documentation
-- [ ] Run `cargo dev fmt`
+- \[ ] Followed [lint naming conventions][lint_naming]
+- \[ ] Added passing UI tests (including committed `.stderr` file)
+- \[ ] `cargo test` passes locally
+- \[ ] Executed `cargo dev update_lints`
+- \[ ] Added lint documentation
+- \[ ] Run `cargo dev fmt`
 
 ## Cheatsheet
 
diff --git a/doc/backport.md b/doc/backport.md
index 259696658ea..15f3d1f0806 100644
--- a/doc/backport.md
+++ b/doc/backport.md
@@ -5,7 +5,7 @@ Backports in Clippy are rare and should be approved by the Clippy team. For
 example, a backport is done, if a crucial ICE was fixed or a lint is broken to a
 point, that it has to be disabled, before landing on stable.
 
-Backports are done to the `beta` release of Clippy. Backports to stable Clippy
+Backports are done to the `beta` branch of Clippy. Backports to stable Clippy
 releases basically don't exist, since this would require a Rust point release,
 which is almost never justifiable for a Clippy fix.
 
@@ -18,7 +18,31 @@ Backports are done on the beta branch of the Clippy repository.
 # Assuming the current directory corresponds to the Clippy repository
 $ git checkout beta
 $ git checkout -b backport
-$ git cherry-pick <SHA>  # `<SHA>` is the commit hash of the commit, that should be backported
+$ git cherry-pick <SHA>  # `<SHA>` is the commit hash of the commit(s), that should be backported
+$ git push origin backport
+```
+
+Now you should test that the backport passes all the tests in the Rust
+repository. You can do this with:
+
+```bash
+# Assuming the current directory corresponds to the Rust repository
+$ git checkout beta
+$ git subtree pull -p src/tools/clippy https://github.com/<your-github-name>/rust-clippy backport
+$ ./x.py test src/tools/clippy
+```
+
+Should the test fail, you can fix Clippy directly in the Rust repository. This
+has to be first applied to the Clippy beta branch and then again synced to the
+Rust repository, though. The easiest way to do this is:
+
+```bash
+# In the Rust repository
+$ git diff --patch --relative=src/tools/clippy > clippy.patch
+# In the Clippy repository
+$ git apply /path/to/clippy.patch
+$ git add -u
+$ git commit -m "Fix rustup fallout"
 $ git push origin backport
 ```
 
@@ -29,22 +53,19 @@ After this, you can open a PR to the `beta` branch of the Clippy repository.
 
 This step must be done, **after** the PR of the previous step was merged.
 
-After the backport landed in the Clippy repository, also the Clippy version on
-the Rust `beta` branch has to be updated.
+After the backport landed in the Clippy repository, the branch has to be synced
+back to the beta branch of the Rust repository.
 
 ```bash
 # Assuming the current directory corresponds to the Rust repository
 $ git checkout beta
 $ git checkout -b clippy_backport
-$ pushd src/tools/clippy
-$ git fetch
-$ git checkout beta
-$ popd
-$ git add src/tools/clippy
-ยง git commit -m "Update Clippy"
+$ git subtree pull -p src/tools/clippy https://github.com/rust-lang/rust-clippy beta
 $ git push origin clippy_backport
 ```
 
-After this you can open a PR to the `beta` branch of the Rust repository. In
-this PR you should tag the Clippy team member, that agreed to the backport or
-the `@rust-lang/clippy` team. Make sure to add `[beta]` to the title of the PR.
+Make sure to test the backport in the Rust repository before opening a PR. This
+is done with `./x.py test src/tools/clippy`. If that passes all tests, open a PR
+to the `beta` branch of the Rust repository. In this PR you should tag the
+Clippy team member, that agreed to the backport or the `@rust-lang/clippy` team.
+Make sure to add `[beta]` to the title of the PR.
diff --git a/doc/basics.md b/doc/basics.md
index 38959e2331b..f25edb793e2 100644
--- a/doc/basics.md
+++ b/doc/basics.md
@@ -46,7 +46,7 @@ this toolchain, you can just use the `setup-toolchain.sh` script or use
 `rustup-toolchain-install-master`:
 
 ```bash
-sh setup-toolchain.sh
+bash setup-toolchain.sh
 # OR
 cargo install rustup-toolchain-install-master
 # For better IDE integration also add `-c rustfmt -c rust-src` (optional)
diff --git a/doc/common_tools_writing_lints.md b/doc/common_tools_writing_lints.md
index 53c3d084dbc..d56079a4ab7 100644
--- a/doc/common_tools_writing_lints.md
+++ b/doc/common_tools_writing_lints.md
@@ -45,11 +45,13 @@ Similarly in [`TypeckResults`][TypeckResults] methods, you have the [`pat_ty()`]
 to retrieve a type from a pattern.
 
 Two noticeable items here:
-- `cx` is the lint context [`LateContext`][LateContext].
-  The two most useful data structures in this context are `tcx` and `tables`,
-  allowing us to jump to type definitions and other compilation stages such as HIR.
-- `tables` is [`TypeckResults`][TypeckResults] and is created by type checking step,
-  it includes useful information such as types of expressions, ways to resolve methods and so on.
+- `cx` is the lint context [`LateContext`][LateContext]. The two most useful
+  data structures in this context are `tcx` and the `TypeckResults` returned by
+  `LateContext::typeck_results`, allowing us to jump to type definitions and
+  other compilation stages such as HIR.
+- `typeck_results`'s return value is [`TypeckResults`][TypeckResults] and is
+  created by type checking step, it includes useful information such as types
+  of expressions, ways to resolve methods and so on.
 
 # Checking if an expr is calling a specific method
 
diff --git a/doc/release.md b/doc/release.md
index 391952ea6b1..eaa6a9af277 100644
--- a/doc/release.md
+++ b/doc/release.md
@@ -68,7 +68,7 @@ be updated.
 ```bash
 # Assuming the current directory corresponds to the Clippy repository
 $ git checkout beta
-$ git rebase $BETA_SHA
+$ git reset --hard $BETA_SHA
 $ git push upstream beta
 ```